DumpNodeVisitor.java
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 }