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