From 959c67bc488f50104e97910e5ded5afeb4b8b9a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de> Date: Fri, 13 May 2016 15:09:41 +0200 Subject: [PATCH] replaced SystemEntitySet by simple HashMap --- .../analysis/dev/DependencyCreator.java | 32 ++++--------------- .../analysis/dev/DependencyCreatorStage.java | 13 ++++---- .../domain/systemdependency/Component.java | 20 +++++++++--- .../domain/systemdependency/Container.java | 17 ++++++++-- .../domain/systemdependency/Operation.java | 3 +- .../systemdependency/SoftwareSystem.java | 15 +++++++-- 6 files changed, 55 insertions(+), 45 deletions(-) diff --git a/src/main/java/kieker/analysis/dev/DependencyCreator.java b/src/main/java/kieker/analysis/dev/DependencyCreator.java index 124ab890..d22e2a39 100644 --- a/src/main/java/kieker/analysis/dev/DependencyCreator.java +++ b/src/main/java/kieker/analysis/dev/DependencyCreator.java @@ -1,6 +1,9 @@ package kieker.analysis.dev; import kieker.analysis.domain.AggregatedOperationCall; +import kieker.analysis.domain.systemdependency.Component; +import kieker.analysis.domain.systemdependency.Container; +import kieker.analysis.domain.systemdependency.Operation; import kieker.analysis.domain.systemdependency.SoftwareSystem; import kieker.analysis.trace.traversal.OperationCallVisitor; @@ -15,32 +18,9 @@ public class DependencyCreator extends OperationCallVisitor<AggregatedOperationC @Override public void visit(final AggregatedOperationCall operationCall) { - // softwareSystem.getContainers().contains() - - // SystemEntitySet<Container> containers = softwareSystem.getContainers(); - // containers.add(new Container(operationCall.getContainer())); - // Container container = containers.getByName(operationCall.getContainer()); - // - // Component component; - // if (container.getComponents().containsByName(operationCall.getComponent())) { - // component = new Component(operationCall.getComponent(), container); - // } else { - // container.getComponents().add(component); //TODO - // } - // - - // ist container in software system? - // softwareSystem.getContainers().add(e) - // wenn nein -> hinzufügen - // getContainer - - // ist component in container? - // wenn nein -> hinzufügen - // getComponent - - // ist operation in component? - // wenn nein -> hinzufügen - // getOperation + Container calleeContainer = softwareSystem.addContainer(operationCall.getContainer()); + Component calleeComponent = calleeContainer.addComponent(operationCall.getComponent()); + Operation calleeOperation = calleeComponent.addOperation(operationCall.getOperation()); // Jetzt die Dependencies eintragen } diff --git a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java index 3fb0665b..9e825d5d 100644 --- a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java +++ b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java @@ -1,24 +1,25 @@ package kieker.analysis.dev; import kieker.analysis.domain.AggregatedTrace; -import kieker.analysis.domain.OperationsDependency; +import kieker.analysis.domain.systemdependency.SoftwareSystem; +import kieker.analysis.trace.traversal.TraceTraverser; import teetime.stage.basic.AbstractTransformation; -public class DependencyCreatorStage extends AbstractTransformation<AggregatedTrace, OperationsDependency> { +public class DependencyCreatorStage extends AbstractTransformation<AggregatedTrace, SoftwareSystem> { - private final OperationsDependency operationsDependency = new OperationsDependency(); - // private final DependencyCreator dependencyCreator = new DependencyCreator(operationsDependency); + private final SoftwareSystem softwareSystem = new SoftwareSystem(); + private final DependencyCreator dependencyCreator = new DependencyCreator(softwareSystem); @Override protected void execute(final AggregatedTrace trace) { - // new TraceTraverser<>(dependencyCreator).traverse(trace); + new TraceTraverser<>(dependencyCreator).traverse(trace); } @Override public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) - this.getOutputPort().send(operationsDependency); + this.getOutputPort().send(softwareSystem); super.onTerminating(); } diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Component.java b/src/main/java/kieker/analysis/domain/systemdependency/Component.java index 2820a411..f40c39a4 100644 --- a/src/main/java/kieker/analysis/domain/systemdependency/Component.java +++ b/src/main/java/kieker/analysis/domain/systemdependency/Component.java @@ -1,22 +1,32 @@ package kieker.analysis.domain.systemdependency; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + public class Component extends SystemEntity { private final Container container; - private final SystemEntitySet<Operation> operations = new SystemEntitySet<>(); + private final Map<String, Operation> operations = new HashMap<>(); - public Component(final String name, final Container container) { + protected Component(final String name, final Container container) { super(name, container.getIdentifier() + ',' + name); this.container = container; - container.getComponents().add(this); } public Container getContainer() { return container; } - public SystemEntitySet<Operation> getOperations() { - return operations; + public Collection<Operation> getOperations() { + return operations.values(); + } + + public Operation addOperation(final String name) { + if (this.operations.containsKey(name)) { + this.operations.put(name, new Operation(name, this)); + } + return this.operations.get(name); } } diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Container.java b/src/main/java/kieker/analysis/domain/systemdependency/Container.java index 152845e9..e4607505 100644 --- a/src/main/java/kieker/analysis/domain/systemdependency/Container.java +++ b/src/main/java/kieker/analysis/domain/systemdependency/Container.java @@ -1,15 +1,26 @@ package kieker.analysis.domain.systemdependency; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + public class Container extends SystemEntity { - private final SystemEntitySet<Component> components = new SystemEntitySet<>(); + private final Map<String, Component> components = new HashMap<>(); public Container(final String name) { super(name, name); } - public SystemEntitySet<Component> getComponents() { - return components; + public Collection<Component> getComponents() { + return components.values(); + } + + public Component addComponent(final String name) { + if (this.components.containsKey(name)) { + this.components.put(name, new Component(name, this)); + } + return this.components.get(name); } } diff --git a/src/main/java/kieker/analysis/domain/systemdependency/Operation.java b/src/main/java/kieker/analysis/domain/systemdependency/Operation.java index 7e36ddbb..af8c07eb 100644 --- a/src/main/java/kieker/analysis/domain/systemdependency/Operation.java +++ b/src/main/java/kieker/analysis/domain/systemdependency/Operation.java @@ -4,10 +4,9 @@ public class Operation extends SystemEntity { private final Component component; - public Operation(final String name, final Component component) { + protected Operation(final String name, final Component component) { super(name, component.getIdentifier() + ',' + name); this.component = component; - component.getOperations().add(this); } public Component getComponent() { diff --git a/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java b/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java index e615716e..d647aab0 100644 --- a/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java +++ b/src/main/java/kieker/analysis/domain/systemdependency/SoftwareSystem.java @@ -2,10 +2,12 @@ package kieker.analysis.domain.systemdependency; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; public class SoftwareSystem { - private final SystemEntitySet<Container> containers = new SystemEntitySet<>(); + private final Map<String, Container> containers = new HashMap<>(); private Collection<Dependency<Container>> containerDependencies = new ArrayList<>(); private Collection<Dependency<Component>> componentDependencies = new ArrayList<>(); @@ -13,8 +15,15 @@ public class SoftwareSystem { public SoftwareSystem() {} - public SystemEntitySet<Container> getContainers() { - return containers; + public Collection<Container> getContainers() { + return containers.values(); + } + + public Container addContainer(final String name) { + if (this.containers.containsKey(name)) { + this.containers.put(name, new Container(name)); + } + return this.containers.get(name); } public Collection<Dependency<Container>> getContainerDependencies() { -- GitLab