package husacct.analyse.domain.famix; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; abstract class FamixObject { @Override public String toString() { StringBuilder string = new StringBuilder(); string.append("(" + this.getClass().getSimpleName() + "\r\n"); ArrayList<Field> fields = getFields(this.getClass()); for (Field field : fields) { string.append(" (" + field.getName() + " \"" + getFieldValue(field, this) + "\")\r\n"); } string.append(')'); return string.toString(); } public ArrayList<Field> getFields(java.lang.Class<? extends java.lang.Object> theClass) { ArrayList<Field> fields = new ArrayList<Field>(); if (theClass.getSuperclass() != null) { fields.addAll(getFields(theClass.getSuperclass())); } Field[] myFields = theClass.getDeclaredFields(); for (Field field : myFields) { fields.add(field); } return fields; } private String getFieldValue(Field field, Object object) { String returnVariable; String fieldName = field.getName(); String methodName = getFieldMethodName(fieldName); try { Method method = this.getClass().getMethod(methodName, (Class<?>) null); java.lang.Object response = method.invoke(this, (Object) null); if (response == null) { returnVariable = "null"; } returnVariable = response.toString(); } catch (Exception e) { returnVariable = "-"; } return returnVariable; } private String getFieldMethodName(String fieldName) { if (fieldName.startsWith("is")) { return fieldName; } else if (fieldName.startsWith("has")) { return "is" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); } return "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); } }