001 package org.kuali.maven.plugins.graph.dot; 002 003 import java.util.List; 004 005 import org.kuali.maven.plugins.graph.pojo.Edge; 006 import org.kuali.maven.plugins.graph.pojo.EdgeDecorator; 007 import org.kuali.maven.plugins.graph.pojo.Graph; 008 import org.kuali.maven.plugins.graph.pojo.GraphDecorator; 009 import org.kuali.maven.plugins.graph.pojo.GraphNode; 010 import org.kuali.maven.plugins.graph.pojo.NodeDecorator; 011 012 public class StringGenerator { 013 014 public String getString(Graph graph) { 015 StringBuilder sb = new StringBuilder(); 016 sb.append("digraph dependencies {\n\n"); 017 sb.append(getString(graph.getGraphDecorator())); 018 sb.append(getString(graph.getNodeDecorator())); 019 sb.append(getString(graph.getEdgeDecorator())); 020 sb.append("\n"); 021 sb.append(getString(graph.getNodes())); 022 sb.append("\n"); 023 sb.append(toString(graph.getEdges())); 024 sb.append("}\n"); 025 return sb.toString(); 026 } 027 028 public String getString(GraphDecorator decorator) { 029 if (decorator == null) { 030 return ""; 031 } 032 StringBuilder sb = new StringBuilder(); 033 sb.append(" graph ["); 034 sb.append(" label=\"" + decorator.getLabel() + "\""); 035 sb.append(" labeljust=\"" + decorator.getLabeljust() + "\""); 036 sb.append(" labelloc=\"" + decorator.getLabelloc() + "\""); 037 sb.append(" fontsize=\"" + decorator.getFontsize() + "\""); 038 sb.append(" fontname=\"" + decorator.getFontname() + "\""); 039 sb.append(" ranksep=\"" + decorator.getRanksep() + "\""); 040 sb.append(" rankdir=\"" + decorator.getRankdir() + "\""); 041 sb.append(" nodesep=\"" + decorator.getNodesep() + "\""); 042 sb.append(" ];\n"); 043 return sb.toString(); 044 } 045 046 public String getString(NodeDecorator decorator) { 047 if (decorator == null) { 048 return ""; 049 } 050 StringBuilder sb = new StringBuilder(); 051 sb.append(" node ["); 052 sb.append(" fontsize=\"" + decorator.getFontsize() + "\""); 053 sb.append(" fontname=\"" + decorator.getFontname() + "\""); 054 sb.append(" shape=\"" + decorator.getShape() + "\""); 055 sb.append(" ];\n"); 056 return sb.toString(); 057 } 058 059 public String getString(EdgeDecorator decorator) { 060 if (decorator == null) { 061 return ""; 062 } 063 StringBuilder sb = new StringBuilder(); 064 sb.append(" edge ["); 065 sb.append(" fontsize=\"" + decorator.getFontsize() + "\""); 066 sb.append(" fontname=\"" + decorator.getFontname() + "\""); 067 sb.append(" ];\n"); 068 return sb.toString(); 069 } 070 071 public String getString(List<GraphNode> nodes) { 072 if (nodes == null) { 073 return ""; 074 } 075 StringBuilder sb = new StringBuilder(); 076 for (GraphNode node : nodes) { 077 sb.append(getString(node)); 078 } 079 return sb.toString(); 080 } 081 082 public String getString(GraphNode node) { 083 if (node.isHidden()) { 084 return ""; 085 } 086 StringBuilder sb = new StringBuilder(); 087 sb.append(" \"" + node.getId() + "\" [\n"); 088 sb.append(" fontsize=\"" + node.getFontsize() + "\"\n"); 089 sb.append(" label=\"" + node.getLabel() + "\"\n"); 090 sb.append(" color=\"" + node.getColor() + "\"\n"); 091 sb.append(" fontcolor=\"" + node.getFontcolor() + "\"\n"); 092 sb.append(" fillcolor=\"" + node.getFillcolor() + "\"\n"); 093 sb.append(" style=\"" + node.getStyle() + "\"\n"); 094 sb.append(" ];\n"); 095 return sb.toString(); 096 } 097 098 public String toString(List<Edge> edges) { 099 if (edges == null) { 100 return ""; 101 } 102 StringBuilder sb = new StringBuilder(); 103 for (Edge edge : edges) { 104 sb.append(getString(edge)); 105 } 106 return sb.toString(); 107 } 108 109 public String getString(Edge edge) { 110 GraphNode parent = edge.getParent(); 111 GraphNode child = edge.getChild(); 112 if (parent.isHidden() || child.isHidden()) { 113 return ""; 114 } 115 StringBuilder sb = new StringBuilder(); 116 sb.append(" \"" + parent.getId() + "\" -> \"" + child.getId() + "\" [\n"); 117 sb.append(" label=\"" + edge.getLabel() + "\"\n"); 118 sb.append(" style=\"" + edge.getStyle() + "\"\n"); 119 sb.append(" color=\"" + edge.getColor() + "\"\n"); 120 sb.append(" fontcolor=\"" + edge.getFontcolor() + "\"\n"); 121 sb.append(" weight=\"" + edge.getWeight() + "\"\n"); 122 sb.append(" ];\n"); 123 return sb.toString(); 124 } 125 }