@@ -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 }
@@ -661,15 +655,6 @@ private void writeTextNode(XMLStreamWriter writer, TextNode textNode, VoltageLev
661655 return ;
662656 }
663657
664- List <String > content = labelProvider .getVoltageLevelDescription (vlNode );
665- if (content .size () > 1 || svgParameters .isBusLegend () || svgParameters .isVoltageLevelDetails ()) {
666- writeDetailedTextNode (writer , textNode , vlNode , content );
667- } else {
668- writeSimpleTextNode (writer , textNode , content );
669- }
670- }
671-
672- private void writeDetailedTextNode (XMLStreamWriter writer , TextNode textNode , VoltageLevelNode vlNode , List <String > content ) throws XMLStreamException {
673658 writer .writeStartElement (FOREIGN_OBJECT_ELEMENT_NAME );
674659 writeId (writer , textNode );
675660 writer .writeAttribute (Y_ATTRIBUTE , getFormattedValue (textNode .getY ()));
@@ -684,15 +669,13 @@ private void writeDetailedTextNode(XMLStreamWriter writer, TextNode textNode, Vo
684669 writer .writeDefaultNamespace (XHTML_NAMESPACE_URI );
685670 writer .writeAttribute (CLASS_ATTRIBUTE , StyleProvider .LABEL_BOX_CLASS );
686671
687- writeLines (content , writer );
672+ List <String > vlDescription = labelProvider .getVoltageLevelDescription (vlNode );
673+ writeLines (vlDescription , writer );
688674
689- if (svgParameters .isBusLegend ()) {
690- writeBusNodeLegend (writer , vlNode );
691- }
675+ writeBusNodeLegend (writer , vlNode );
692676
693- if (svgParameters .isVoltageLevelDetails ()) {
694- writeLines (labelProvider .getVoltageLevelDetails (vlNode ), writer );
695- }
677+ List <String > vlDetails = labelProvider .getVoltageLevelDetails (vlNode );
678+ writeLines (vlDetails , writer );
696679
697680 writer .writeEndElement ();
698681 writer .writeEndElement ();
@@ -707,43 +690,26 @@ private void writeLines(List<String> lines, XMLStreamWriter writer) throws XMLSt
707690 }
708691
709692 private void writeBusNodeLegend (XMLStreamWriter writer , VoltageLevelNode vlNode ) throws XMLStreamException {
710- writer .writeStartElement (TABLE_ELEMENT_NAME );
711-
712- for (BusNode busNode : vlNode .getBusNodes ()) {
713- writer .writeStartElement (TABLE_ROW_ELEMENT_NAME );
714- writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
715- writer .writeEmptyElement (DIV_ELEMENT_NAME );
716- writeStyleClasses (writer , styleProvider .getBusNodeStyleClasses (busNode ), StyleProvider .LEGEND_SQUARE_CLASS );
717- writeStyleAttribute (writer , styleProvider .getBusNodeStyle (busNode ));
718- writer .writeEndElement ();
719- writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
720- writer .writeCharacters (labelProvider .getBusDescription (busNode ));
721- writer .writeEndElement ();
722- writer .writeEndElement ();
723- }
724- writer .writeEndElement ();
725- }
726-
727- private void writeSimpleTextNode (XMLStreamWriter writer , TextNode textNode , List <String > content ) throws XMLStreamException {
728- writer .writeStartElement (TEXT_ELEMENT_NAME );
729- writeId (writer , textNode );
730- writer .writeAttribute (Y_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getY ()));
731- if (content .size () == 1 ) {
732- writer .writeAttribute (X_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getX ()));
733- writer .writeCharacters (content .get (0 ));
734- } else {
735- for (int i = 0 ; i < content .size (); i ++) {
736- String line = content .get (i );
737- writer .writeStartElement (TSPAN_ELEMENT_NAME );
738- writer .writeAttribute (X_ATTRIBUTE , getFormattedValue (textNode .getEdgeConnection ().getX ()));
739- if (i > 0 ) {
740- writer .writeAttribute (DY_ATTRIBUTE , "1.1em" );
741- }
742- writer .writeCharacters (line );
693+ List <BusNode > notEmptyDescrBusNodes = vlNode .getBusNodeStream ()
694+ .filter (busNode -> StringUtils .isNotEmpty (labelProvider .getBusDescription (busNode )))
695+ .toList ();
696+
697+ if (!notEmptyDescrBusNodes .isEmpty ()) {
698+ writer .writeStartElement (TABLE_ELEMENT_NAME );
699+ for (BusNode busNode : notEmptyDescrBusNodes ) {
700+ writer .writeStartElement (TABLE_ROW_ELEMENT_NAME );
701+ writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
702+ writer .writeEmptyElement (DIV_ELEMENT_NAME );
703+ writeStyleClasses (writer , styleProvider .getBusNodeStyleClasses (busNode ), StyleProvider .LEGEND_SQUARE_CLASS );
704+ writeStyleAttribute (writer , styleProvider .getBusNodeStyle (busNode ));
705+ writer .writeEndElement ();
706+ writer .writeStartElement (TABLE_DATA_ELEMENT_NAME );
707+ writer .writeCharacters (labelProvider .getBusDescription (busNode ));
708+ writer .writeEndElement ();
743709 writer .writeEndElement ();
744710 }
711+ writer .writeEndElement ();
745712 }
746- writer .writeEndElement ();
747713 }
748714
749715 private void drawNode (Graph graph , XMLStreamWriter writer , VoltageLevelNode vlNode ) throws XMLStreamException {
0 commit comments