001 /**
002 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
003 */
004 package net.sourceforge.pmd.dcd;
005
006 import net.sourceforge.pmd.dcd.graph.ClassNode;
007 import net.sourceforge.pmd.dcd.graph.ConstructorNode;
008 import net.sourceforge.pmd.dcd.graph.FieldNode;
009 import net.sourceforge.pmd.dcd.graph.MemberNode;
010 import net.sourceforge.pmd.dcd.graph.MethodNode;
011 import net.sourceforge.pmd.dcd.graph.NodeVisitorAdapter;
012 import net.sourceforge.pmd.dcd.graph.UsageGraph;
013
014 /**
015 * Dump a UsageGraph to System.out.
016 */
017 public class DumpNodeVisitor extends NodeVisitorAdapter {
018
019 @Override
020 public Object visit(UsageGraph usageGraph, Object data) {
021 System.out.println("----------------------------------------");
022 super.visit(usageGraph, data);
023 System.out.println("----------------------------------------");
024 return data;
025 }
026
027 @Override
028 public Object visit(ClassNode classNode, Object data) {
029 System.out.println("Class: " + ClassLoaderUtil.fromInternalForm(classNode.getName()));
030 return super.visit(classNode, data);
031 }
032
033 @Override
034 public Object visitFields(ClassNode classNode, Object data) {
035 System.out.println("\tFields (" + classNode.getFieldNodes().size() + "):");
036 return super.visitFields(classNode, data);
037 }
038
039 @Override
040 public Object visit(FieldNode fieldNode, Object data) {
041 printMember(fieldNode);
042 return super.visit(fieldNode, data);
043 }
044
045 @Override
046 public Object visitConstructors(ClassNode classNode, Object data) {
047 System.out.println("\tConstructors (" + classNode.getConstructorNodes().size() + "):");
048 return super.visitConstructors(classNode, data);
049 }
050
051 @Override
052 public Object visit(ConstructorNode constructorNode, Object data) {
053 printMember(constructorNode);
054 return super.visit(constructorNode, data);
055 }
056
057 @Override
058 public Object visitMethods(ClassNode classNode, Object data) {
059 System.out.println("\tMethods (" + classNode.getMethodNodes().size() + "):");
060 return super.visitMethods(classNode, data);
061 }
062
063 @Override
064 public Object visit(MethodNode methodNode, Object data) {
065 printMember(methodNode);
066 return super.visit(methodNode, data);
067 }
068
069 @Override
070 public Object visitUses(MemberNode memberNode, Object data) {
071 if (Boolean.TRUE == data && !memberNode.getUses().isEmpty()) {
072 System.out.println("\t\t\tUses:");
073 }
074 return super.visitUses(memberNode, data);
075 }
076
077 @Override
078 public Object visitUse(MemberNode use, Object data) {
079 if (Boolean.TRUE == data) {
080 System.out.println("\t\t\t\t" + use.toStringLong());
081 }
082 return super.visitUse(use, data);
083 }
084
085 @Override
086 public Object visitUsers(MemberNode memberNode, Object data) {
087 if (Boolean.TRUE == data && !memberNode.getUsers().isEmpty()) {
088 System.out.println("\t\t\tUsers:");
089 }
090 return super.visitUsers(memberNode, data);
091 }
092
093 @Override
094 public Object visitUser(MemberNode user, Object data) {
095 if (Boolean.TRUE == data) {
096 System.out.println("\t\t\t\t" + user.toStringLong());
097 }
098 return super.visitUser(user, data);
099 }
100
101 protected void printMember(MemberNode memberNode) {
102 System.out.println("\t\t(" + memberNode.getUses().size() + ", " + memberNode.getUsers().size() + ") "
103 + memberNode.toStringLong());
104 }
105 }
|