From 45dc1649de61e2fbf5f80b56d03bdfca570b4bd2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Walter?= <juergen.walter@uni-wuerzburg.de>
Date: Wed, 15 Feb 2017 15:59:00 +0100
Subject: [PATCH] renamings

not committed in previous commits
---
 .../connector/kieker/filter/KiekerReader.java |  69 -------
 .../KiekerAnalysisController.java             |   2 +-
 .../kieker/{ => util}/KiekerHelper.java       |  10 +-
 .../kieker/{ => util}/KiekerManager.java      |   3 +-
 .../connector/kieker/util/KiekerReader.java   | 189 ++++++++++++++++++
 .../{filter => util}/KiekerTraceLoader.java   | 116 +++++------
 .../kieker/{ => util}/ResourceMonitor.java    | 100 ++++-----
 7 files changed, 305 insertions(+), 184 deletions(-)
 delete mode 100644 tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerReader.java
 rename tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/{filter => util}/KiekerAnalysisController.java (98%)
 rename tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/{ => util}/KiekerHelper.java (98%)
 rename tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/{ => util}/KiekerManager.java (98%)
 create mode 100644 tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerReader.java
 rename tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/{filter => util}/KiekerTraceLoader.java (93%)
 rename tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/{ => util}/ResourceMonitor.java (90%)

diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerReader.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerReader.java
deleted file mode 100644
index 66bf661..0000000
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerReader.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package tools.descartes.dql.connector.kieker.filter;
-
-import kieker.analysis.AnalysisController;
-import kieker.analysis.IAnalysisController;
-import kieker.analysis.exception.AnalysisConfigurationException;
-import kieker.analysis.plugin.reader.filesystem.FSReader;
-import kieker.common.configuration.Configuration;;
-
-
-public class KiekerReader {
-	private final String[] inputDirs;
-
-	public KiekerReader(String[] inputDirs) {
-		if (inputDirs.length == 0) {
-			System.out.println("No directory given as argument");
-			System.exit(1);
-		}
-		this.inputDirs = inputDirs;
-	}
-
-	public String[] getInputDirs() {
-		return inputDirs;
-	}
-
-	public void read() {
-
-		// Create Kieker.Analysis instance
-		final IAnalysisController analysisInstance = new AnalysisController();
-
-		// Set filesystem monitoring log input directory for our analysis
-		final Configuration readerConfiguration = new Configuration();
-		readerConfiguration.setProperty(FSReader.CONFIG_PROPERTY_NAME_INPUTDIRS, Configuration.toProperty(inputDirs));
-		final FSReader fsReader = new FSReader(readerConfiguration, analysisInstance);
-
-		// Create and register our own consumer
-
-		// final Configuration exTimeFilterConfig = new Configuration();
-
-
-		final ResourceFilter resourceFilter = new ResourceFilter(new Configuration(), analysisInstance);
-		final UtilizationFilter utilizationFilter = new UtilizationFilter(new Configuration(), analysisInstance);
-		final ExecutionTimeFilter executionTimeFilter = new ExecutionTimeFilter(new Configuration(), analysisInstance);
-		final ClassAndInterfaceFilter responseTimeFilter = new ClassAndInterfaceFilter(new Configuration(), analysisInstance);
-
-
-
-		try {
-			// Connect components.
-
-			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, resourceFilter,
-					resourceFilter.INPUT_PORT_NAME);
-
-			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, utilizationFilter,
-					utilizationFilter.INPUT_PORT_NAME);
-
-			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, executionTimeFilter,
-					executionTimeFilter.INPUT_PORT_NAME);
-			
-			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, responseTimeFilter,
-					responseTimeFilter.INPUT_PORT_NAME);
-
-			// Start the analysis
-			analysisInstance.run();
-		} catch (final AnalysisConfigurationException e) {
-			e.printStackTrace();
-		}
-
-	}
-}
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerAnalysisController.java
similarity index 98%
rename from tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java
rename to tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerAnalysisController.java
index 944862c..795da04 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerAnalysisController.java
@@ -1,4 +1,4 @@
-package tools.descartes.dql.connector.kieker.filter;
+package tools.descartes.dql.connector.kieker.util;
 
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerHelper.java
similarity index 98%
rename from tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java
rename to tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerHelper.java
index 12487c8..efbdee3 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerHelper.java
@@ -1,4 +1,4 @@
-package tools.descartes.dql.connector.kieker;
+package tools.descartes.dql.connector.kieker.util;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -225,9 +225,9 @@ public class KiekerHelper {
 		// convert ts to millis
 		BigDecimal time = new BigDecimal(
 				((timeStamp - firstTimestamp) / 1000000.0));
-		BigDecimal resVal = new BigDecimal(value);
+		BigDecimal responsetime = new BigDecimal(value / 1000000.0);
 		e.setX(time);
-		e.setY(resVal);
+		e.setY(responsetime);
 		return e;
 	}
 	
