X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fstructure%2FClassDescriptor.java;h=55ef66ccfcf045fdc2b49ceafd94916c84c53213;hb=d9837ba577dd0c6d56c83326383f450e35764c90;hp=41f92f3f69c0ea3dbee5dc9bb35e7ffcfc5748ec;hpb=0fc4b3a771bbe7c985a223d3ced81e49e499ed91;p=javainspect.git diff --git a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java index 41f92f3..55ef66c 100644 --- a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java +++ b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java @@ -46,7 +46,7 @@ public class ClassDescriptor implements GraphElement { private boolean isShown = true; - private final ClassGraph dump; + private final ClassGraph classGraph; List interfaces = new ArrayList(); @@ -55,11 +55,11 @@ 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 clazz, final ClassGraph dump) { - this.dump = dump; + classGraph = dump; fullyQualifiedName = clazz.getName(); dump.nameToClassMap.put(fullyQualifiedName, this); @@ -92,7 +92,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) { @@ -354,13 +354,38 @@ 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())) continue; final FieldDescriptor fieldDescriptor = new FieldDescriptor(field, - this, dump); + this, classGraph); } } @@ -369,7 +394,7 @@ public class ClassDescriptor implements GraphElement { final Method[] methods = clazz.getMethods(); for (final Method method : methods) - new MethodDescriptor(method, this, dump); + new MethodDescriptor(method, this, classGraph); } @@ -382,11 +407,14 @@ public class ClassDescriptor implements GraphElement { if (Utils.isSystemPackage(fullyQualifiedName)) return false; + if (!classGraph.filter.isClassShown(fullyQualifiedName)) + return false; + return isShown; } public void registerReference() { - referenceCount++; + incomingReferencesCount++; } public void setDistinctiveColor(final String distinctiveColor) {