Search in sources :

Example 1 with Port

use of org.netxms.client.topology.Port in project netxms by netxms.

the class VlanLabelProvider method buildPortList.

/**
 * Build list of ports in VLAN
 *
 * @param vlan VLAN object
 * @return port list
 */
private String buildPortList(VlanInfo vlan) {
    List<Port> ports = new ArrayList<Port>(Arrays.asList(vlan.getPorts()));
    if (ports.size() == 0)
        // $NON-NLS-1$
        return "";
    StringBuilder sb = new StringBuilder();
    // Add non-physical ports first
    List<Port> physicalPorts = new ArrayList<Port>();
    Iterator<Port> it = ports.iterator();
    while (it.hasNext()) {
        Port p = it.next();
        Interface iface = (Interface) session.findObjectById(p.getObjectId(), Interface.class);
        if (iface != null) {
            if (!iface.isPhysicalPort()) {
                Interface parent = iface.getParentInterface();
                if ((parent != null) && parent.isPhysicalPort()) {
                    physicalPorts.add(new Port(parent.getObjectId(), parent.getIfIndex(), parent.getSlot(), parent.getPort()));
                } else {
                    if (sb.length() > 0)
                        sb.append(',');
                    sb.append(iface.getObjectName());
                    it.remove();
                }
            } else {
                physicalPorts.add(p);
            }
        } else {
            physicalPorts.add(p);
        }
    }
    if (physicalPorts.size() == 0)
        return sb.toString();
    Collections.sort(physicalPorts, new Comparator<Port>() {

        @Override
        public int compare(Port p1, Port p2) {
            return (p1.getSlot() == p2.getSlot()) ? p1.getPort() - p2.getPort() : p1.getSlot() - p2.getSlot();
        }
    });
    int slot = physicalPorts.get(0).getSlot();
    int lastPort = ports.get(0).getPort();
    int firstPort = lastPort;
    if (sb.length() > 0)
        sb.append(',');
    sb.append(slot);
    sb.append('/');
    sb.append(firstPort);
    int i;
    for (i = 1; i < physicalPorts.size(); i++) {
        if ((physicalPorts.get(i).getSlot() == slot) && (physicalPorts.get(i).getPort() == lastPort + 1)) {
            lastPort++;
            continue;
        }
        // If previous series was not single port, add ending port
        if (physicalPorts.get(i - 1).getPort() != firstPort) {
            if (lastPort - firstPort > 1)
                sb.append('-');
            else
                sb.append(',');
            sb.append(slot);
            sb.append('/');
            sb.append(lastPort);
        }
        slot = physicalPorts.get(i).getSlot();
        lastPort = physicalPorts.get(i).getPort();
        firstPort = lastPort;
        sb.append(',');
        sb.append(slot);
        sb.append('/');
        sb.append(lastPort);
    }
    // If previous series was not single port, add ending port
    if (physicalPorts.get(i - 1).getPort() != firstPort) {
        if (lastPort - firstPort > 1)
            sb.append('-');
        else
            sb.append(',');
        sb.append(slot);
        sb.append('/');
        sb.append(lastPort);
    }
    return sb.toString();
}
Also used : Port(org.netxms.client.topology.Port) ArrayList(java.util.ArrayList) Interface(org.netxms.client.objects.Interface)

Example 2 with Port

use of org.netxms.client.topology.Port in project netxms by netxms.

the class DeviceView method setHighlight.

/**
 * Set port highlight
 *
 * @param ports
 */
public void setHighlight(Port[] ports) {
    clearHighlight(false);
    for (Port p : ports) {
        // for physical port flag
        if ((p.getSlot() == 0) && (p.getPort() == 0)) {
            Interface iface = session.findObjectById(p.getObjectId(), Interface.class);
            if (iface == null)
                continue;
            if (!iface.isPhysicalPort()) {
                Interface parent = iface.getParentInterface();
                if ((parent == null) || !parent.isPhysicalPort())
                    continue;
                p = new Port(parent.getObjectId(), parent.getIfIndex(), parent.getSlot(), parent.getPort());
            }
        }
        SlotView sv = slots.get(p.getSlot());
        if (sv != null) {
            sv.addHighlight(p);
        }
    }
    for (SlotView sv : slots.values()) sv.redraw();
}
Also used : Port(org.netxms.client.topology.Port) Interface(org.netxms.client.objects.Interface)

Example 3 with Port

use of org.netxms.client.topology.Port in project netxms by netxms.

the class VlanMap method collectVlanInfo.

/**
 * Recursively collect VLAN information starting from given node
 *
 * @param page map page
 * @param root root node
 * @throws Exception
 * @throws NXCException
 */
private long collectVlanInfo(NetworkMapPage page, Node root) throws Exception {
    if (page.findObjectElement(root.getObjectId()) != null)
        return -1;
    long rootElementId = mapPage.createElementId();
    page.addElement(new NetworkMapObject(rootElementId, root.getObjectId()));
    List<VlanInfo> vlans = session.getVlans(root.getObjectId());
    for (VlanInfo vlan : vlans) {
        if (vlan.getVlanId() == vlanId) {
            Port[] ports = vlan.getPorts();
            for (Port port : ports) {
                processVlanPort(page, root, port, rootElementId);
            }
            break;
        }
    }
    return rootElementId;
}
Also used : Port(org.netxms.client.topology.Port) NetworkMapObject(org.netxms.client.maps.elements.NetworkMapObject) VlanInfo(org.netxms.client.topology.VlanInfo)

Aggregations

Port (org.netxms.client.topology.Port)3 Interface (org.netxms.client.objects.Interface)2 ArrayList (java.util.ArrayList)1 NetworkMapObject (org.netxms.client.maps.elements.NetworkMapObject)1 VlanInfo (org.netxms.client.topology.VlanInfo)1