From 43e0534a12c6044fad7a36bcb6e45cfafa1c58da Mon Sep 17 00:00:00 2001
From: Florian Lambers <fl462057@fh-muenster.de>
Date: Mon, 8 Nov 2021 18:12:17 +0100
Subject: [PATCH] added wrapper classes

---
 .../migration/FlowChangeWrapper.java          |  2 +
 .../rest/service/change/ChangeController.java | 85 ++++++++++++++++++-
 .../src/main/resources/migration.yaml         |  1 +
 3 files changed, 87 insertions(+), 1 deletion(-)

diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
index 29bcbd5..43f943a 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
@@ -87,6 +87,8 @@ public class FlowChangeWrapper {
 		dto.setFlowElement(flowElementDTO);
 		
 		MigrationResultDTO migrationResultDTO = new MigrationResultDTO();
+		migrationResultDTO.setPriority(this.getMigrationResult().getPriority());
+		
 		migrationResultDTO.setPriority(this.getMigrationResult().getPriority());
 		migrationResultDTO.setStatus(this.getMigrationResult().getStatus().name());
 		
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
index bff32a1..dfdf51a 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
@@ -135,10 +135,93 @@ public class ChangeController {
 //		}
 		
 		matchingFlows = compareFlows(newFlowsElements, oldFlowsElements);
-//		System.out.println(matchingFlows);
+		System.out.println(matchingFlows);
 		return "false";
 	}
 	
+	private List<List<String>> compareFlows(List<List<String>> newFlowsElements, List<List<String>> oldFlowsElements) {
+		
+		
+		List <Integer> checkedFlowsOld = new ArrayList <Integer>();
+		
+		List <String> checkedElements = new ArrayList <String>();
+		
+		
+		//an Stelle [x][0] ist neuer Flow,  [x][1] alter Flow, [x][2] Gemeinsamkeiten, [x][3] Unterschiede
+		String [][] matchingFlows = new  String [newFlowsElements.size()][4];
+
+
+		int currentNewFlow = 0;
+		
+		for (List newFlow: newFlowsElements) {
+			
+			int currentOldFlow = 0;
+
+
+			for (List oldFlow: oldFlowsElements) {
+				int similarities = 0;
+				int differences = 0;
+				
+				if(checkedFlowsOld.contains(currentOldFlow));
+				
+				else {
+					
+				for (Object newFlowElement: newFlow) {
+					if((newFlowElement.toString().contains("Flow_"+currentNewFlow)&& newFlowElement.toString().length()==6) || checkedElements.contains(newFlowElement.toString())) {}
+					
+					else {
+
+						for (Object oldFlowElement: oldFlow) {
+					
+							if((oldFlowElement.toString().contains("Flow_"+currentOldFlow)&& oldFlowElement.toString().length()==6) || checkedElements.contains(oldFlowElement.toString())) {}
+							
+							else {
+								if(newFlowElement.equals(oldFlowElement)) {
+									similarities++;
+									checkedElements.add(newFlowElement.toString());
+									
+								}
+						
+							}
+						}
+					}
+				}  
+			}
+				//berechnen der Elemente, die aus dem alten und neuen Flow nicht zueinander gepasst haben
+				differences = oldFlow.size()-similarities + newFlow.size()-similarities;
+				
+//				System.out.println("Neuer Flow: "+ currentNewFlow+ " ; alter Flow: "+currentOldFlow+" ; similarities: "+similarities + " ; difference: "+ differences);
+				
+				// falls aktuell übprüfte Flow alt und neu Kombination die meisten Gemeinsamkeiten haben oder noch nichts in matchingFlows gespeichert wurde
+				if(matchingFlows[currentNewFlow][2]==null || Integer.parseInt(matchingFlows[currentNewFlow][2])<similarities ||  
+						(Integer.parseInt(matchingFlows[currentNewFlow][2])==similarities && Integer.parseInt(matchingFlows[currentNewFlow][3])> differences)) {
+			
+//						System.out.println(currentNewFlow +" "+ currentOldFlow +" "+ similarities+ " "+ differences);
+				
+						matchingFlows[currentNewFlow][0] = "Flow_"+currentNewFlow;
+						matchingFlows[currentNewFlow][1] = "Flow_"+currentOldFlow;
+						matchingFlows[currentNewFlow][2] = Integer.toString(similarities);
+						matchingFlows[currentNewFlow][3] = Integer.toString(differences);
+//						System.out.println("checked: "+checkedElements + " "+ checkedElements.size());
+
+				}
+				checkedElements = new ArrayList <String>();
+				
+				currentOldFlow++;
+
+			}
+			
+			currentNewFlow++;
+		}			
+		
+		for (int i=0; i<newFlowsElements.size();i++) {
+			System.out.println(matchingFlows[i][0]+"   "+matchingFlows[i][1]+"   "+matchingFlows[i][2]+"   "+matchingFlows[i][3]);
+			
+		}
+		return null;
+	}
+
+	
 	@RequestMapping(path = "/project/{projectId}/migration/changes", method = RequestMethod.GET)
 	public MigrationResultWrapperDTO detectChanges(@PathVariable(required = true) Long projectId) {
 		//Annahme: Flows stimmen überein
diff --git a/Testgenerator/src/main/resources/migration.yaml b/Testgenerator/src/main/resources/migration.yaml
index 7ba751b..8781b0b 100644
--- a/Testgenerator/src/main/resources/migration.yaml
+++ b/Testgenerator/src/main/resources/migration.yaml
@@ -27,3 +27,4 @@ activity:
       priority: 0
     manualTask:
       status: GREEN
+      priority: 0
\ No newline at end of file
-- 
GitLab