@Override public void itemStateChanged(ItemEvent e) { final Node originNode = (Node) ((StringLabeller) originNodeSelector.getSelectedItem()).getObject(); final Node destinationNode = (Node) ((StringLabeller) destinationNodeSelector.getSelectedItem()).getObject(); callback.putTransientColorInElementTopologyCanvas(Arrays.asList(originNode), Color.GREEN); callback.putTransientColorInElementTopologyCanvas(Arrays.asList(destinationNode), Color.CYAN); } };
/** * Factory method. * * @param object Object to be wrapped * @param label New label for the wrapped object * @return A new {@code StringLabeller} object * @since 0.2.2 */ public static <T> StringLabeller of(T object, String label) { return new StringLabeller<T>(object, label, true); }
/** * Allows setting the object. * * @param object Object to be wrapped * @since 0.3.1 */ public void setObject(T object) { checkIsModifiable(); this.object = object; // if (object instanceof NetworkElement) // throw new RuntimeException("StringLabeller should not work with NetworkElements"); }
final JComboBox<StringLabeller<Node>> destinationNodeSelector = new WiderJComboBox(); final JComboBox<StringLabeller<RoutingType>> routingTypeSelector = new WiderJComboBox(); routingTypeSelector.addItem(StringLabeller.of(RoutingType.SOURCE_ROUTING, "Source routing")); routingTypeSelector.addItem(StringLabeller.of(RoutingType.HOP_BY_HOP_ROUTING, "Hop-by-hop routing")); routingTypeSelector.setSelectedIndex(0); originNodeSelector.addItem(StringLabeller.of(node, nodeName)); destinationNodeSelector.addItem(StringLabeller.of(node, nodeName)); if (result != JOptionPane.OK_OPTION) return; Node originNode = (Node) ((StringLabeller) originNodeSelector.getSelectedItem()).getObject(); Node destinationNode = (Node) ((StringLabeller) destinationNodeSelector.getSelectedItem()).getObject(); if (networkElementType == NetworkElementType.LINK) final RoutingType rt = (RoutingType) ((StringLabeller) routingTypeSelector.getSelectedItem()).getObject(); final Demand d = netPlan.addDemand(originNode, destinationNode, 0, rt , null , layer); callback.updateVisualizationAfterChanges();
String layerLabel = "Layer " + layerId; if (!layerName.isEmpty()) layerLabel += " (" + layerName + ")"; layerSelector.addItem(StringLabeller.of(layerId, layerLabel)); long layerId = (long) ((StringLabeller) layerSelector.getSelectedItem()).getObject(); for (Demand d : getSelectedElements()) if (!d.isCoupled()) String layerLabel = "Layer " + layerId; if (!layerName.isEmpty()) layerLabel += " (" + layerName + ")"; layerSelector.addItem(StringLabeller.of(layerId, layerLabel)); long selectedLayerId = (Long) ((StringLabeller) layerSelector.getSelectedItem()).getObject(); NetworkLayer selectedLayer = np.getNetworkLayerFromId(selectedLayerId); linkSelector.addItem(StringLabeller.unmodifiableOf(link.getId(), "e" + link.getIndex() + " [n" + link.getOriginNode().getIndex() + " (" + originNodeName + ") -> n" + link.getDestinationNode().getIndex() + " (" + destinationNodeName + ")]")); Long linkId = (Long) ((StringLabeller) linkSelector.getSelectedItem()).getObject(); if (linkId == null) throw new NullPointerException(); String layerLabel = "Layer " + layerId; if (!layerName.isEmpty()) layerLabel += " (" + layerName + ")"; layerSelector.addItem(StringLabeller.of(layerId, layerLabel)); long layerId = (long) ((StringLabeller) layerSelector.getSelectedItem()).getObject(); NetworkLayer layer = np.getNetworkLayerFromId(layerId); for (Demand demand : getSelectedElements())
String packageName = aux1.getFirst(); if (!packageName.isEmpty()) implementationLabel += " (" + packageName + ")"; algorithmSelector.addItem(StringLabeller.unmodifiableOf(implementation, implementationLabel));
/** * Returns a {@code String} representation of the object. It is an alias of * the {@link #getLabel() getLabel()} method. * * @return {@code String} representation of the object * @since 0.2.2 */ @Override public String toString() { return getLabel(); }
@Override public void actionPerformed(ActionEvent e) { try { JTable table = (JTable) e.getSource(); int modelRow = Integer.parseInt(e.getActionCommand()); final long backupRouteId = (Long) table.getModel().getValueAt(modelRow, 0); final Route backupRoute = netPlan.getRouteFromId(backupRouteId); netPlan.getRouteFromId(routeId).removeBackupRoute(backupRoute); callback.getPickManager().reset(); callback.updateVisualizationAfterChanges(); callback.addNetPlanChange(); String segmentLabel = "Backup route id " + backupRouteId + ": path = " + getSequenceLinkResourceIndexes(backupRoute) + ", seq. nodes = " + getSequenceNodeIndexesWithResourceInfo(backupRoute) + ", occupied capacity = " + getSequenceOccupiedCapacities(backupRoute); backupRouteSelector.addItem(StringLabeller.of(backupRouteId, segmentLabel)); ((DefaultTableModel) table.getModel()).removeRow(modelRow); table.setEnabled(true); if (table.getModel().getRowCount() == 0) { ((DefaultTableModel) table.getModel()).addRow(new Object[6]); table.setEnabled(false); } } catch (Throwable e1) { } } };
JSelectionTablePanel selectionPanel = new JSelectionTablePanel(StringUtils.arrayOf("Node","Index","Id"), "Nodes"); LinkedList<Object[]> selectionPanelElements = new LinkedList<>(); netPlan.getNodes().stream().forEach(n -> originNodeComboBox.addItem(StringLabeller.of(n.getId(),n.toString()))); netPlan.getNodes().stream().filter(n -> n != netPlan.getNode(0)).forEach(n -> selectionPanelElements.add(new Object[]{n,n.getIndex(),n.getId()})); selectionPanel.setCandidateElements(selectionPanelElements); Long newSelectedNodeId = (Long) newItem.getObject(); Node newSelectedNode = netPlan.getNodeFromId(newSelectedNodeId); selectionPanelElements.clear(); throw new Net2PlanException("A multicast demand must have at least two egress nodes"); Long ingressNode = (Long)((StringLabeller)originNodeComboBox.getSelectedItem()).getObject(); LinkedList<Object[]> egressNodes_selection = selectionPanel.getSelectedElements(); Set<Node> egressNodes = new HashSet<Node>();
String layerLabel = "Layer " + layerId; if (!layerName.isEmpty()) layerLabel += " (" + layerName + ")"; layerSelector.addItem(StringLabeller.of(layerId, layerLabel)); final long layerId = (long) ((StringLabeller) layerSelector.getSelectedItem()).getObject(); for (Link link : getSelectedElements ()) if (!link.isCoupled()) String layerLabel = "Layer " + layerId; if (!layerName.isEmpty()) layerLabel += " (" + layerName + ")"; layerSelector.addItem(StringLabeller.of(layerId, layerLabel)); long selectedLayerId = (Long) ((StringLabeller) layerSelector.getSelectedItem()).getObject(); String egressNodeName = demand.getEgressNode().getName(); demandSelector.addItem(StringLabeller.unmodifiableOf(demand.getId(), "d" + demand.getId() + " [n" + ingressNodeId + " (" + ingressNodeName + ") -> n" + egressNodeId + " (" + egressNodeName + ")]")); final Long demandId = (Long) ((StringLabeller) demandSelector.getSelectedItem()).getObject(); final Demand demand = np.getDemandFromId(demandId); final Link link = getSelectedElements().first();
JSelectionTablePanel selectionPanel = new JSelectionTablePanel(StringUtils.arrayOf("Link","Index","Id"), "Links"); LinkedList<Object[]> selectionPanelElements = new LinkedList<>(); netPlan.getMulticastDemands(layer).stream().forEach(md -> multicastDemandComboBox.addItem(StringLabeller.of(md.getId(),md.toString()))); netPlan.getLinks(layer).stream().forEach(l -> selectionPanelElements.add(new Object[]{l,l.getIndex(),l.getId()})); selectionPanel.setCandidateElements(selectionPanelElements); Long newSelectedMulticasDemandId = (Long) newItem.getObject(); MulticastDemand newSelectedMulticastDemand = netPlan.getMulticastDemandFromId(newSelectedMulticasDemandId); selectionPanelElements.clear(); if (result != JOptionPane.OK_OPTION) return; Long multicastDemandId = (Long)((StringLabeller)(multicastDemandComboBox.getSelectedItem())).getObject(); MulticastDemand demand = netPlan.getMulticastDemandFromId(multicastDemandId); Set<Link> links = new HashSet<Link>();
/** * Returns the information required to call a runnable code. * * @return Runnable information * @since 0.2.0 */ public Triple<File, String, Class> getRunnable() { String filename = txt_file.getText(); if (filename.isEmpty() || algorithmSelector.getSelectedIndex() == -1) { throw new Net2PlanException(label + " must be selected"); } String algorithm = (String) ((StringLabeller) algorithmSelector.getSelectedItem()).getObject(); return Triple.of(new File(filename), algorithm, implementations.get(algorithm)); }
/** * Allows setting the label. * * @param label New label for the wrapped object * @since 0.3.1 */ public void setLabel(String label) { checkIsModifiable(); this.label = label; }
/** * Factory method for an unmodifiable object. * * @param object Object to be wrapped * @param label New label for the wrapped object * @return A new {@code StringLabeller} object * @since 0.3.1 */ public static <T> StringLabeller unmodifiableOf(T object, String label) { return new StringLabeller<T>(object, label, false); }
@Override public void itemStateChanged(ItemEvent e) { linkSelector.removeAllItems(); Object selectedItem_Node = nodeSelector.getSelectedItem(); if(selectedItem_Node == null) return; final long nodeId = (long) ((StringLabeller) selectedItem_Node).getObject(); final Node node = netPlan.getNodeFromId(nodeId); for (Link link : node.getOutgoingLinks(layer)) { String originNodeLabel = "Node " + link.getOriginNode().getId(); if (!link.getOriginNode().getName().isEmpty()) originNodeLabel += " (" + link.getOriginNode().getName() + ")"; String destinationNodeLabel = "Node " + link.getDestinationNode().getId(); if (!link.getDestinationNode().getName().isEmpty()) destinationNodeLabel += " (" + link.getDestinationNode().getName() + ")"; String linkLabel = "e" + link.getId() + ": " + originNodeLabel + " -> " + destinationNodeLabel; linkSelector.addItem(StringLabeller.of(link.getId(), linkLabel)); } if(linkSelector.getItemCount() == 0) linkSelector.setSelectedIndex(-1); else linkSelector.setSelectedIndex(0); } };
@Override public void actionPerformed(ActionEvent e) { if (algorithmSelector.getItemCount() == 0 || algorithmSelector.getSelectedIndex() == -1) return; try { File fileName = new File(txt_file.getText()); String className = (String) ((StringLabeller) algorithmSelector.getSelectedItem()).getObject(); Class<? extends IExternal> _class = implementations.get(className); IExternal instance = ClassLoaderUtils.getInstance(fileName, className, _class , null); String aux_description = instance.getDescription() == null ? "No description" : instance.getDescription(); List<Triple<String, String, String>> aux_parameters = instance.getParameters() == null ? new LinkedList<>() : instance.getParameters(); ((Closeable) instance.getClass().getClassLoader()).close(); txt_description.setText(aux_description); if (!txt_description.getText().isEmpty()) txt_description.setCaretPosition(0); parametersPanel.setParameters(aux_parameters); } catch (Throwable ex) { ex.printStackTrace(); ErrorHandling.showErrorDialog("Error selecting " + label.toLowerCase(getLocale())); } } });
if (!nodeName.isEmpty()) nodeLabel += " (" + nodeName + ")"; nodeSelector.addItem(StringLabeller.of(node.getId(), nodeLabel)); egressNodeLabel += " (" + demand.getEgressNode().getName() + ")"; String demandLabel = "d" + demand.getId() + ": " + ingressNodeLabel + " -> " + egressNodeLabel; demandSelector.addItem(StringLabeller.of(demand.getId(), demandLabel)); if (result != JOptionPane.OK_OPTION) return; long demandId = (long) ((StringLabeller) demandSelector.getSelectedItem()).getObject(); long linkId = (long) ((StringLabeller) linkSelector.getSelectedItem()).getObject();
@Override public void itemStateChanged(ItemEvent e) { Object selectedItem_Link = linkSelector.getSelectedItem(); Object selectedItem_Demand = demandSelector.getSelectedItem(); if(selectedItem_Link == null || selectedItem_Demand == null) return; final long demandId = (long) ((StringLabeller) selectedItem_Demand).getObject(); Demand demand = netPlan.getDemandFromId(demandId); final long linkId = (long) ((StringLabeller) selectedItem_Link).getObject(); Link link = netPlan.getLinkFromId(linkId); double splittingRatio; if (netPlan.getForwardingRuleSplittingFactor(demand, link) > 0) { splittingRatio = netPlan.getForwardingRuleSplittingFactor(demand, link); } else { Node node = link.getOriginNode(); Map<Pair<Demand, Link>, Double> forwardingRules_thisNode = node.getForwardingRules(demand); double totalSplittingRatio = 0; for (Double value : forwardingRules_thisNode.values()) totalSplittingRatio += value; splittingRatio = Math.max(0, 1 - totalSplittingRatio); } txt_splittingRatio.setText(Double.toString(splittingRatio)); } };
long demandId = (Long) item.getObject(); Demand demand = netPlan.getDemandFromId(demandId); firstLink.addItem(StringLabeller.of(link.getId(), String.format("e%d: n%d (%s) => n%d (%s)", link.getId(), ingressNode.getId(), ingressNodeName, destinationNodeId, destinationNodeName))); seqLinks.add(netPlan.getLinkFromId((Long) ((StringLabeller) link.getSelectedItem()).getObject())); callback.putTransientColorInElementTopologyCanvas(seqLinks, Color.BLUE); }); long linkId = (Long) ((StringLabeller) seqLinks_cmb.get(seqLinks_cmb.size() - 1).getSelectedItem()).getObject(); Link link = netPlan.getLinkFromId(linkId); long destinationNodeId = link.getDestinationNode().getId(); newLink.addItem(StringLabeller.of(nextLink.getId(), String.format("e%d: n%d (%s) => n%d (%s)", nextLink.getId(), destinationNodeId, destinationNodeName, nextDestinationNodeId, nextDestinationNodeName))); seqLinks.add(netPlan.getLinkFromId((Long) ((StringLabeller) link1.getSelectedItem()).getObject())); callback.putTransientColorInElementTopologyCanvas(seqLinks, Color.BLUE); }); seqLinks.add(netPlan.getLinkFromId((Long) ((StringLabeller) auxLink.getSelectedItem()).getObject())); seqLinks.add(netPlan.getLinkFromId((Long) ((StringLabeller) link.getSelectedItem()).getObject())); callback.putTransientColorInElementTopologyCanvas(seqLinks, Color.BLUE); }); seqLinks.add(netPlan.getLinkFromId((Long) ((StringLabeller) link.getSelectedItem()).getObject())); callback.putTransientColorInElementTopologyCanvas(seqLinks, Color.BLUE); });
String nodeLabel = "Node " + n.getIndex(); if (!nodeName.isEmpty()) nodeLabel += " (" + nodeName + ")"; hostNodeSelector.addItem(StringLabeller.of(n.getId(), nodeLabel)); hostNode = np.getNodeFromId((Long) ((StringLabeller) hostNodeSelector.getSelectedItem()).getObject()); capacityUnits = capUnitsField.getText(); resType = typeSelector.getText(); String nodeLabel = "Node " + n.getIndex(); if (!nodeName.isEmpty()) nodeLabel += " (" + nodeName + ")"; hostNodeSelector.addItem(StringLabeller.of(n.getId(), nodeLabel)); if (result != JOptionPane.OK_OPTION) return; hostNode = callback.getDesign().getNodeFromId((Long) ((StringLabeller)(hostNodeSelector.getSelectedItem())).getObject()); resource.attachToNode(hostNode);