@@ -144,7 +144,7 @@ public static void main(String[] args) {
144144 Files .write (Paths .get ("target/graph/intermediary_graph.dot" ), dotContent .getBytes ());
145145 System .out .println ("Intermediary graph written to intermediary_graph.dot" );
146146
147- // Render graph to SVF
147+ // Render graph to SVG
148148 Graphviz .fromGraph (clusteredGraph )
149149 .engine (Engine .FDP )
150150 .render (Format .SVG ).toFile (new File ("target/graph/intermediary_graph.svg" ));
@@ -185,40 +185,30 @@ private static MutableGraph generateHighLevelGraph(MutableGraph clusteredGraph,
185185 MutableGraph cluster = entry .getValue ();
186186
187187 String headerColor = clusterName .startsWith ("Maven" ) ? "black" : "#808080" ; // #808080 is a middle gray
188+ String prefix ;
189+ switch (clusterName ) {
190+ case "MavenAPI" : prefix = "../api/" ; break ;
191+ case "MavenImplementation" : prefix = "../impl/" ; break ;
192+ case "MavenCompatibility" : prefix = "../compat/" ; break ;
193+ case "MavenResolver" : prefix = "https://maven.apache.org/resolver/" ; break ;
194+ default : prefix = null ;
195+ }
196+
188197 StringBuilder labelBuilder = new StringBuilder ();
189- labelBuilder .append ("<table border='0' cellborder='0' cellspacing='0'>" );
190- labelBuilder .append ("<tr ><td bgcolor='" )
198+ labelBuilder .append ("<table border='0' cellborder='0' cellspacing='0'>" )
199+ .append ("<th border='1' ><td cellpadding='5' bgcolor='" )
191200 .append (headerColor )
192- .append ("'><font color='white'>" )
201+ .append ("'><font color='white'><b> " )
193202 .append (key )
194- .append ("</ font></td></tr >" );
203+ .append (" </b></ font></td></th >" );
195204 cluster .nodes ().stream ().map (MutableNode ::name ).map (Label ::toString ).sorted ()
196205 .forEach (nodeName -> {
197- labelBuilder .append ("<tr>" );
198- String prefix = null ;
199- switch (clusterName ) {
200- case "MavenAPI" : prefix = "../api/" ; break ;
201- case "MavenImplementation" : prefix = "../impl/" ; break ;
202- case "MavenCompatibility" : prefix = "../compat/" ; break ;
203- case "MavenResolver" : prefix = "https://maven.apache.org/resolver/" ; break ;
204- }
206+ labelBuilder .append ("<tr><td align='left'" );
205207 if (prefix != null ) {
206- labelBuilder .append ("<td" )
207- .append (" href=\" " )
208- .append (prefix )
209- .append (nodeName )
210- .append ("\" " )
211- .append (" title=\" " )
212- .append (nodeName )
213- .append ("\" " )
214- .append (" target=\" _parent\" " )
215- .append (">" )
216- .append (nodeName )
217- .append ("</td>" );
218- } else {
219- labelBuilder .append ("<td>" ).append (nodeName ).append ("</td>" );
208+ labelBuilder .append (" href='" ).append (prefix ).append (nodeName )
209+ .append ("' title='" ).append (nodeName ).append ("' target='_parent'" );
220210 }
221- labelBuilder .append ("</tr>" );
211+ labelBuilder .append (">" ). append ( nodeName ). append ( "</td> </tr>" );
222212 });
223213 labelBuilder .append ("</table>" );
224214
@@ -257,6 +247,17 @@ private static MutableGraph generateHighLevelGraph(MutableGraph clusteredGraph,
257247 }
258248 }
259249
250+ // force top group
251+ MutableGraph topGroup = mutGraph ("top" )
252+ .setDirected (true )
253+ .graphAttrs ().add (Rank .inSubgraph (Rank .RankType .SAME ))
254+ .add (
255+ mutNode ("MavenResolver" ),
256+ mutNode ("MavenAPI" ),
257+ mutNode ("MavenImplementation" )
258+ );
259+ highLevelGraph .add (topGroup );
260+
260261 return highLevelGraph ;
261262 }
262263
0 commit comments