@Override public void printTopology(PrintStream out, ShortIdDictionary dict) { out.println("-------------------------------------------------------------"); out.println("Topology of " + BusBreakerVoltageLevel.this.id); Function<ConfiguredBus, String> vertexToString = bus -> { StringBuilder builder = new StringBuilder(); builder.append(bus.getId()) .append(" ["); for (Iterator<TerminalExt> it = bus.getConnectedTerminals().iterator(); it.hasNext(); ) { TerminalExt terminal = it.next(); builder.append(dict != null ? dict.getShortId(terminal.getConnectable().getId()) : terminal.getConnectable().getId()); if (it.hasNext()) { builder.append(", "); } } builder.append("]"); return builder.toString(); }; Function<SwitchImpl, String> edgeToString = aSwitch -> { StringBuilder builder = new StringBuilder(); builder.append("id=").append(aSwitch.getId()) .append(" status=").append(aSwitch.isOpen() ? "open" : "closed"); return builder.toString(); }; graph.print(out, vertexToString, edgeToString); }
for (TerminalExt terminal : bus.getTerminals()) { AbstractConnectable connectable = terminal.getConnectable(); label = connectable.getType().toString() + "\\n" + connectable.getId(); writer.append(" ").append(connectable.getId()) .append(" [label=\"").append(label).append("\"]\n"); AbstractConnectable connectable = terminal.getConnectable(); writer.append(" ").append(bus.getId()) .append(" -- ").append(connectable.getId()) .append(" [").append("style=\"").append(terminal.isConnected() ? "solid" : "dotted").append("\"") .append("]\n");
private void exportBuses(Graph g, Multimap<String, Integer> busToNodes, Map<Integer, Node> intToNode) { String[] colors = Colors.generateColorScale(busToNodes.asMap().keySet().size()); int i = 0; for (String key : busToNodes.asMap().keySet()) { Graph newBus = new Graph().id("\"" + key + "\""); newBus.attr(LABEL_ATTRIBUTE, key); for (int nodeInt : busToNodes.get(key)) { Node node = intToNode.get(nodeInt); TerminalExt terminal = graph.getVertexObject(nodeInt); if (terminal != null) { AbstractConnectable connectable = terminal.getConnectable(); String label = nodeInt + "\\n" + connectable.getType().toString() + "\\n" + connectable.getId(); node.attr(LABEL_ATTRIBUTE, label); } node.attr("style", "filled").attr("color", colors[i]); newBus.node(node); } g.subGraph(newBus); i++; } }
public void exportTopology(OutputStream os) { Graph g = new Graph().id("\"" + NodeBreakerVoltageLevel.this.id + "\""); Map<Integer, Node> intToNode = new HashMap<>(); Multimap<String, Integer> busToNodes = ArrayListMultimap.create(); for (int n = 0; n < graph.getVertexCount(); n++) { Node node = new Node().id(Integer.toString(n)); intToNode.put(n, node); Bus bus = getCalculatedBusBreakerTopology().getBus(n); if (bus != null) { busToNodes.put(bus.getId(), n); } else { TerminalExt terminal = graph.getVertexObject(n); if (terminal != null) { AbstractConnectable connectable = terminal.getConnectable(); String label = n + "\\n" + connectable.getType().toString() + "\\n" + connectable.getId(); node.attr(LABEL_ATTRIBUTE, label); g.node(node); } } } exportBuses(g, busToNodes, intToNode); exportEdges(g, intToNode); g.writeTo(os); }
@Override public void attach(TerminalExt terminal, boolean test) { checkTerminal(terminal); if (test) { return; } int node = ((NodeTerminal) terminal).getNode(); if (graph.getVertexObject(node) != null) { throw new ValidationException(terminal.getConnectable(), "an equipment (" + graph.getVertexObject(node).getConnectable().getId() + ") is already connected to node " + node + " of voltage level " + NodeBreakerVoltageLevel.this.id); } // create the link terminal <-> voltage level terminal.setVoltageLevel(NodeBreakerVoltageLevel.this); // create the link terminal <-> graph vertex graph.setVertexObject(node, (NodeTerminal) terminal); }