improved project documentation
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / structure / ClassDescriptor.java
index fbd491b..c0be547 100644 (file)
@@ -12,9 +12,11 @@ package eu.svjatoslav.inspector.java.structure;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
 
 /**
  * Describes single class instance
@@ -25,9 +27,9 @@ public class ClassDescriptor implements GraphElement {
 
        public final String fullyQualifiedName;
 
-       Map<String, FieldDescriptor> nameToFieldMap = new HashMap<String, FieldDescriptor>();
+       Map<String, FieldDescriptor> nameToFieldMap = new TreeMap<String, FieldDescriptor>();
 
-       public List<MethodDescriptor> methods = new ArrayList<MethodDescriptor>();
+       public SortedSet<MethodDescriptor> methods = new TreeSet<MethodDescriptor>();
 
        /**
         * Incoming arrows will have this color.
@@ -55,7 +57,7 @@ public class ClassDescriptor implements GraphElement {
        /**
         * Amount of field and method references pointing to this class.
         */
-       private int referenceCount = 0;
+       private int incomingReferencesCount = 0;
 
        public ClassDescriptor(final Class<? extends Object> clazz,
                        final ClassGraph dump) {
@@ -92,7 +94,7 @@ public class ClassDescriptor implements GraphElement {
        }
 
        public boolean areReferencesShown() {
-               return referenceCount <= MAX_REFERECNES_COUNT;
+               return incomingReferencesCount <= MAX_REFERECNES_COUNT;
        }
 
        public void enlistFieldReferences(final StringBuffer result) {
@@ -297,7 +299,7 @@ public class ClassDescriptor implements GraphElement {
        public String getGraphId() {
                final String result = "class_"
                                + fullyQualifiedName.replace('.', '_').replace(";", "")
-                                               .replace("[L", "").replace('$', '_');
+                               .replace("[L", "").replace('$', '_');
                return result;
        }
 
@@ -354,6 +356,31 @@ public class ClassDescriptor implements GraphElement {
                isShown = false;
        }
 
+       public boolean hideClassIfNoReferences() {
+               if (!isVisible())
+                       return false;
+
+               int outgoingVisibleReferencesCount = 0;
+
+               for (final MethodDescriptor methodDescriptor : methods)
+                       outgoingVisibleReferencesCount += methodDescriptor
+                       .getOutsideVisibleReferencesCount();
+
+               for (final FieldDescriptor fieldDescriptor : nameToFieldMap.values())
+                       outgoingVisibleReferencesCount += fieldDescriptor
+                       .getOutsideVisibleReferencesCount();
+
+               final int totalReferencesCount = outgoingVisibleReferencesCount
+                               + incomingReferencesCount;
+
+               if (totalReferencesCount == 0) {
+                       hide();
+                       return true;
+               }
+
+               return false;
+       }
+
        public void indexFields(final Field[] fields) {
                for (final Field field : fields) {
                        if (nameToFieldMap.containsKey(field.getName()))
@@ -382,14 +409,14 @@ public class ClassDescriptor implements GraphElement {
                if (Utils.isSystemPackage(fullyQualifiedName))
                        return false;
 
-               if (!classGraph.filter.isClassShown(fullyQualifiedName))
+               if (!classGraph.getFilter().isClassShown(fullyQualifiedName))
                        return false;
 
                return isShown;
        }
 
        public void registerReference() {
-               referenceCount++;
+               incomingReferencesCount++;
        }
 
        public void setDistinctiveColor(final String distinctiveColor) {