aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java')
-rw-r--r--framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java251
1 files changed, 0 insertions, 251 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java
deleted file mode 100644
index 4aed9038..00000000
--- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.ui.topo;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.net.Device;
-import org.onosproject.net.Element;
-import org.onosproject.net.Host;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.host.HostService;
-import org.onosproject.ui.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.HostId.hostId;
-
-/**
- * Encapsulates a selection of devices and/or hosts from the topology view.
- */
-public class NodeSelection {
-
- private static final Logger log =
- LoggerFactory.getLogger(NodeSelection.class);
-
- private static final String IDS = "ids";
- private static final String HOVER = "hover";
-
- private final DeviceService deviceService;
- private final HostService hostService;
-
- private final Set<String> ids;
- private final String hover;
-
- private final Set<Device> devices = new HashSet<>();
- private final Set<Host> hosts = new HashSet<>();
- private Element hovered;
-
- /**
- * Creates a node selection entity, from the given payload, using the
- * supplied device and host services. Note that if a device or host was
- * hovered over by the mouse, it is available via {@link #hovered()}.
- *
- * @param payload message payload
- * @param deviceService device service
- * @param hostService host service
- */
- public NodeSelection(ObjectNode payload,
- DeviceService deviceService,
- HostService hostService) {
- this.deviceService = deviceService;
- this.hostService = hostService;
-
- ids = extractIds(payload);
- hover = extractHover(payload);
-
- // start by extracting the hovered element if any
- if (isNullOrEmpty(hover)) {
- hovered = null;
- } else {
- setHoveredElement();
- }
-
- // now go find the devices and hosts that are in the selection list
- Set<String> unmatched = findDevices(ids);
- unmatched = findHosts(unmatched);
- if (unmatched.size() > 0) {
- log.debug("Skipping unmatched IDs {}", unmatched);
- }
-
- }
-
- /**
- * Returns a view of the selected devices (hover not included).
- *
- * @return selected devices
- */
- public Set<Device> devices() {
- return Collections.unmodifiableSet(devices);
- }
-
- /**
- * Returns a view of the selected devices, including the hovered device
- * if there was one.
- *
- * @return selected (plus hovered) devices
- */
- public Set<Device> devicesWithHover() {
- Set<Device> withHover;
- if (hovered != null && hovered instanceof Device) {
- withHover = new HashSet<>(devices);
- withHover.add((Device) hovered);
- } else {
- withHover = devices;
- }
- return Collections.unmodifiableSet(withHover);
- }
-
- /**
- * Returns a view of the selected hosts (hover not included).
- *
- * @return selected hosts
- */
- public Set<Host> hosts() {
- return Collections.unmodifiableSet(hosts);
- }
-
- /**
- * Returns a view of the selected hosts, including the hovered host
- * if thee was one.
- *
- * @return selected (plus hovered) hosts
- */
- public Set<Host> hostsWithHover() {
- Set<Host> withHover;
- if (hovered != null && hovered instanceof Host) {
- withHover = new HashSet<>(hosts);
- withHover.add((Host) hovered);
- } else {
- withHover = hosts;
- }
- return Collections.unmodifiableSet(withHover);
- }
-
- /**
- * Returns the element (host or device) over which the mouse was hovering,
- * or null.
- *
- * @return element hovered over
- */
- public Element hovered() {
- return hovered;
- }
-
- /**
- * Returns true if nothing is selected.
- *
- * @return true if nothing selected
- */
- public boolean none() {
- return devices().size() == 0 && hosts().size() == 0;
- }
-
- @Override
- public String toString() {
- return "NodeSelection{" +
- "ids=" + ids +
- ", hover='" + hover + '\'' +
- ", #devices=" + devices.size() +
- ", #hosts=" + hosts.size() +
- '}';
- }
-
- // == helper methods
-
- private Set<String> extractIds(ObjectNode payload) {
- ArrayNode array = (ArrayNode) payload.path(IDS);
- if (array == null || array.size() == 0) {
- return Collections.emptySet();
- }
-
- Set<String> ids = new HashSet<>();
- for (JsonNode node : array) {
- ids.add(node.asText());
- }
- return ids;
- }
-
- private String extractHover(ObjectNode payload) {
- return JsonUtils.string(payload, HOVER);
- }
-
- private void setHoveredElement() {
- Set<String> unmatched;
- unmatched = new HashSet<>();
- unmatched.add(hover);
- unmatched = findDevices(unmatched);
- if (devices.size() == 1) {
- hovered = devices.iterator().next();
- devices.clear();
- } else {
- unmatched = findHosts(unmatched);
- if (hosts.size() == 1) {
- hovered = hosts.iterator().next();
- hosts.clear();
- } else {
- hovered = null;
- log.debug("Skipping unmatched HOVER {}", unmatched);
- }
- }
- }
-
- private Set<String> findDevices(Set<String> ids) {
- Set<String> unmatched = new HashSet<>();
- Device device;
-
- for (String id : ids) {
- try {
- device = deviceService.getDevice(deviceId(id));
- if (device != null) {
- devices.add(device);
- } else {
- unmatched.add(id);
- }
- } catch (Exception e) {
- unmatched.add(id);
- }
- }
- return unmatched;
- }
-
- private Set<String> findHosts(Set<String> ids) {
- Set<String> unmatched = new HashSet<>();
- Host host;
-
- for (String id : ids) {
- try {
- host = hostService.getHost(hostId(id));
- if (host != null) {
- hosts.add(host);
- } else {
- unmatched.add(id);
- }
- } catch (Exception e) {
- unmatched.add(id);
- }
- }
- return unmatched;
- }
-}