possibility to hide orphaned classes from graph
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / structure / ClassGraph.java
index bda0882..6155876 100644 (file)
@@ -16,14 +16,27 @@ import java.util.HashMap;
 import java.util.Map;
 
 import eu.svjatoslav.commons.file.CommonPathResolver;
+import eu.svjatoslav.inspector.java.methods.Clazz;
+import eu.svjatoslav.inspector.java.methods.ProjectScanner;
 
 public class ClassGraph {
 
+       public static void render(final String graphName, final Class... classes) {
+               final ClassGraph classGraph = new ClassGraph();
+
+               for (final Class clazz : classes)
+                       classGraph.addClass(clazz);
+
+               classGraph.generateGraph(graphName);
+       }
+
        /**
         * Maps class fully qualified names to class descriptors.
         */
        Map<String, ClassDescriptor> nameToClassMap = new HashMap<String, ClassDescriptor>();
 
+       public Filter filter = new Filter();
+
        public ClassGraph() {
        }
 
@@ -52,6 +65,19 @@ public class ClassGraph {
                return addClass(object.getClass());
        }
 
+       public void addProject(final String path) {
+               final ProjectScanner projectScanner = new ProjectScanner(new File(path));
+               for (final Clazz clazz : projectScanner.getAllClasses())
+                       try {
+                               System.out.println("Class full name: " + clazz.getFullName());
+                               final Class c = this.getClass().forName(clazz.getFullName());
+                               addClass(c);
+                       } catch (final Exception exception) {
+                               System.out.println("cannot add class: "
+                                               + exception.getMessage());
+                       }
+       }
+
        public void generateGraph(final String graphName) {
                generateGraph(graphName, false);
        }
@@ -107,4 +133,11 @@ public class ClassGraph {
                return resultStr;
        }
 
+       public void hideClassesWithoutReferences() {
+
+               for (final ClassDescriptor classDescriptor : nameToClassMap.values())
+                       classDescriptor.hideClassIfNoReferences();
+
+       }
+
 }