@@ -248,7 +248,6 @@ public class KiekerHelper {
 				String component = getComponentString(identifier);
 				components.add(component);
 			}
-				
  		}
  		return new ArrayList<String>(components);
 	}
@@ -282,6 +281,9 @@ public class KiekerHelper {
 		 int i = 0;
 		for (Entity e : request.getEntities()) {
 			if (e.getEntityType().equals("SERVICE")) {
+					if(e.getIdentifier().contains("session") || e.getAlias().contains("session")){
+						continue;
+					}
 					String component = getComponentString(e.getIdentifier());
 					String identifier = hostname + " & " + component;
 					readerConfig.setProperty("COMPONENT_c" + i, identifier);
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerManager.java
similarity index 98%
rename from tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java
rename to tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerManager.java
index fb1320e..f063db6 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerManager.java
@@ -1,4 +1,4 @@
-package tools.descartes.dql.connector.kieker;
+package tools.descartes.dql.connector.kieker.util;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -12,7 +12,6 @@ import org.apache.log4j.Logger;
 
 import kieker.common.configuration.Configuration;
 import tools.descartes.dql.connector.kieker.configgenerator.XMLGenerationManager;
-import tools.descartes.dql.connector.kieker.filter.KiekerAnalysisController;
 import tools.descartes.dql.connector.kieker.structures.Component;
 import tools.descartes.dql.connector.kieker.structures.Trace;
 import tools.descartes.dql.connector.kieker.structures.records.EventRecord;
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerReader.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerReader.java
new file mode 100644
index 0000000..3834215
--- /dev/null
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerReader.java
@@ -0,0 +1,189 @@
+package tools.descartes.dql.connector.kieker.util;
+
+import java.util.concurrent.TimeUnit;
+
+import kieker.analysis.AnalysisController;
+import kieker.analysis.IAnalysisController;
+import kieker.analysis.analysisComponent.AbstractAnalysisComponent;
+import kieker.analysis.exception.AnalysisConfigurationException;
+import kieker.analysis.plugin.filter.flow.EventRecordTraceReconstructionFilter;
+import kieker.analysis.plugin.filter.forward.StringBufferFilter;
+import kieker.analysis.plugin.filter.select.TraceIdFilter;
+import kieker.analysis.plugin.reader.filesystem.FSReader;
+import kieker.analysis.repository.AbstractRepository;
+import kieker.common.configuration.Configuration;
+import kieker.tools.traceAnalysis.Constants;
+import kieker.tools.traceAnalysis.filter.AbstractMessageTraceProcessingFilter;
+import kieker.tools.traceAnalysis.filter.AbstractTraceAnalysisFilter;
+import kieker.tools.traceAnalysis.filter.executionRecordTransformation.ExecutionRecordTransformationFilter;
+import kieker.tools.traceAnalysis.filter.flow.EventRecordTraceCounter;
+import kieker.tools.traceAnalysis.filter.flow.TraceEventRecords2ExecutionAndMessageTraceFilter;
+import kieker.tools.traceAnalysis.filter.traceReconstruction.TraceReconstructionFilter;
+import kieker.tools.traceAnalysis.systemModel.repository.SystemModelRepository;
+import tools.descartes.dql.connector.kieker.filter.ClassAndInterfaceFilter;
+import tools.descartes.dql.connector.kieker.filter.ExecutionTimeFilter;
+import tools.descartes.dql.connector.kieker.filter.ResourceFilter;
+import tools.descartes.dql.connector.kieker.filter.SessionFilter;
+import tools.descartes.dql.connector.kieker.filter.UtilizationFilter;;
+
+
+public class KiekerReader {
+	private final String[] inputDirs;
+
+	public KiekerReader(String[] inputDirs) {
+		if (inputDirs.length == 0) {
+			System.out.println("No directory given as argument");
+			System.exit(1);
+		}
+		this.inputDirs = inputDirs;
+	}
+
+	public String[] getInputDirs() {
+		return inputDirs;
+	}
+
+	public void read() {
+
+		// Create Kieker.Analysis instance
+		final IAnalysisController analysisInstance = new AnalysisController();
+
+		// Set filesystem monitoring log input directory for our analysis
+		final Configuration readerConfiguration = new Configuration();
+		readerConfiguration.setProperty(FSReader.CONFIG_PROPERTY_NAME_INPUTDIRS, Configuration.toProperty(inputDirs));
+		final FSReader fsReader = new FSReader(readerConfiguration, analysisInstance);
+
+		// Create and register our own consumer
+
+		// final Configuration exTimeFilterConfig = new Configuration();
+
+
+		final ResourceFilter resourceFilter = new ResourceFilter(new Configuration(), analysisInstance);
+		final UtilizationFilter utilizationFilter = new UtilizationFilter(new Configuration(), analysisInstance);
+		final ExecutionTimeFilter executionTimeFilter = new ExecutionTimeFilter(new Configuration(), analysisInstance);
+		final SessionFilter sessionFilter = new SessionFilter(new Configuration(), analysisInstance);
+		final ClassAndInterfaceFilter classAndInterfaceFilter = new ClassAndInterfaceFilter(new Configuration(), analysisInstance);
+
+
+
+		try {
+			// Connect components.
+
+			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, resourceFilter,
+					resourceFilter.INPUT_PORT_NAME);
+
+			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, utilizationFilter,
+					utilizationFilter.INPUT_PORT_NAME);
+
+			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, executionTimeFilter,
+					executionTimeFilter.INPUT_PORT_NAME);
+			
+			analysisInstance.connect(fsReader, FSReader.OUTPUT_PORT_NAME_RECORDS, classAndInterfaceFilter,
+					classAndInterfaceFilter.INPUT_PORT_NAME);
+			
+			final SystemModelRepository systemModelRepository = new SystemModelRepository(
+					new Configuration(), analysisInstance);
+			addSessionFilter(analysisInstance, fsReader, systemModelRepository);
+
+			// Start the analysis
+			analysisInstance.run();
+		} catch (final AnalysisConfigurationException e) {
+			e.printStackTrace();
+		}
+
+	}
+	
+	private void addSessionFilter(IAnalysisController analysisController, FSReader reader, AbstractRepository systemModelRepository) throws IllegalStateException, AnalysisConfigurationException{
+		TraceReconstructionFilter mtReconstrFilter = null;
+		EventRecordTraceReconstructionFilter eventTraceReconstructionFilter = null;
+		TraceEventRecords2ExecutionAndMessageTraceFilter traceEvents2ExecutionAndMessageTraceFilter = null;
+
+		// Unify Strings
+		final StringBufferFilter stringBufferFilter = new StringBufferFilter(new Configuration(), analysisController);
+		analysisController.connect(reader, FSReader.OUTPUT_PORT_NAME_RECORDS, stringBufferFilter,
+				StringBufferFilter.INPUT_PORT_NAME_EVENTS);
+
+		final ExecutionRecordTransformationFilter execRecTransformer;
+		{ // NOCS (nested block)
+			// Create the execution record transformation filter and connect to
+			// the trace ID filter's output port
+			final Configuration execRecTransformerConfig = new Configuration();
+			execRecTransformerConfig.setProperty(AbstractAnalysisComponent.CONFIG_NAME,
+					Constants.EXEC_TRACE_RECONSTR_COMPONENT_NAME);
+			execRecTransformer = new ExecutionRecordTransformationFilter(execRecTransformerConfig, analysisController);
+			analysisController.connect(reader, FSReader.OUTPUT_PORT_NAME_RECORDS, execRecTransformer,
+					ExecutionRecordTransformationFilter.INPUT_PORT_NAME_RECORDS);
+			analysisController.connect(execRecTransformer,
+					AbstractTraceAnalysisFilter.REPOSITORY_PORT_NAME_SYSTEM_MODEL, systemModelRepository);
+		}
+
+		{ // NOCS (nested block)
+			// Create the trace reconstruction filter and connect to the record
+			// transformation filter's output port
+			final Configuration mtReconstrFilterConfig = new Configuration();
+			mtReconstrFilterConfig.setProperty(AbstractAnalysisComponent.CONFIG_NAME,
+					Constants.TRACERECONSTR_COMPONENT_NAME);
+			mtReconstrFilterConfig.setProperty(TraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT,
+					TimeUnit.MILLISECONDS.name());
+			// mtReconstrFilterConfig.setProperty(TraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION,
+			// Integer.toString(maxTraceDurationMillis));
+			mtReconstrFilterConfig.setProperty(TraceReconstructionFilter.CONFIG_PROPERTY_NAME_IGNORE_INVALID_TRACES,
+					Boolean.toString(true));
+			mtReconstrFilter = new TraceReconstructionFilter(mtReconstrFilterConfig, analysisController);
+			analysisController.connect(mtReconstrFilter, AbstractTraceAnalysisFilter.REPOSITORY_PORT_NAME_SYSTEM_MODEL,
+					systemModelRepository);
+			analysisController.connect(execRecTransformer,
+					ExecutionRecordTransformationFilter.OUTPUT_PORT_NAME_EXECUTIONS, mtReconstrFilter,
+					TraceReconstructionFilter.INPUT_PORT_NAME_EXECUTIONS);
+		}
+
+		{ // NOCS (nested block)
+			// Create the event record trace generation filter and connect to
+			// the trace ID filter's output port
+			final Configuration configurationEventRecordTraceGenerationFilter = new Configuration();
+			configurationEventRecordTraceGenerationFilter.setProperty(AbstractAnalysisComponent.CONFIG_NAME,
+					Constants.EVENTRECORDTRACERECONSTR_COMPONENT_NAME);
+			configurationEventRecordTraceGenerationFilter.setProperty(
+					EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.MILLISECONDS.name());
+			// configurationEventRecordTraceGenerationFilter.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION,
+			// Long.toString(maxTraceDurationMillis));
+			configurationEventRecordTraceGenerationFilter.setProperty(
+					EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_REPAIR_EVENT_BASED_TRACES,
+					Boolean.toString(true));
+			eventTraceReconstructionFilter = new EventRecordTraceReconstructionFilter(
+					configurationEventRecordTraceGenerationFilter, analysisController);
+
+			analysisController.connect(reader, FSReader.OUTPUT_PORT_NAME_RECORDS,
+					eventTraceReconstructionFilter, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TRACE_RECORDS);
+		}
+		
+		{ // NOCS (nested block)
+			// Create the event trace to execution/message trace transformation
+			// filter and connect its input to the event record trace generation
+			// filter's output
+			// port
+			final Configuration configurationEventTrace2ExecutionTraceFilter = new Configuration();
+			configurationEventTrace2ExecutionTraceFilter.setProperty(AbstractAnalysisComponent.CONFIG_NAME,
+					Constants.EXECTRACESFROMEVENTTRACES_COMPONENT_NAME);
+			// configurationEventTrace2ExecutionTraceFilter.setProperty(TraceEventRecords2ExecutionAndMessageTraceFilter.CONFIG_IGNORE_ASSUMED,
+			// Boolean.toString(ignoreAssumedCalls));
+			// EventTrace2ExecutionTraceFilter has no configuration properties
+			traceEvents2ExecutionAndMessageTraceFilter = new TraceEventRecords2ExecutionAndMessageTraceFilter(
+					configurationEventTrace2ExecutionTraceFilter, analysisController);
+
+			analysisController.connect(eventTraceReconstructionFilter,
+					EventRecordTraceReconstructionFilter.OUTPUT_PORT_NAME_TRACE_VALID,
+					traceEvents2ExecutionAndMessageTraceFilter,
+					TraceEventRecords2ExecutionAndMessageTraceFilter.INPUT_PORT_NAME_EVENT_TRACE);
+			analysisController.connect(traceEvents2ExecutionAndMessageTraceFilter,
+					AbstractTraceAnalysisFilter.REPOSITORY_PORT_NAME_SYSTEM_MODEL, systemModelRepository);
+		}
+
+		
+		SessionFilter sessionFilter = new SessionFilter(new Configuration(), analysisController);
+		analysisController.connect(mtReconstrFilter, TraceReconstructionFilter.OUTPUT_PORT_NAME_MESSAGE_TRACE,
+				sessionFilter, AbstractMessageTraceProcessingFilter.INPUT_PORT_NAME_MESSAGE_TRACES);
+		analysisController.connect(traceEvents2ExecutionAndMessageTraceFilter,
+				TraceEventRecords2ExecutionAndMessageTraceFilter.OUTPUT_PORT_NAME_MESSAGE_TRACE, sessionFilter,
+				AbstractMessageTraceProcessingFilter.INPUT_PORT_NAME_MESSAGE_TRACES);
+	}
+}
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerTraceLoader.java
similarity index 93%
rename from tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java
rename to tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerTraceLoader.java
index 06f4e68..549f1fb 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/KiekerTraceLoader.java
@@ -1,58 +1,58 @@
-package tools.descartes.dql.connector.kieker.filter;
-
-import java.io.File;
-
-import tools.descartes.dql.connector.kieker.structures.Trace;
-import tools.descartes.dql.connector.kieker.structures.classes.ClassMap;
-import tools.descartes.dql.connector.kieker.structures.cpu.CpuMap;
-import tools.descartes.dql.connector.kieker.structures.interfaces.InterfaceMap;
-import tools.descartes.dql.connector.kieker.structures.resources.ResourceMap;
-
-public class KiekerTraceLoader {
-	private Trace trace;
-
-	public KiekerTraceLoader(Trace trace) {
-		this.trace=trace;
-	}
-
-	public KiekerTraceLoader() {
-	}
-
-	public Trace loadKiekerTraceFromFile(File kiekerTraceFile) {
-		if (!(kiekerTraceFile == null || !kiekerTraceFile.canRead())) {
-			System.out.println("invalid filepath given, system will shutdown");
-			System.exit(1);
-		}
-		String[] dir = new String[] { kiekerTraceFile.getAbsolutePath() };
-		return loadKiekerTraceFromDirectories(dir);
-	}
-
-	public Trace loadKiekerTraceFromDirectories(String[] kiekerInputDirs) {
-		clearMaps();
-		KiekerReader kiekerReader = new KiekerReader(kiekerInputDirs);
-		kiekerReader.read();
-		return fetchInformationFromMaps();
-	}
-	
-	private void clearMaps(){
-		ClassMap.getInstance().clear();
-		InterfaceMap.getInstance().clear();
-		ResourceMap.getInstance().clear();
-		CpuMap.getInstance().clear();
-	}
-
-	private Trace fetchInformationFromMaps() {
-		if (trace == null) {
-			trace = new Trace();
-		}
-		ClassMap.getInstance().pushToTrace(trace);
-		InterfaceMap.getInstance().pushToTrace(trace);
-		ResourceMap.getInstance().pushToTrace(trace);
-		CpuMap.getInstance().pushToTrace(trace);
-		// MemSwapMap.getInstance().pushToTrace(trace);
-		// more information can be included from other Maps
-		return trace;
-	}
-	
-	
-}
+package tools.descartes.dql.connector.kieker.util;
+
+import java.io.File;
+
+import tools.descartes.dql.connector.kieker.structures.Trace;
+import tools.descartes.dql.connector.kieker.structures.classes.ClassMap;
+import tools.descartes.dql.connector.kieker.structures.cpu.CpuMap;
+import tools.descartes.dql.connector.kieker.structures.interfaces.InterfaceMap;
+import tools.descartes.dql.connector.kieker.structures.resources.ResourceMap;
+
+public class KiekerTraceLoader {
+	private Trace trace;
+
+	public KiekerTraceLoader(Trace trace) {
+		this.trace=trace;
+	}
+
+	public KiekerTraceLoader() {
+	}
+
+	public Trace loadKiekerTraceFromFile(File kiekerTraceFile) {
+		if (!(kiekerTraceFile == null || !kiekerTraceFile.canRead())) {
+			System.out.println("invalid filepath given, system will shutdown");
+			System.exit(1);
+		}
+		String[] dir = new String[] { kiekerTraceFile.getAbsolutePath() };
+		return loadKiekerTraceFromDirectories(dir);
+	}
+
+	public Trace loadKiekerTraceFromDirectories(String[] kiekerInputDirs) {
+		clearMaps();
+		KiekerReader kiekerReader = new KiekerReader(kiekerInputDirs);
+		kiekerReader.read();
+		return fetchInformationFromMaps();
+	}
+	
+	private void clearMaps(){
+		ClassMap.getInstance().clear();
+		InterfaceMap.getInstance().clear();
+		ResourceMap.getInstance().clear();
+		CpuMap.getInstance().clear();
+	}
+
+	private Trace fetchInformationFromMaps() {
+		if (trace == null) {
+			trace = new Trace();
+		}
+		ClassMap.getInstance().pushToTrace(trace);
+		InterfaceMap.getInstance().pushToTrace(trace);
+		ResourceMap.getInstance().pushToTrace(trace);
+		CpuMap.getInstance().pushToTrace(trace);
+		// MemSwapMap.getInstance().pushToTrace(trace);
+		// more information can be included from other Maps
+		return trace;
+	}
+	
+	
+}
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/ResourceMonitor.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/ResourceMonitor.java
similarity index 90%
rename from tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/ResourceMonitor.java
rename to tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/ResourceMonitor.java
index 0f78137..8abd9c5 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/ResourceMonitor.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/util/ResourceMonitor.java
@@ -1,51 +1,51 @@
-package tools.descartes.dql.connector.kieker;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.InputStreamReader;
-import java.util.concurrent.TimeUnit;
-
-import kieker.monitoring.core.controller.IMonitoringController;
-import kieker.monitoring.core.controller.MonitoringController;
-import kieker.monitoring.sampler.sigar.ISigarSamplerFactory;
-import kieker.monitoring.sampler.sigar.SigarSamplerFactory;
-import kieker.monitoring.sampler.sigar.samplers.CPUsDetailedPercSampler;
-import kieker.monitoring.sampler.sigar.samplers.MemSwapUsageSampler;
-
-public final class ResourceMonitor {
-	static Process p;
-	
-	static void startResourceMonitor(String pathToKieker, String pathToConfig)
-	{
-		char quotationMarks = '"';
-		try {
-			
-			String command = "java -cp " 
-			+quotationMarks + pathToKieker +File.separator+ "lib"+File.separator+"*"+quotationMarks+";"
-			+quotationMarks + pathToKieker +File.separator+ "lib"+File.separator+"sigar"+File.separator+"*"+quotationMarks+";"
-			+quotationMarks + pathToKieker +File.separator+ "build"+File.separator+"libs"+File.separator+"*"+quotationMarks+";"
-			+quotationMarks + pathToConfig +File.separator+"*"+quotationMarks+";"
-			+quotationMarks + pathToKieker +File.separator+ "bin"+quotationMarks
-			+" kieker.tools.resourceMonitor.ResourceMonitor";
-			
-			System.out.println("CMD:"+command);
-			p = Runtime.getRuntime()
-					.exec(command);
-			String line;
-			BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
-			/*while ((line = in.readLine()) != null) {
-				System.out.println(line);
-			}*/
-			in.close();
-		} catch (Exception e) {
-			System.out.println(e.getMessage());
-			e.printStackTrace();
-			throw new IllegalStateException("Could not execute application with kieker");
-		}
-		
-	}
-	
-	static void stopRessourceMonitor(){
-		p.destroy();
-	}
+package tools.descartes.dql.connector.kieker.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.util.concurrent.TimeUnit;
+
+import kieker.monitoring.core.controller.IMonitoringController;
+import kieker.monitoring.core.controller.MonitoringController;
+import kieker.monitoring.sampler.sigar.ISigarSamplerFactory;
+import kieker.monitoring.sampler.sigar.SigarSamplerFactory;
+import kieker.monitoring.sampler.sigar.samplers.CPUsDetailedPercSampler;
+import kieker.monitoring.sampler.sigar.samplers.MemSwapUsageSampler;
+
+public final class ResourceMonitor {
+	static Process p;
+	
+	public static void startResourceMonitor(String pathToKieker, String pathToConfig)
+	{
+		char quotationMarks = '"';
+		try {
+			
+			String command = "java -cp " 
+			+quotationMarks + pathToKieker +File.separator+ "lib"+File.separator+"*"+quotationMarks+";"
+			+quotationMarks + pathToKieker +File.separator+ "lib"+File.separator+"sigar"+File.separator+"*"+quotationMarks+";"
+			+quotationMarks + pathToKieker +File.separator+ "build"+File.separator+"libs"+File.separator+"*"+quotationMarks+";"
+			+quotationMarks + pathToConfig +File.separator+"*"+quotationMarks+";"
+			+quotationMarks + pathToKieker +File.separator+ "bin"+quotationMarks
+			+" kieker.tools.resourceMonitor.ResourceMonitor";
+			
+			System.out.println("CMD:"+command);
+			p = Runtime.getRuntime()
+					.exec(command);
+			String line;
+			BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+			/*while ((line = in.readLine()) != null) {
+				System.out.println(line);
+			}*/
+			in.close();
+		} catch (Exception e) {
+			System.out.println(e.getMessage());
+			e.printStackTrace();
+			throw new IllegalStateException("Could not execute application with kieker");
+		}
+		
+	}
+	
+	static void stopRessourceMonitor(){
+		p.destroy();
+	}
 }
\ No newline at end of file
-- 
GitLab