From 1288a236516975d47dfa18221ff905ed19c71b99 Mon Sep 17 00:00:00 2001
From: Henning Schmeink <hs344225@fh-muenster.de>
Date: Wed, 3 Nov 2021 20:37:19 +0100
Subject: [PATCH] Added prioritization packet, added parser for DSL, creates
 Lists for Tests and Flows

---
 .../Testgenerator/prioritization/Flow.java    |  15 ++
 .../Testgenerator/prioritization/Metrics.java |  17 ++
 .../prioritization/ParseFlows.java            |   5 +
 .../prioritization/ParseTests.java            |   5 +
 .../prioritization/PrioritizationService.java | 159 ++++++++++++++++++
 .../Testgenerator/prioritization/Test.java    |  17 ++
 6 files changed, 218 insertions(+)
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Flow.java
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Metrics.java
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseFlows.java
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseTests.java
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationService.java
 create mode 100644 Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Test.java

diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Flow.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Flow.java
new file mode 100644
index 0000000..7bf6cbe
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Flow.java
@@ -0,0 +1,15 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+import java.util.List;
+
+public class Flow {
+	public String flowName;
+	public List<String> withElements;
+	public List<String> withoutElements;
+	
+	public Flow(String flowName, List<String> withElements, List<String> withoutElements) {
+		this.flowName = flowName;
+		this.withElements = withElements;
+		this.withoutElements = withoutElements;
+	}
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Metrics.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Metrics.java
new file mode 100644
index 0000000..89157e8
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Metrics.java
@@ -0,0 +1,17 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+public class Metrics {
+	
+	public static void flowAffected() {
+	
+	}
+	
+	public static void testcaseAdded() {
+		
+	}
+	
+	public static void testcaseChanged() {
+		
+	}
+	
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseFlows.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseFlows.java
new file mode 100644
index 0000000..d25806f
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseFlows.java
@@ -0,0 +1,5 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+public class ParseFlows {
+
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseTests.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseTests.java
new file mode 100644
index 0000000..03f69af
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/ParseTests.java
@@ -0,0 +1,5 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+public class ParseTests {
+
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationService.java
new file mode 100644
index 0000000..8a7be63
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationService.java
@@ -0,0 +1,159 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class PrioritizationService {
+	
+	public static final String file1 = "D:\\VSProjects\\fe-pda-testing-tool\\OnlineSchuhDemo\\src\\main\\resources\\Testcollection1.bpmn-testgen";
+	
+	/**
+	 * TESTING STAGE
+	 * @return "test"
+	 * @throws IOException
+	 */
+	@RequestMapping(path = "/project/{projectId}/parse", method = RequestMethod.GET)
+	public String parseFile() throws IOException {
+		
+		// Testcollection1 einlesen
+		BufferedReader bufferedReaderTest = new BufferedReader(new FileReader(file1));
+		BufferedReader bufferedReaderFlow = new BufferedReader(new FileReader(file1));
+		List<Test> testList = createTestList(bufferedReaderTest);		
+		List<Flow> flowList = createFlowList(bufferedReaderFlow);
+
+		try {
+			
+			Test myTest = testList.get(0);
+			System.out.println("PRINT TEST 0 ==============");
+			System.out.println(myTest.testName);
+			System.out.println(Arrays.toString(myTest.variables.toArray()));
+			System.out.println(Arrays.toString(myTest.check.toArray()));
+			System.out.println(Arrays.toString(myTest.mocks.toArray()));
+			
+			Flow myFlow = flowList.get(0);
+			System.out.println("PRINT FLOW 0 ==============");
+			System.out.println(myFlow.flowName);
+			System.out.println(Arrays.toString(myFlow.withElements.toArray()));
+			System.out.println(Arrays.toString(myFlow.withoutElements.toArray()));
+		}
+		catch (Exception ex) {
+            System.out.println(ex.getMessage());
+        }
+		
+			
+		return "true";
+		
+	}
+	
+	/**
+	 * Diese Funktion durchläuft die Testcollection, welche im BufferdReader übergeben wurde. Auf 
+	 * Basis des Inhalts werden Flowobjekte erzeugt und der Liste hinzugefügt
+	 * @param 	bufferedReader
+	 * @return 	Liste mit den Testobjekten (Test.java)
+	 */
+	public List<Flow> createFlowList(BufferedReader bufferedReader) {
+		
+		List<Flow> flowList = new ArrayList<Flow>();
+		
+		String flowName;
+		List<String> withElements = new ArrayList<>();
+		List<String> withoutElements = new ArrayList<>();
+		
+		try {		
+			String line = bufferedReader.readLine();
+			
+			while(line != null) {
+			    line = bufferedReader.readLine();
+			    
+			    if(line.startsWith("Flow")) {
+			    	
+			    	flowName = line;
+			    	
+			    	while(!line.endsWith(";")) {
+			    		line = bufferedReader.readLine();
+			    		
+			    		if(line.contains("with elements")) 
+			    			withElements.add(line);
+			    		else if(line.contains("without elements"))
+			    			withoutElements.add(line);
+			    		
+			    		// Hier wird das Flowobjekt erzeugt
+			    		Flow flow = new Flow(flowName, withElements, withoutElements);
+			    		flowList.add(flow);
+			    	} 
+
+			    }
+			}
+        } 
+		catch (Exception ex) {
+            System.out.println(ex.getMessage());
+        }
+		
+		return flowList;
+			
+	}
+	
+	/**
+	 * Diese Funktion durchläuft die Testcollection, welche im BufferdReader übergeben wurde. Auf 
+	 * Basis des Inhalts werden Testobjekte erzeugt und der Liste hinzugefügt
+	 * @param 	bufferedReader
+	 * @return 	Liste mit den Testobjekten (Test.java)
+	 */
+	public List<Test> createTestList(BufferedReader bufferedReader) {
+		
+		List<Test> testList = new ArrayList<Test>();
+		String testName;
+		List<String> testVariables = new ArrayList<>();
+		List<String> testCheck = new ArrayList<>();
+		List<String> testMocks = new ArrayList<>();
+		
+		try {		
+			String line = bufferedReader.readLine();
+			
+			while(line != null) {
+			    line = bufferedReader.readLine();
+			    
+			    if(line.startsWith("Test")) {
+			    	
+			    	testName = line;
+			    	
+			    	while(!line.endsWith(";")) {
+			    		line = bufferedReader.readLine();
+			    		
+			    		if(line.contains("with variables")) 
+			    			testVariables.add(line);
+			    		else if(line.contains("with check"))
+			    			testCheck.add(line);
+			    		else if(line.contains("with mocks"))
+			    			testMocks.add(line);
+			    		
+			    		// Hier wird das Testobjekt erzeugt
+			    		Test test = new Test(testName, testVariables, testCheck, testMocks);
+			    		testList.add(test);			    		
+			    	} 
+
+			    }
+			}
+        } 
+		catch (Exception ex) {
+            System.out.println(ex.getMessage());
+        }
+		
+		return testList;
+			
+	}
+	
+	
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Test.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Test.java
new file mode 100644
index 0000000..c7a28b4
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/Test.java
@@ -0,0 +1,17 @@
+package de.fhmuenster.masterthesis.Testgenerator.prioritization;
+
+import java.util.List;
+
+public class Test {
+	public String testName;
+	public List<String> variables;
+	public List<String> check;
+	public List<String> mocks;
+	
+	public Test(String testName, List<String> variables, List<String> check, List<String> mocks) {
+		this.testName = testName;
+		this.variables = variables;
+		this.check = check;
+		this.mocks = mocks;
+	}
+}
-- 
GitLab