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 }