@@ -39,7 +39,6 @@ public class SvgWriter {
3939 private static final String PATH_ELEMENT_NAME = "path" ;
4040 private static final String CIRCLE_ELEMENT_NAME = "circle" ;
4141 private static final String TEXT_ELEMENT_NAME = "text" ;
42- private static final String TSPAN_ELEMENT_NAME = "tspan" ;
4342 private static final String FOREIGN_OBJECT_ELEMENT_NAME = "foreignObject" ;
4443 private static final String DIV_ELEMENT_NAME = "div" ;
4544 private static final String TABLE_ELEMENT_NAME = "table" ;
@@ -58,7 +57,6 @@ public class SvgWriter {
5857 private static final String PATH_D_ATTRIBUTE = "d" ;
5958 private static final String X_ATTRIBUTE = "x" ;
6059 private static final String Y_ATTRIBUTE = "y" ;
61- private static final String DY_ATTRIBUTE = "dy" ;
6260 private static final String POINTS_ATTRIBUTE = "points" ;
6361 private static final String HREF_ATTRIBUTE = "href" ;
6462
@@ -158,9 +156,7 @@ private void drawHighlightBranchEdges(Graph graph, XMLStreamWriter writer) throw
158156 writer .writeEndElement ();
159157 }
160158
161- private void drawEdgeLabel (XMLStreamWriter writer , BranchEdge edge ) throws XMLStreamException {
162-
163- String edgeLabel = labelProvider .getLabel (edge );
159+ private void drawEdgeLabel (XMLStreamWriter writer , BranchEdge edge , String edgeLabel ) throws XMLStreamException {
164160
165161 if (edgeLabel == null || edgeLabel .isEmpty ()) {
166162 return ;
@@ -204,11 +200,11 @@ private void drawEdgeCenter(XMLStreamWriter writer, BranchEdge edge) throws XMLS
204200 if (BranchEdge .DANGLING_LINE_EDGE .equals (edge .getType ())) {
205201 return ;
206202 }
207- if (!BranchEdge .LINE_EDGE .equals (edge .getType ()) || svgParameters .isEdgeNameDisplayed ()) {
203+ String edgeLabel = labelProvider .getLabel (edge );
204+ if (!BranchEdge .LINE_EDGE .equals (edge .getType ()) || !StringUtils .isEmpty (edgeLabel )) {
208205 writer .writeStartElement (GROUP_ELEMENT_NAME );
209206 switch (edge .getType ()) {
210- case BranchEdge .PST_EDGE :
211- case BranchEdge .TWO_WT_EDGE :
207+ case BranchEdge .PST_EDGE , BranchEdge .TWO_WT_EDGE :
212208 draw2Wt (writer , edge );
213209 break ;
214210 case BranchEdge .HVDC_LINE_EDGE :
@@ -217,9 +213,7 @@ private void drawEdgeCenter(XMLStreamWriter writer, BranchEdge edge) throws XMLS
217213 default :
218214 break ;
219215 }
220- if (svgParameters .isEdgeNameDisplayed ()) {
221- drawEdgeLabel (writer , edge );
222- }
216+ drawEdgeLabel (writer , edge , edgeLabel );
223217 writer .writeEndElement ();
224218 }
225219 }
@@ -636,26 +630,16 @@ private void drawHighlightedNode(XMLStreamWriter writer, VoltageLevelNode vlNode
636630 }
637631
638632 private void drawTextNodes (Graph graph , XMLStreamWriter writer ) throws XMLStreamException {
639- List <Pair <VoltageLevelNode , TextNode >> simpleTextNodes = new ArrayList <>();
640- List <Pair <VoltageLevelNode , TextNode >> detailedTextNodes = new ArrayList <>();
641- graph .getVoltageLevelTextPairs ().stream ()
633+ List <Pair <VoltageLevelNode , TextNode >> textNodes = graph .getVoltageLevelTextPairs ().stream ()
642634 .filter (nodePair -> nodePair .getSecond () != null )
643- .forEach (nodePair -> {
644- if (isDetailedTextNode (labelProvider .getVoltageLevelDescription (nodePair .getFirst ()))) {
645- detailedTextNodes .add (nodePair );
646- } else {
647- simpleTextNodes .add (nodePair );
648- }
649- });
650- for (Pair <VoltageLevelNode , TextNode > nodePair : simpleTextNodes ) {
651- writeSimpleTextNode (writer , nodePair .getSecond (), labelProvider .getVoltageLevelDescription (nodePair .getFirst ()));
652- }
653- if (!detailedTextNodes .isEmpty ()) {
635+ .toList ();
636+
637+ if (!textNodes .isEmpty ()) {
654638 writeForeignObject (writer );
655639 writer .writeStartElement ("" , DIV_ELEMENT_NAME , XHTML_NAMESPACE_URI );
656640 writer .writeDefaultNamespace (XHTML_NAMESPACE_URI );
657- for (Pair <VoltageLevelNode , TextNode > nodePair : detailedTextNodes ) {
658- writeDetailedTextNode (writer , nodePair .getSecond (), nodePair .getFirst (), labelProvider . getVoltageLevelDescription ( nodePair . getFirst ()) );
641+ for (Pair <VoltageLevelNode , TextNode > nodePair : textNodes ) {
642+ writeDetailedTextNode (writer , nodePair .getSecond (), nodePair .getFirst ());
659643 }
660644 writer .writeEndElement ();
661645 writer .writeEndElement ();
@@ -674,33 +658,28 @@ private String getTranslateString(double x, double y) {
674658 return "translate(" + getFormattedValue (x ) + "," + getFormattedValue (y ) + ")" ;
675659 }
676660
677- private boolean isDetailedTextNode (List <String > content ) {
678- return content .size () > 1 || svgParameters .isBusLegend () || svgParameters .isVoltageLevelDetails ();
679- }
680-
681661 private void writeForeignObject (XMLStreamWriter writer ) throws XMLStreamException {
682662 writer .writeStartElement (FOREIGN_OBJECT_ELEMENT_NAME );
683663 writer .writeAttribute (HEIGHT_ATTRIBUTE , "1" );
684664 writer .writeAttribute (WIDTH_ATTRIBUTE , "1" );
685665 writeStyleClasses (writer , StyleProvider .TEXT_NODES_CLASS );
686666 }
687667
688- private void writeDetailedTextNode (XMLStreamWriter writer , TextNode textNode , VoltageLevelNode vlNode , List < String > content ) throws XMLStreamException {
668+ private void writeDetailedTextNode (XMLStreamWriter writer , TextNode textNode , VoltageLevelNode vlNode ) throws XMLStreamException {
689669 writer .writeStartElement ("" , DIV_ELEMENT_NAME , XHTML_NAMESPACE_URI );
690670 writer .writeAttribute (CLASS_ATTRIBUTE , StyleProvider .LABEL_BOX_CLASS );
691671 long top = Math .round (textNode .getY ());
692672 long left = Math .round (textNode .getX ());
693673 writeStyleAttribute (writer , String .format ("position: absolute; top: %spx; left: %spx" , top , left ));
694674 writeId (writer , textNode );
695- writeLines (content , writer );
696675
697- if (svgParameters .isBusLegend ()) {
698- writeBusNodeLegend (writer , vlNode );
699- }
676+ List <String > vlDescription = labelProvider .getVoltageLevelDescription (vlNode );
677+ writeLines (vlDescription , writer );
700678
701- if (svgParameters .isVoltageLevelDetails ()) {
702- writeLines (labelProvider .getVoltageLevelDetails (vlNode ), writer );
703- }
679+ writeBusNodeLegend (writer , vlNode );
680+
681+ List <String > vlDetails = labelProvider .getVoltageLevelDetails (vlNode );
682+ writeLines (vlDetails , writer );
704683
705684 writer .writeEndElement ();
706685 }
@@ -714,43 +693,26 @@ private void writeLines(List<String> lines, XMLStreamWriter writer) throws XMLSt
714693 }
715694
716695 private void writeBusNodeLegend (XMLStreamWriter writer , VoltageLevelNode vlNode ) throws XMLStreamException {
717- writer .writeStartElement (TABLE_ELEMENT_NAME );
718-
719- for (BusNode busNode : vlNode .getBusNodes ()) {
720- writer .writeStartElement (TABLE_ROW_ELEMENT_NAME );
721- writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
722- writer .writeEmptyElement (DIV_ELEMENT_NAME );
723- writeStyleClasses (writer , styleProvider .getBusNodeStyleClasses (busNode ), StyleProvider .LEGEND_SQUARE_CLASS );
724- writeStyleAttribute (writer , styleProvider .getBusNodeStyle (busNode ));
725- writer .writeEndElement ();
726- writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
727- writer .writeCharacters (labelProvider .getBusDescription (busNode ));
728- writer .writeEndElement ();
729- writer .writeEndElement ();
730- }
731- writer .writeEndElement ();
732- }
733-
734- private void writeSimpleTextNode (XMLStreamWriter writer , TextNode textNode , List <String > content ) throws XMLStreamException {
735- writer .writeStartElement (TEXT_ELEMENT_NAME );
736- writeId (writer , textNode );
737- writer .writeAttribute (Y_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getY ()));
738- if (content .size () == 1 ) {
739- writer .writeAttribute (X_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getX ()));
740- writer .writeCharacters (content .get (0 ));
741- } else {
742- for (int i = 0 ; i < content .size (); i ++) {
743- String line = content .get (i );
744- writer .writeStartElement (TSPAN_ELEMENT_NAME );
745- writer .writeAttribute (X_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getX ()));
746- if (i > 0 ) {
747- writer .writeAttribute (DY_ATTRIBUTE , "1.1em" );
748- }
749- writer .writeCharacters (line );
696+ List <BusNode > notEmptyDescrBusNodes = vlNode .getBusNodeStream ()
697+ .filter (busNode -> StringUtils .isNotEmpty (labelProvider .getBusDescription (busNode )))
698+ .toList ();
699+
700+ if (!notEmptyDescrBusNodes .isEmpty ()) {
701+ writer .writeStartElement (TABLE_ELEMENT_NAME );
702+ for (BusNode busNode : notEmptyDescrBusNodes ) {
703+ writer .writeStartElement (TABLE_ROW_ELEMENT_NAME );
704+ writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
705+ writer .writeEmptyElement (DIV_ELEMENT_NAME );
706+ writeStyleClasses (writer , styleProvider .getBusNodeStyleClasses (busNode ), StyleProvider .LEGEND_SQUARE_CLASS );
707+ writeStyleAttribute (writer , styleProvider .getBusNodeStyle (busNode ));
708+ writer .writeEndElement ();
709+ writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
710+ writer .writeCharacters (labelProvider .getBusDescription (busNode ));
711+ writer .writeEndElement ();
750712 writer .writeEndElement ();
751713 }
714+ writer .writeEndElement ();
752715 }
753- writer .writeEndElement ();
754716 }
755717
756718 private void drawNode (Graph graph , XMLStreamWriter writer , VoltageLevelNode vlNode ) throws XMLStreamException {
0 commit comments