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;
public class ManualTasks {
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_LUXUS = "Ware_auspacken_luxus";
......
......@@ -127,6 +127,15 @@ without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flo
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 ]
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" ;
......
......@@ -54,141 +54,34 @@ public class ChangeController {
@Autowired
private FlowService flowService;
@Autowired
private TestService testService;
private ChangeService changeService;
@Autowired
private MigrationService migrationService;
@RequestMapping(path = "/project/{projectId}/match", method = RequestMethod.GET)
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);
//speichern von neuen Flow Elementen aller Flows
//speichern aller neuen Flows
List<Flow> newFlows = flowService.getFlows(projectForId.getProjectDirectories());
//für alte Flows
//Pfad zu alten Flows und Speichern aller alten Flows
String pathOld = "C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\MatchingTestcollectionOld.bpmn-testgen";
List<Flow> oldFlows = flowService.getOldFlows(pathOld);
Flow [][] matchingFlows = new Flow [newFlows.size()][];
matchingFlows = compareFlows(newFlows, oldFlows);
}
Flow [][] matchingFlows = changeService.compareFlows(newFlows, oldFlows);
// for (int i=0; i<newFlows.size();i++) {
// 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)
......
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
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