X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fstructure%2FClassDescriptor.java;h=e1e45af91d0f2fc65d70180a417fd49f981d8f52;hb=532776acd85fbaa29f1941356b51707676e30c23;hp=eae630bd28036b7a708c56eb723d6f7f24bc91b2;hpb=8285a2e198a01177b14e528f8e12de2f7d5273e9;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 eae630b..e1e45af 100644
--- a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java
+++ b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java
@@ -57,8 +57,12 @@ public class ClassDescriptor implements GraphElement {
/**
* Amount of field and method references pointing to this class.
*/
- private int incomingReferencesCount = 0;
+ private int referencesCount = 0;
+ // for interface, counts amount of found implementations
+ private int implementationsCount = 0;
+
+ // counts amount of times this class is extended
private int extensionsCount = 0;
public ClassDescriptor(final Class extends Object> clazz,
@@ -92,7 +96,7 @@ public class ClassDescriptor implements GraphElement {
for (final Class interfaceClass : clazz.getInterfaces()) {
final ClassDescriptor classDescriptor = dump
.addClass(interfaceClass);
- classDescriptor.registerExtension();
+ classDescriptor.registerImplementation();
interfaces.add(classDescriptor);
}
@@ -103,7 +107,7 @@ public class ClassDescriptor implements GraphElement {
}
public boolean areReferencesShown() {
- return incomingReferencesCount <= MAX_REFERECNES_COUNT;
+ return referencesCount <= MAX_REFERECNES_COUNT;
}
public void enlistFieldReferences(final StringBuffer result) {
@@ -304,6 +308,19 @@ public class ClassDescriptor implements GraphElement {
return null;
}
+ /**
+ * Returns field with given name (case is ignored). Or null
if
+ * field is not found.
+ */
+ public FieldDescriptor getFieldIgnoreCase(final String fieldToSearch) {
+
+ for (final String fieldName : nameToFieldMap.keySet())
+ if (fieldToSearch.equalsIgnoreCase(fieldName))
+ return nameToFieldMap.get(fieldName);
+
+ return null;
+ }
+
@Override
public String getGraphId() {
final String result = "class_"
@@ -343,16 +360,6 @@ public class ClassDescriptor implements GraphElement {
return result;
}
- public String getPackageName() {
-
- final int i = fullyQualifiedName.lastIndexOf('.');
-
- if (i == -1)
- return "";
-
- return fullyQualifiedName.substring(0, i).replace("[L", "");
- }
-
// public String getReadableName() {
//
// // do not print full class name for well known system classes
@@ -367,6 +374,16 @@ public class ClassDescriptor implements GraphElement {
// return fullyQualifiedName;
// }
+ public String getPackageName() {
+
+ final int i = fullyQualifiedName.lastIndexOf('.');
+
+ if (i == -1)
+ return "";
+
+ return fullyQualifiedName.substring(0, i).replace("[L", "");
+ }
+
public String getParentClassesName() {
int i = fullyQualifiedName.lastIndexOf('.');
final String fullClassName = fullyQualifiedName.substring(i + 1);
@@ -385,6 +402,19 @@ public class ClassDescriptor implements GraphElement {
return superClassColor;
}
+ /**
+ * Checks if class has field with given name (case is ignored). Returns
+ * true
if such field is found.
+ */
+ public boolean hasFieldIgnoreCase(final String fieldToSearch) {
+
+ for (final String fieldName : nameToFieldMap.keySet())
+ if (fieldToSearch.equalsIgnoreCase(fieldName))
+ return true;
+
+ return false;
+ }
+
public void hide() {
isShown = false;
}
@@ -394,7 +424,7 @@ public class ClassDescriptor implements GraphElement {
return;
final int totalReferencesCount = getOutgoingReferencesCount()
- + incomingReferencesCount + extensionsCount;
+ + referencesCount + extensionsCount + implementationsCount;
if (totalReferencesCount == 0) {
hide();
@@ -439,15 +469,18 @@ public class ClassDescriptor implements GraphElement {
}
/**
- * Register event when another class is extending this one, or is
- * implementing interface declared by this class.
+ * Register event when another class is extending this one.
*/
public void registerExtension() {
extensionsCount++;
}
+ public void registerImplementation() {
+ implementationsCount++;
+ }
+
public void registerReference() {
- incomingReferencesCount++;
+ referencesCount++;
}
public void setDistinctiveColor(final String distinctiveColor) {