diff --git a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java index a103825..500a7c2 100644 --- a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java +++ b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java @@ -20,6 +20,9 @@ package gr.spinellis.umlgraph.doclet; +import java.util.HashSet; +import java.util.Set; + /** * Class's dot-comaptible alias name (for fully qualified class names) * and printed information @@ -34,6 +37,12 @@ class ClassInfo { boolean nodePrinted; /** True if the class class node is hidden */ boolean hidden; + /** + * The list of classes that share a relation with this one. Contains + * all the classes linked with a bi-directional relation , and the ones + * referred by a directed relation + */ + Set relatedClasses = new HashSet(); ClassInfo(boolean p, boolean h) { nodePrinted = p; @@ -41,10 +50,20 @@ class ClassInfo { name = "c" + (new Integer(classNumber)).toString(); classNumber++; } + + public void addRelation(String dest) { + relatedClasses.add(dest); + } + + public boolean isRelated(String dest) { + return relatedClasses.contains(dest); + } /** Start numbering from zero. */ public static void reset() { classNumber = 0; } + + } diff --git a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java index 769bf70..df59271 100644 --- a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java +++ b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java @@ -74,9 +74,10 @@ public class UmlGraph { * Builds and outputs a single graph according to the view overrides */ private static void buildGraph(RootDoc root, OptionProvider op) throws IOException { + Options opt = op.getGlobalOptions(); ClassDoc[] classes = root.classes(); - ClassGraph c = new ClassGraph(root.specifiedPackages(), op); + ClassGraph c = new ClassGraph(root, op); c.prologue(); for (int i = 0; i < classes.length; i++) { c.printClass(classes[i]); @@ -84,6 +85,10 @@ public class UmlGraph { for (int i = 0; i < classes.length; i++) { c.printRelations(classes[i]); } + if(opt.inferAssociations) + c.printInferredRelations(classes); + if(opt.inferDependencies) + c.printInferredDependencies(classes); c.printExtraClasses(root); c.epilogue(); diff --git a/src/org/umlgraph/doclet/ClassInfo.java b/src/org/umlgraph/doclet/ClassInfo.java index a103825..500a7c2 100644 --- a/src/org/umlgraph/doclet/ClassInfo.java +++ b/src/org/umlgraph/doclet/ClassInfo.java @@ -20,6 +20,9 @@ package gr.spinellis.umlgraph.doclet; +import java.util.HashSet; +import java.util.Set; + /** * Class's dot-comaptible alias name (for fully qualified class names) * and printed information @@ -34,6 +37,12 @@ class ClassInfo { boolean nodePrinted; /** True if the class class node is hidden */ boolean hidden; + /** + * The list of classes that share a relation with this one. Contains + * all the classes linked with a bi-directional relation , and the ones + * referred by a directed relation + */ + Set relatedClasses = new HashSet(); ClassInfo(boolean p, boolean h) { nodePrinted = p; @@ -41,10 +50,20 @@ class ClassInfo { name = "c" + (new Integer(classNumber)).toString(); classNumber++; } + + public void addRelation(String dest) { + relatedClasses.add(dest); + } + + public boolean isRelated(String dest) { + return relatedClasses.contains(dest); + } /** Start numbering from zero. */ public static void reset() { classNumber = 0; } + + } diff --git a/src/org/umlgraph/doclet/UmlGraph.java b/src/org/umlgraph/doclet/UmlGraph.java index 769bf70..df59271 100644 --- a/src/org/umlgraph/doclet/UmlGraph.java +++ b/src/org/umlgraph/doclet/UmlGraph.java @@ -74,9 +74,10 @@ public class UmlGraph { * Builds and outputs a single graph according to the view overrides */ private static void buildGraph(RootDoc root, OptionProvider op) throws IOException { + Options opt = op.getGlobalOptions(); ClassDoc[] classes = root.classes(); - ClassGraph c = new ClassGraph(root.specifiedPackages(), op); + ClassGraph c = new ClassGraph(root, op); c.prologue(); for (int i = 0; i < classes.length; i++) { c.printClass(classes[i]); @@ -84,6 +85,10 @@ public class UmlGraph { for (int i = 0; i < classes.length; i++) { c.printRelations(classes[i]); } + if(opt.inferAssociations) + c.printInferredRelations(classes); + if(opt.inferDependencies) + c.printInferredDependencies(classes); c.printExtraClasses(root); c.epilogue();