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();
}
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();
}
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;
}
Aggregations