diff --git a/src/main/java/kieker/analysis/TraceAnalysis.java b/src/main/java/kieker/analysis/TraceAnalysis.java index a1af2225141ae7bbce562cc0b9d66bc2faf85f1a..2be3f3291dde9d61b42e3c9b1df89633a283c613 100644 --- a/src/main/java/kieker/analysis/TraceAnalysis.java +++ b/src/main/java/kieker/analysis/TraceAnalysis.java @@ -5,6 +5,11 @@ package kieker.analysis; import java.io.File; +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Graph; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.tg.TinkerGraph; + import teetime.framework.Execution; /** @@ -21,6 +26,19 @@ public final class TraceAnalysis { final Execution<TraceAnalysisConfiguration> analysis = new Execution<>(traceAnalysisConfiguration); analysis.executeBlocking(); + /* + * + * + * + * TODO + */ + + Graph graph = new TinkerGraph(); + + Vertex vertex = graph.addVertex(101); + + Edge edge = vertex.addEdge("Label", vertex); + } } diff --git a/src/main/java/kieker/analysis/domain/ComponentDependency.java b/src/main/java/kieker/analysis/domain/ComponentDependency.java index fc51d2f1f3a1da2a9ce10613ac479cff9d55620a..b237c11eff95d47593ba4cc9eb28296bfe1a0684 100644 --- a/src/main/java/kieker/analysis/domain/ComponentDependency.java +++ b/src/main/java/kieker/analysis/domain/ComponentDependency.java @@ -19,6 +19,16 @@ public class ComponentDependency { components.put(componentCall.getIdentifier(), componentCall); } + // TODO Better -> + + // TODO Add method in OperationCall to receive the key/identifier + String componentKey = operationCall.getContainer() + ',' + operationCall.getComponent(); + + if (!components.containsKey(componentKey)) { + components.put(componentKey, new ComponentCall(operationCall)); + } + + // TODO Add data to this ComonentCall } public void addRelation(final OperationsDependencyRelation relation) { diff --git a/src/main/java/kieker/analysis/graph/impl/EdgeImp.java b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java similarity index 71% rename from src/main/java/kieker/analysis/graph/impl/EdgeImp.java rename to src/main/java/kieker/analysis/graph/impl/EdgeImpl.java index fcf66bd41088f66225d9f274e9ecc3e0949bceed..126eec949cc4f4b900cc3642d693c1cd05816162 100644 --- a/src/main/java/kieker/analysis/graph/impl/EdgeImp.java +++ b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java @@ -2,7 +2,7 @@ package kieker.analysis.graph.impl; import kieker.analysis.graph.Edge; -class EdgeImp extends ElementImpl implements Edge { +class EdgeImpl extends ElementImpl implements Edge { // public Vertex getVertex(Direction direction) throws IllegalArgumentException; diff --git a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java index 6a1af0ef8ed0df07f6b6af5d52481ec6f832b65a..5f23f4cc54be5db30c35f45bc34800101f43f37a 100644 --- a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java @@ -1,33 +1,43 @@ package kieker.analysis.graph.impl; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; import java.util.Set; import kieker.analysis.graph.Element; abstract class ElementImpl implements Element { + protected Map<String, Object> properties = new HashMap<String, Object>(); + protected final String id; + protected final GraphImpl graph; // TODO Maybe Graph as type? + + protected ElementImpl(final String id, final GraphImpl graph) { + this.graph = graph; + this.id = id; + } + @Override + @SuppressWarnings("unchecked") public <T> T getProperty(final String key) { - // TODO Auto-generated method stub - return null; + return (T) this.properties.get(key); } @Override public Set<String> getPropertyKeys() { - // TODO Auto-generated method stub - return null; + return new HashSet<String>(this.properties.keySet()); } @Override public void setProperty(final String key, final Object value) { - // TODO Auto-generated method stub - + this.properties.put(key, value); } @Override + @SuppressWarnings("unchecked") public <T> T removeProperty(final String key) { - // TODO Auto-generated method stub - return null; + return (T) this.properties.remove(key); } @Override @@ -38,8 +48,7 @@ abstract class ElementImpl implements Element { @Override public Object getId() { - // TODO Auto-generated method stub - return null; + return this.id; } } diff --git a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java index c6bc37f577956056c6a979c76b44faa1ab4dbba6..faa216dc6f484db63a189d37ddb2476c01e0dee1 100644 --- a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java +++ b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java @@ -13,11 +13,26 @@ public class GraphImpl implements Graph { protected Map<String, Vertex> vertices = new HashMap<String, Vertex>(); protected Map<String, Edge> edges = new HashMap<String, Edge>(); + protected Long currentDefaultId = 0l; + public GraphImpl() {} @Override public Vertex addVertex(final Object id) { - // TODO Auto-generated method stub + String idString = null; + if (id == null) { + do { + idString = getDefaultId(); + } while (vertices.containsKey(idString)); + } else { + idString = id.toString(); + if (vertices.containsKey(idString)) { + // TODO Throw Exception ExceptionFactory.vertexWithIdAlreadyExists(id) + } + } + + Vertex vertex = new VertexImpl(idString, this); + vertices.put(vertex.getId().toString(), vertex); return null; } @@ -35,14 +50,34 @@ public class GraphImpl implements Graph { @Override public void removeVertex(final Vertex vertex) { - // TODO Auto-generated method stub + // TODO Check whether the vertex exists + + // TODO Remove all edges + + // TODO remove this vertex from map } @Override public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex) { - // TODO Auto-generated method stub - return null; + String idString = null; + if (id == null) { + do { + idString = getDefaultId(); + } while (edges.containsKey(idString)); + } else { + idString = id.toString(); + if (edges.containsKey(idString)) { + // TODO Throw Exception ExceptionFactory.edgeWithIdAlreadyExists(id) + } + } + + Edge edge = EdgeImpl(id, outVertex, inVertex, this); + edges.put(edge.getId().toString(), edge); + + // TODO Add Edge to vertices + + return edge; } @Override @@ -63,4 +98,13 @@ public class GraphImpl implements Graph { } + private String getDefaultId() { + String idString; + do { + idString = currentDefaultId.toString(); + currentDefaultId++; + } while (vertices.containsKey(idString) || edges.containsKey(idString)); + return idString; + } + }