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 29bcbd5f65bfe6950ff2287f415b342ead9b4f40..43f943a5600510924a3ae4bcd34980c30865f714 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 bff32a1275739ab8b3aa04bab4ef977e48a5f730..dfdf51a66bafbdb7da258f2f963628961d283fb0 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 7ba751b4e12d2aa0471ee96431fa103d36cb6979..8781b0b7bf0cf68def945a8c811999455d16c616 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