@@ -18,10 +18,6 @@ public class DefaultGraphvizPresenter implements Presenter {
1818 private static final String INHERITANCE_STYLE = "arrowhead=empty color=slategray" ;
1919 private final AtomicInteger count = new AtomicInteger ();
2020
21- private String describeEdge (Edge edge ) {
22- return String .format ("%s -> %s [%s];" , edge .source .className , edge .target .className , getEdgeDescription (edge ));
23- }
24-
2521 private Object getEdgeDescription (Edge edge ) {
2622 StringBuilder sb = new StringBuilder ();
2723 if (edge .target .description != null ) {
@@ -44,29 +40,64 @@ private String linkDirection(Edge edge) {
4440 return "dir=both arrowhead=open arrowtail=open" ;
4541 }
4642
47-
4843 private String describeInheritance (List <Edge > edges ) {
49- return edges .stream ().filter (e -> e .type == EdgeType .EXTENDS ).map (hierarchyEdge -> String .format (" %s -> %s [%s];\n " , hierarchyEdge .source .className , hierarchyEdge .target .className , INHERITANCE_STYLE )).collect (joining ());
44+ return edges .stream ()
45+ .filter (e -> e .type == EdgeType .EXTENDS )
46+ .map (this ::describeInheritance )
47+ .collect (joining ());
48+ }
49+
50+ private String describeInheritance (Edge hierarchyEdge ) {
51+ return String .format (" %s -> %s [%s];\n " ,
52+ hierarchyEdge .source .className ,
53+ hierarchyEdge .target .className ,
54+ INHERITANCE_STYLE );
5055 }
5156
5257 private String describePackages (List <DomainObject > domainObjects ) {
5358 count .set (0 );
54- return domainObjects .stream ().collect (groupingBy (DomainObject ::getPackageName )).entrySet ().stream ().map (this ::describePackage ).collect (joining ());
55-
59+ return domainObjects .stream ()
60+ .collect (groupingBy (DomainObject ::getPackageName ))
61+ .entrySet ().stream ()
62+ .map (this ::describePackage )
63+ .collect (joining ());
5664 }
5765
5866 private String describePackage (Map .Entry <String , List <DomainObject >> entry ) {
5967 return String .format (" subgraph cluster_%s {\n label = \" %s\" ;\n %s }\n " ,
60- count .getAndIncrement (), entry .getKey (), entry .getValue ().stream ().map (domainObject -> " " + domainObject .className + "\n " ).distinct ().collect (joining ()));
68+ count .getAndIncrement (),
69+ entry .getKey (),
70+ listDomainObjects (entry .getValue ()));
71+ }
72+
73+ private String listDomainObjects (List <DomainObject > domainObjects ) {
74+ return domainObjects .stream ()
75+ .map (domainObject -> " " + domainObject .className + "\n " )
76+ .distinct ()
77+ .collect (joining ());
6178 }
6279
6380 private String describeCompositions (List <Edge > edges ) {
64- return edges .stream ().filter (e -> e .type != EdgeType .EXTENDS ).map (e -> String .format (" %s\n " , describeEdge (e ))).collect (joining ());
81+ return edges .stream ()
82+ .filter (e -> e .type != EdgeType .EXTENDS )
83+ .map (this ::describeComposition )
84+ .collect (joining ());
85+ }
86+
87+ private String describeComposition (Edge compositionEdge ) {
88+ return String .format (" %s\n " , describeEdge (compositionEdge ));
6589 }
6690
91+ private String describeEdge (Edge edge ) {
92+ return String .format ("%s -> %s [%s];" , edge .source .className , edge .target .className , getEdgeDescription (edge ));
93+ }
6794
6895 @ Override
6996 public String describe (List <DomainObject > domainObjects , List <Edge > edges ) {
70- return DOMAIN_DECLARATION + DEFAULTS + "\n " + describePackages (domainObjects ) + describeCompositions (edges ) + describeInheritance (edges ) + "}" ;
97+ return DOMAIN_DECLARATION + DEFAULTS + "\n "
98+ + describePackages (domainObjects )
99+ + describeCompositions (edges )
100+ + describeInheritance (edges )
101+ + "}" ;
71102 }
72103}
0 commit comments