Skip to content
Snippets Groups Projects
Commit 291261ac authored by Sören Henning's avatar Sören Henning
Browse files

rename DotBuilderSupport to DotBuilder

parent 758d6d83
No related branches found
No related tags found
1 merge request!17Get impletemented stages and Java 8
package kieker.analysis.util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.base.Joiner;
/**
* Simple class for building and representing dot graph files.
*
* @author Sören Henning
*
*/
public class DotBuilder {
private final String start;
private final String end;
private final StringBuilder body = new StringBuilder();
private Map<String, String> graphProperties;
private Map<String, String> defaultNodeProperties;
private Map<String, String> defaultEdgeProperties;
private Map<String, Map<String, String>> nodes;
private Map<String, Map<String, String>> edges;
private List<DotBuilder> subgraphs;
private static final String START_BRACKET = "{";
private static final String END_BRACKET = "}";
private static final String DEFAULT_GRAPH_NAME = "G";
private static final String DEFAULT_GRAPH_TYPE = "digraph";
public DotBuilder() {
this(DEFAULT_GRAPH_NAME);
}
public DotBuilder(final String graphName) {
this(graphName, DEFAULT_GRAPH_TYPE);
}
// TODO graphType has to be one of "graph", "digraph" or "subgraph" so maybe use an enum
public DotBuilder(final String graphName, final String graphType) {
start = graphType + " " + graphName + " " + START_BRACKET + "\n";
end = END_BRACKET;
}
// TODO maybe rename
public void setDefaultNodeProperties(final Map<String, String> defaultNodeProperties) {
this.defaultNodeProperties = defaultNodeProperties;
}
// TODO maybe rename
public void setDefaultEdgeProperties(final Map<String, String> defaultEdgeProperties) {
this.defaultEdgeProperties = defaultEdgeProperties;
}
public String get() {
return start + body.toString() + end;
}
@Override
public String toString() {
return get();
}
public void addNode(final String id) {
addNode(id, new HashMap<>());
}
public void addNode(final String id, final Map<String, String> properties) {
addElement('"' + id + '"', properties);
}
public void addEdge(final String source, final String target) {
addEdge(source, target, new HashMap<>());
}
public void addEdge(final String source, final String target, final Map<String, String> properties) {
addElement('"' + source + '"' + " -> " + '"' + target + '"', properties);
}
public void addSubgraph(final String subgraph) {
body.append(subgraph + '\n');
}
private void addElement(final String element, final Map<String, String> properties) {
body.append(element);
if (properties != null && !properties.isEmpty()) {
body.append(" [");
Joiner.on("\", ").withKeyValueSeparator("=\"").appendTo(body, properties);
body.append("\"]");
}
body.append('\n');
}
}
package kieker.analysis.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.google.common.base.Joiner;
/**
* Simple class for building and representing dot graph files.
*
* @deprecated use {@link dot.DotWriter} instead.
*
* @author Sören Henning
*
*/
@Deprecated
public class DotBuilder {
private final String start;
private final String end;
private final StringBuilder body = new StringBuilder();
private Map<String, String> defaultNodeProperties;
private Map<String, String> defaultEdgeProperties;
private Map<String, String> defaultProperties;
private static final String START_BRACKET = "{";
private static final String END_BRACKET = "}";
private static final String DEFAULT_GRAPH_NAME = "G";
private static final String DEFAULT_GRAPH_TYPE = "digraph";
public DotBuilder() {
this(DEFAULT_GRAPH_NAME);
}
public DotBuilder(final String graphName) {
this(graphName, DEFAULT_GRAPH_TYPE);
}
// TODO graphType has to be one of "graph", "digraph" or "subgraph" so maybe use an enum
public DotBuilder(final String graphName, final String graphType) {
start = graphType + " " + graphName + " " + START_BRACKET + "\n";
end = END_BRACKET;
}
// TODO Deprecated
public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties) {
this(name);
this.defaultNodeProperties = defaultNodeProperties;
this.defaultEdgeProperties = defaultEdgeProperties;
}
// TODO Deprecated
public DotBuilder(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties,
final Map<String, String> defaultProperties) {
this(name, defaultNodeProperties, defaultEdgeProperties);
this.defaultProperties = defaultProperties;
}
public void setDefaultNodeProperties(final Map<String, String> defaultNodeProperties) {
this.defaultNodeProperties = defaultNodeProperties;
}
public void setDefaultEdgeProperties(final Map<String, String> defaultEdgeProperties) {
this.defaultEdgeProperties = defaultEdgeProperties;
}
public void setDefaultProperties(final Map<String, String> defaultProperties) {
this.defaultProperties = defaultProperties;
}
public String get() {
return start + body.toString() + end;
}
@Override
public String toString() {
return get();
}
public void addNode(final String id) {
addNode(id, new HashMap<>());
}
public void addNode(final String id, final String label) {
Map<String, String> properties = new HashMap<String, String>();
properties.put("label", label);
addNode(id, properties);
}
public void addNode(final String id, final Map<String, String> properties) {
addElement('"' + id + '"', extendNodeProperties(properties));
}
public void addEdge(final String source, final String target) {
addEdge(source, target, new HashMap<>());
}
public void addEdge(final String source, final String target, final String label) {
Map<String, String> properties = new HashMap<String, String>();
properties.put("label", label);
addEdge(source, target, properties);
}
public void addEdge(final String source, final String target, final Map<String, String> properties) {
addElement('"' + source + '"' + " -> " + '"' + target + '"', extendEdgeProperties(properties));
}
public void addSubgraph(final String subgraph) {
body.append(subgraph + '\n');
}
private void addElement(final String element, final Map<String, String> properties) {
body.append(element);
if (properties != null && !properties.isEmpty()) {
body.append(" [");
Joiner.on("\", ").withKeyValueSeparator("=\"").appendTo(body, properties);
body.append("\"]");
}
body.append('\n');
}
private Map<String, String> extendNodeProperties(final Map<String, String> properties) {
return extendElementProperties(properties, defaultNodeProperties);
}
private Map<String, String> extendEdgeProperties(final Map<String, String> properties) {
return extendElementProperties(properties, defaultEdgeProperties);
}
private Map<String, String> extendElementProperties(final Map<String, String> properties, final Map<String, String> defaultElementProperties) {
if (defaultElementProperties != null) {
for (Entry<String, String> property : defaultElementProperties.entrySet()) {
properties.putIfAbsent(property.getKey(), property.getValue());
}
}
if (defaultProperties != null) {
for (Entry<String, String> property : defaultProperties.entrySet()) {
properties.putIfAbsent(property.getKey(), property.getValue());
}
}
return properties;
}
}
package kieker.analysis.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.google.common.base.Joiner;
/**
* Simple class for building and representing dot graph files.
*
* @deprecated use {@link dot.DotWriter} instead.
*
* @author Sören Henning
*
*/
@Deprecated
public class DotBuilderSupport {
private final String start;
private final String end;
private final StringBuilder body = new StringBuilder();
private Map<String, String> defaultNodeProperties;
private Map<String, String> defaultEdgeProperties;
private Map<String, String> defaultProperties;
private static final String START_BRACKET = "{";
private static final String END_BRACKET = "}";
private static final String DEFAULT_GRAPH_NAME = "G";
private static final String DEFAULT_GRAPH_TYPE = "digraph";
public DotBuilderSupport() {
this(DEFAULT_GRAPH_NAME);
}
public DotBuilderSupport(final String graphName) {
this(graphName, DEFAULT_GRAPH_TYPE);
}
// TODO graphType has to be one of "graph", "digraph" or "subgraph" so maybe use an enum
public DotBuilderSupport(final String graphName, final String graphType) {
start = graphType + " " + graphName + " " + START_BRACKET + "\n";
end = END_BRACKET;
}
// TODO Deprecated
public DotBuilderSupport(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties) {
this(name);
this.defaultNodeProperties = defaultNodeProperties;
this.defaultEdgeProperties = defaultEdgeProperties;
}
// TODO Deprecated
public DotBuilderSupport(final String name, final Map<String, String> defaultNodeProperties, final Map<String, String> defaultEdgeProperties,
final Map<String, String> defaultProperties) {
this(name, defaultNodeProperties, defaultEdgeProperties);
this.defaultProperties = defaultProperties;
}
public void setDefaultNodeProperties(final Map<String, String> defaultNodeProperties) {
this.defaultNodeProperties = defaultNodeProperties;
}
public void setDefaultEdgeProperties(final Map<String, String> defaultEdgeProperties) {
this.defaultEdgeProperties = defaultEdgeProperties;
}
public void setDefaultProperties(final Map<String, String> defaultProperties) {
this.defaultProperties = defaultProperties;
}
public String get() {
return start + body.toString() + end;
}
@Override
public String toString() {
return get();
}
public void addNode(final String id) {
addNode(id, new HashMap<>());
}
public void addNode(final String id, final String label) {
Map<String, String> properties = new HashMap<String, String>();
properties.put("label", label);
addNode(id, properties);
}
public void addNode(final String id, final Map<String, String> properties) {
addElement('"' + id + '"', extendNodeProperties(properties));
}
public void addEdge(final String source, final String target) {
addEdge(source, target, new HashMap<>());
}
public void addEdge(final String source, final String target, final String label) {
Map<String, String> properties = new HashMap<String, String>();
properties.put("label", label);
addEdge(source, target, properties);
}
public void addEdge(final String source, final String target, final Map<String, String> properties) {
addElement('"' + source + '"' + " -> " + '"' + target + '"', extendEdgeProperties(properties));
}
public void addSubgraph(final String subgraph) {
body.append(subgraph + '\n');
}
private void addElement(final String element, final Map<String, String> properties) {
body.append(element);
if (properties != null && !properties.isEmpty()) {
body.append(" [");
Joiner.on("\", ").withKeyValueSeparator("=\"").appendTo(body, properties);
body.append("\"]");
}
body.append('\n');
}
private Map<String, String> extendNodeProperties(final Map<String, String> properties) {
return extendElementProperties(properties, defaultNodeProperties);
}
private Map<String, String> extendEdgeProperties(final Map<String, String> properties) {
return extendElementProperties(properties, defaultEdgeProperties);
}
private Map<String, String> extendElementProperties(final Map<String, String> properties, final Map<String, String> defaultElementProperties) {
if (defaultElementProperties != null) {
for (Entry<String, String> property : defaultElementProperties.entrySet()) {
properties.putIfAbsent(property.getKey(), property.getValue());
}
}
if (defaultProperties != null) {
for (Entry<String, String> property : defaultProperties.entrySet()) {
properties.putIfAbsent(property.getKey(), property.getValue());
}
}
return properties;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment