Skip to content
Snippets Groups Projects
Commit 55c4c05c authored by Till Josef Brinkhus's avatar Till Josef Brinkhus
Browse files

Code aus ChangeController teilweise in ChangeService ausgelagert

parent da4573fe
No related branches found
No related tags found
No related merge requests found
...@@ -3,9 +3,6 @@ package de.sample.onlineschuhdemo; ...@@ -3,9 +3,6 @@ package de.sample.onlineschuhdemo;
public class ManualTasks { public class ManualTasks {
public static final String WARE_EINSORTIEREN = "Ware_einsortieren"; public static final String WARE_EINSORTIEREN = "Ware_einsortieren";
public static final String NEW_TASK_1 = "New_Task_1";
public static final String NEW_TASK_2 = "New_Task_2";
public static final String NEW_FLOW_2 = "New_Flow_2";
public static final String WARE_AUSPACKEN_NORMAL = "Ware_auspacken_normal"; public static final String WARE_AUSPACKEN_NORMAL = "Ware_auspacken_normal";
public static final String WARE_AUSPACKEN_LUXUS = "Ware_auspacken_luxus"; public static final String WARE_AUSPACKEN_LUXUS = "Ware_auspacken_luxus";
......
...@@ -127,6 +127,15 @@ without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flo ...@@ -127,6 +127,15 @@ without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flo
Flow Flow_11 for process Flow Flow_11 for process
with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ] with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ; without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
Flow Flow_12 for process
with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
Flow Flow_13 for process
with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
Flow Flow_14 for process
with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
DelegateMock Warennummer_ermitteln for Warennummer_ermitteln with delegate "de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate" with manual "de.sample.onlineschuhdemo.externalaccess.LagerService" by setter "setLagerService" ; DelegateMock Warennummer_ermitteln for Warennummer_ermitteln with delegate "de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate" with manual "de.sample.onlineschuhdemo.externalaccess.LagerService" by setter "setLagerService" ;
......
...@@ -54,141 +54,34 @@ public class ChangeController { ...@@ -54,141 +54,34 @@ public class ChangeController {
@Autowired @Autowired
private FlowService flowService; private FlowService flowService;
@Autowired @Autowired
private TestService testService; private ChangeService changeService;
@Autowired @Autowired
private MigrationService migrationService; private MigrationService migrationService;
@RequestMapping(path = "/project/{projectId}/match", method = RequestMethod.GET) @RequestMapping(path = "/project/{projectId}/match", method = RequestMethod.GET)
public void getNewFlows(@PathVariable(required = true) Long projectId) { public void getNewFlows(@PathVariable(required = true) Long projectId) {
boolean success = true;
List <List<String>> newFlowsElements = new ArrayList<List<String>>();
List <List<String>> oldFlowsElements = new ArrayList<List<String>>();
//neue Flow ist erste Element, alte Flow zweite
// String[] keywords = { "Flow Flow_", "with elements", "without elements"};
// try {
// BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\Testcollection1.bpmn-testgen"));
// String line = reader.readLine();
// while(line !=null)
// {
// for(int i = 0 ; i<keywords.length;i++){
// if(line.startsWith(keywords[i])){
// System.out.println(line);
// }
// }
// line=reader.readLine();
// }
// } catch (Exception ex) {
// System.out.println(ex.getMessage());
// }
Project projectForId = projectService.getProjectForId(projectId); Project projectForId = projectService.getProjectForId(projectId);
//speichern von neuen Flow Elementen aller Flows //speichern aller neuen Flows
List<Flow> newFlows = flowService.getFlows(projectForId.getProjectDirectories()); List<Flow> newFlows = flowService.getFlows(projectForId.getProjectDirectories());
//Pfad zu alten Flows und Speichern aller alten Flows
//für alte Flows
String pathOld = "C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\MatchingTestcollectionOld.bpmn-testgen"; String pathOld = "C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\MatchingTestcollectionOld.bpmn-testgen";
List<Flow> oldFlows = flowService.getOldFlows(pathOld); List<Flow> oldFlows = flowService.getOldFlows(pathOld);
Flow [][] matchingFlows = new Flow [newFlows.size()][]; Flow [][] matchingFlows = changeService.compareFlows(newFlows, oldFlows);
// for (int i=0; i<newFlows.size();i++) {
matchingFlows = compareFlows(newFlows, oldFlows); // System.out.println(matchingFlows[i][0]+" "+matchingFlows[i][1]);
} //
// }
}
private Flow[][] compareFlows(List<Flow> newFlows, List<Flow> oldFlows) {
//hier werden die Flows gespeichert, die zurückgegeben werden. [x][0] -> Flow neu, [x][1] -> passender Flow alt
Flow [][] matchingFlows = new Flow [newFlows.size()][2];
List <Integer> checkedFlowsOld = new ArrayList <Integer>();
List <String> checkedElements = new ArrayList <String>();
int currentNewFlow = 0;
for (Flow newFlow: newFlows) {
EList<FlowElementReference> newFlowElements = newFlow.getInclElements();
int mostSimilarities = 0;
int leastDifferences = 10000;
int currentOldFlow = 0;
for (Flow oldFlow: oldFlows) {
EList<FlowElementReference> oldFlowElements = oldFlow.getInclElements();
int similarities = 0;
int differences = 0;
if(checkedFlowsOld.contains(currentOldFlow));
else {
for (FlowElementReference newFlowElement: newFlowElements) {
if(checkedElements.contains(newFlowElement.getRef().getName())) {}
else {
for (FlowElementReference oldFlowElement: oldFlowElements) {
if(checkedElements.contains(oldFlowElement.getRef().getName())) {}
else {
if(newFlowElement.getRef().getName().equals(oldFlowElement.getRef().getName())) {
similarities++;
checkedElements.add(newFlowElement.getRef().getName());
}
}
}
}
}
}
//berechnen der Elemente, die aus dem alten und neuen Flow nicht zueinander gepasst haben
differences = oldFlow.getInclElements().size()-similarities + newFlow.getInclElements().size()-similarities;
// falls aktuell übprüfte Flow alt und neu Kombination die meisten Gemeinsamkeiten haben oder noch nichts in matchingFlows gespeichert wurde
if(mostSimilarities<similarities || (mostSimilarities==similarities && leastDifferences> differences)) {
mostSimilarities=similarities;
leastDifferences = differences;
matchingFlows[currentNewFlow][0] = newFlow;
matchingFlows[currentNewFlow][1] = oldFlow;
}
checkedElements = new ArrayList <String>();
currentOldFlow++;
}
currentNewFlow++;
}
return matchingFlows;
}
@RequestMapping(path = "/project/{projectId}/migration/changes", method = RequestMethod.GET) @RequestMapping(path = "/project/{projectId}/migration/changes", method = RequestMethod.GET)
......
package de.fhmuenster.masterthesis.Testgenerator.rest.service.change;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.emf.common.util.EList;
import org.springframework.stereotype.Service;
import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories;
import de.fhmuenster.masterthesis.Testgenerator.rest.service.test.FlowNotFoundException;
import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils;
import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElementReference;
import de.fhmuenster.masterthesis.testgeneratorDSL.Loop;
import de.fhmuenster.masterthesis.testgeneratorDSL.ServiceTaskFlowElement;
@Service
public class ChangeService {
public ChangeService() {
}
public Flow[][] compareFlows(List<Flow> newFlows, List<Flow> oldFlows) {
//hier werden die Flows gespeichert, die zurückgegeben werden. [x][0] -> Flow neu, [x][1] -> passender Flow alt
Flow [][] matchingFlows = new Flow [newFlows.size()][2];
List <Integer> checkedFlowsOld = new ArrayList <Integer>();
List <String> checkedElements = new ArrayList <String>();
int currentNewFlow = 0;
for (Flow newFlow: newFlows) {
EList<FlowElementReference> newFlowElements = newFlow.getInclElements();
int mostSimilarities = 0;
int leastDifferences = 10000;
int currentOldFlow = 0;
for (Flow oldFlow: oldFlows) {
EList<FlowElementReference> oldFlowElements = oldFlow.getInclElements();
int similarities = 0;
int differences = 0;
if(checkedFlowsOld.contains(currentOldFlow));
else {
for (FlowElementReference newFlowElement: newFlowElements) {
if(checkedElements.contains(newFlowElement.getRef().getName())) {}
else {
for (FlowElementReference oldFlowElement: oldFlowElements) {
if(checkedElements.contains(oldFlowElement.getRef().getName())) {}
else {
if(newFlowElement.getRef().getName().equals(oldFlowElement.getRef().getName())) {
similarities++;
checkedElements.add(newFlowElement.getRef().getName());
}
}
}
}
}
}
//berechnen der Elemente, die aus dem alten und neuen Flow nicht zueinander gepasst haben
differences = oldFlow.getInclElements().size()-similarities + newFlow.getInclElements().size()-similarities;
// falls aktuell übprüfte Flow alt und neu Kombination die meisten Gemeinsamkeiten haben oder noch nichts in matchingFlows gespeichert wurde
if(mostSimilarities<similarities || (mostSimilarities==similarities && leastDifferences> differences)) {
mostSimilarities=similarities;
leastDifferences = differences;
matchingFlows[currentNewFlow][0] = newFlow;
matchingFlows[currentNewFlow][1] = oldFlow;
}
checkedElements = new ArrayList <String>();
currentOldFlow++;
}
currentNewFlow++;
}
// for (int i=0; i<newFlows.size();i++) {
// System.out.println(matchingFlows[i][0]+" "+matchingFlows[i][1]);
//
// }
return matchingFlows;
}
}
\ No newline at end of file
logging.level.root=INFO logging.level.root=INFO
testgenerator.projects=C:\\CodePro\\projects.json testgenerator.projects=C:\\Users\\tillb\\Desktop\\fe_projekt\\projects.json
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment