diff --git a/src/main/java/kieker/analysis/trace/traversal/AggrTrace2Blueprint.java b/src/main/java/kieker/analysis/trace/traversal/AggrTrace2Blueprint.java deleted file mode 100644 index c7a4306a14133be868a7ce535e02487ffa167c92..0000000000000000000000000000000000000000 --- a/src/main/java/kieker/analysis/trace/traversal/AggrTrace2Blueprint.java +++ /dev/null @@ -1,41 +0,0 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.impls.tg.TinkerGraph; - -import kieker.analysis.traceanalysisdomain.AggregatedOperationCall; - -public class AggrTrace2Blueprint extends OperationCallVisitor<AggregatedOperationCall> { - - private final Graph graph; - - public AggrTrace2Blueprint() { - super(); - this.graph = new TinkerGraph(); - } - - @Override - public void visit(final AggregatedOperationCall operationCall) { - - Vertex vertex = graph.addVertex(operationCall.hashCode()); - - vertex.setProperty("label", operationCall.getOperation()); - // TODO maybe more properties? - - AggregatedOperationCall parentCall = operationCall.getParent(); - - if (parentCall != null) { - Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); - if (parentVertex != null) { - graph.addEdge(null, parentVertex, vertex, ""); - } - } - - } - - public Graph getGraph() { - return graph; - } - -} diff --git a/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java new file mode 100644 index 0000000000000000000000000000000000000000..4b7b660363f688b19fd42f3e3abc11afad80aebe --- /dev/null +++ b/src/main/java/kieker/analysis/trace/traversal/AggrTraceToGraphTransformer.java @@ -0,0 +1,32 @@ +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.traceanalysisdomain.AggregatedOperationCall; + +public class AggrTraceToGraphTransformer extends AbstractTraceToGraphTransformer<AggregatedOperationCall> { + + @Override + protected Vertex addVertex(final AggregatedOperationCall operationCall) { + Vertex vertex = graph.addVertex(operationCall.hashCode()); + + vertex.setProperty("label", operationCall.getOperation()); + + return vertex; + } + + @Override + protected Edge addEdge(final AggregatedOperationCall operationCall, final AggregatedOperationCall parentOperationCall) { + + Vertex thisVertex = graph.getVertex(operationCall.hashCode()); + Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); + + if (thisVertex == null || parentVertex == null) { + return null; + } + + return graph.addEdge(null, parentVertex, thisVertex, ""); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java b/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java index 61247db17cdd7ddd2e931eb723fa4f15ed43f93b..9cb2f91b166b71d331fa5fc88b5e0747cbe292c7 100644 --- a/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java +++ b/src/main/java/kieker/analysis/trace/traversal/AggrTraceTraverserStage.java @@ -10,7 +10,7 @@ public class AggrTraceTraverserStage extends AbstractTransformation<AggregatedTr @Override protected void execute(final AggregatedTrace trace) { - AggrTrace2Blueprint aggrTrace2Blueprint = new AggrTrace2Blueprint(); + AggrTraceToGraphTransformer aggrTrace2Blueprint = new AggrTraceToGraphTransformer(); TraceTraverser<AggregatedTrace, AggregatedOperationCall> traverser = new TraceTraverser<>(aggrTrace2Blueprint); diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceToBlueprint.java b/src/main/java/kieker/analysis/trace/traversal/TraceToBlueprint.java deleted file mode 100644 index 526e3b7e90c03fc3c983bf017fba8eb5d8d07dc8..0000000000000000000000000000000000000000 --- a/src/main/java/kieker/analysis/trace/traversal/TraceToBlueprint.java +++ /dev/null @@ -1,41 +0,0 @@ -package kieker.analysis.trace.traversal; - -import com.tinkerpop.blueprints.Graph; -import com.tinkerpop.blueprints.Vertex; -import com.tinkerpop.blueprints.impls.tg.TinkerGraph; - -import kieker.analysis.traceanalysisdomain.OperationCall; - -public class TraceToBlueprint extends OperationCallVisitor<OperationCall> { - - private final Graph graph; - - public TraceToBlueprint() { - super(); - this.graph = new TinkerGraph(); - } - - @Override - public void visit(final OperationCall operationCall) { - - Vertex vertex = graph.addVertex(operationCall.hashCode()); - - vertex.setProperty("label", operationCall.getOperation()); - // TODO maybe more properties? - - OperationCall parentCall = operationCall.getParent(); - - if (parentCall != null) { - Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); - if (parentVertex != null) { - graph.addEdge(null, parentVertex, vertex, ""); - } - } - - } - - public Graph getGraph() { - return graph; - } - -} diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java new file mode 100644 index 0000000000000000000000000000000000000000..83abd319427d66dbf63e6f731b46f44509171fd7 --- /dev/null +++ b/src/main/java/kieker/analysis/trace/traversal/TraceToGraphTransformer.java @@ -0,0 +1,32 @@ +package kieker.analysis.trace.traversal; + +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Vertex; + +import kieker.analysis.traceanalysisdomain.OperationCall; + +public class TraceToGraphTransformer extends AbstractTraceToGraphTransformer<OperationCall> { + + @Override + protected Vertex addVertex(final OperationCall operationCall) { + Vertex vertex = graph.addVertex(operationCall.hashCode()); + + vertex.setProperty("label", operationCall.getOperation()); + + return vertex; + } + + @Override + protected Edge addEdge(final OperationCall operationCall, final OperationCall parentOperationCall) { + + Vertex thisVertex = graph.getVertex(operationCall.hashCode()); + Vertex parentVertex = graph.getVertex(operationCall.getParent().hashCode()); + + if (thisVertex == null || parentVertex == null) { + return null; + } + + return graph.addEdge(null, parentVertex, thisVertex, ""); + } + +} diff --git a/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java b/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java index 950a9a04782bfbaa05c2ea78df324909c266b96b..dd1e2c55e1f73e560b63bdb2fb62b3ba22dd2faf 100644 --- a/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java +++ b/src/main/java/kieker/analysis/trace/traversal/TraceTraverserStage.java @@ -10,15 +10,15 @@ public class TraceTraverserStage extends AbstractTransformation<Trace, NamedGrap @Override protected void execute(final Trace trace) { - TraceToBlueprint traceToBlueprint = new TraceToBlueprint(); + TraceToGraphTransformer traceToGraph = new TraceToGraphTransformer(); - TraceTraverser<Trace, OperationCall> traverser = new TraceTraverser<>(traceToBlueprint); + TraceTraverser<Trace, OperationCall> traverser = new TraceTraverser<>(traceToGraph); traverser.traverse(trace); String name = String.valueOf(trace.hashCode()); - NamedGraph graph = new NamedGraph(name, name, traceToBlueprint.getGraph()); + NamedGraph graph = new NamedGraph(name, name, traceToGraph.getGraph()); this.getOutputPort().send(graph); } diff --git a/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java b/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java index f8454abca121a29f87adf39b313820304f477847..c1abd011db95e23147289e7493f1b337cea780f3 100644 --- a/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java +++ b/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java @@ -62,6 +62,8 @@ public abstract class AbstractOperationCall<T extends AbstractOperationCall<T>> return this.children; } + public abstract T getParent(); + public final String getContainer() { return this.container; }