Skip to content
Snippets Groups Projects
Commit 60169c05 authored by Henning Josef Moritz Werner Schmeink's avatar Henning Josef Moritz Werner Schmeink
Browse files

Update PrioritizationService.java, fixed readVariables Priorization

parent b9572d50
No related branches found
No related tags found
No related merge requests found
...@@ -39,6 +39,8 @@ public class PrioritizationService { ...@@ -39,6 +39,8 @@ public class PrioritizationService {
public void prioritize() { public void prioritize() {
Map<String, List<VariableReference>> readVariablesOldDSL, writeVariablesOldDSL, readVariablesNewDSL, writeVariablesNewDSL; Map<String, List<VariableReference>> readVariablesOldDSL, writeVariablesOldDSL, readVariablesNewDSL, writeVariablesNewDSL;
HashMap<String, Integer> dependenciesNew = new HashMap<>();
HashMap<String, Integer> dependenciesOld = new HashMap<>();
readVariablesOldDSL = this.getReadVariables(this.oldDSL); readVariablesOldDSL = this.getReadVariables(this.oldDSL);
writeVariablesOldDSL = this.getWriteVariables(this.oldDSL); writeVariablesOldDSL = this.getWriteVariables(this.oldDSL);
...@@ -52,13 +54,32 @@ public class PrioritizationService { ...@@ -52,13 +54,32 @@ public class PrioritizationService {
HashMap<String, List<String>> changesReadVariables = this.checkVariables(readVariablesOldDSL, readVariablesNewDSL); HashMap<String, List<String>> changesReadVariables = this.checkVariables(readVariablesOldDSL, readVariablesNewDSL);
HashMap<String, List<String>> changesWriteVariables = this.checkVariables(writeVariablesOldDSL, writeVariablesNewDSL); HashMap<String, List<String>> changesWriteVariables = this.checkVariables(writeVariablesOldDSL, writeVariablesNewDSL);
System.out.println("================================================");
System.out.println("PRIORIZTION => OLD TO NEW");
System.out.println("Changes ReadVariables"); System.out.println("Changes ReadVariables");
System.out.println(changesReadVariables); System.out.println(changesReadVariables);
System.out.println("Changes WriteVariables"); System.out.println("Changes WriteVariables");
System.out.println(changesWriteVariables); System.out.println(changesWriteVariables);
if(this.parseFlowsForDependencies(changesReadVariables, changesWriteVariables)) System.out.println("================================================");
System.out.println("PRIORIZTION => NEW TO OLD");
HashMap<String, List<String>> changesReadVariablesOLD = this.checkVariables(readVariablesNewDSL, readVariablesOldDSL);
HashMap<String, List<String>> changesWriteVariablesOLD = this.checkVariables(writeVariablesNewDSL, writeVariablesOldDSL);
System.out.println("Changes ReadVariables");
System.out.println(changesReadVariablesOLD);
System.out.println("Changes WriteVariables");
System.out.println(changesWriteVariablesOLD);
System.out.println("================================================");
dependenciesNew = this.parseFlowsForDependencies(changesReadVariables, changesWriteVariables);
dependenciesOld = this.parseFlowsForDependencies(changesReadVariablesOLD, changesWriteVariablesOLD);
this.sumDependencies(dependenciesNew, dependenciesOld);
this.dumpDependencyList(); this.dumpDependencyList();
} }
...@@ -72,6 +93,28 @@ public class PrioritizationService { ...@@ -72,6 +93,28 @@ public class PrioritizationService {
} }
} }
private void sumDependencies(HashMap<String, Integer> firstList, HashMap<String, Integer> secondList)
{
for(Map.Entry<String, Integer> elem1 : firstList.entrySet())
{
String currentFlowElement = elem1.getKey();
Integer dependencyFlow = elem1.getValue();
for(Map.Entry<String, Integer> elem2 : secondList.entrySet())
{
String flowElement = elem2.getKey();
Integer flowDependency = elem2.getValue();
if(currentFlowElement == flowElement)
{
// Sum the dependencies
int sum = dependencyFlow + flowDependency;
this.dependencyList.put(currentFlowElement, sum);
}
}
}
}
/** /**
* Search in all flows for dependencies. If it founds an dependency the dependencyList will be extended * Search in all flows for dependencies. If it founds an dependency the dependencyList will be extended
...@@ -79,13 +122,11 @@ public class PrioritizationService { ...@@ -79,13 +122,11 @@ public class PrioritizationService {
* @param changesWriteVariables * @param changesWriteVariables
* @return HashMap<String, Integer> dependencyList * @return HashMap<String, Integer> dependencyList
*/ */
private boolean parseFlowsForDependencies(HashMap<String, List<String>> changesReadVariables, HashMap<String, List<String>> changesWriteVariables) private HashMap<String, Integer> parseFlowsForDependencies(HashMap<String, List<String>> changesReadVariables, HashMap<String, List<String>> changesWriteVariables)
{ {
HashMap<String, Integer> dependencyList = new HashMap<>(); HashMap<String, Integer> dependencyList = new HashMap<>();
List<Flow> flows = this.newDSL.getFlows(); List<Flow> flows = this.newDSL.getFlows();
try
{
for(Flow f: flows) for(Flow f: flows)
{ {
List<FlowElementReference> fer = f.getInclElements(); List<FlowElementReference> fer = f.getInclElements();
...@@ -95,9 +136,11 @@ public class PrioritizationService { ...@@ -95,9 +136,11 @@ public class PrioritizationService {
{ {
String currentFlowElement = fer.get(i).getRef().getName(); String currentFlowElement = fer.get(i).getRef().getName();
try
{
if(changesReadVariables.get(currentFlowElement) != null) if(changesReadVariables.get(currentFlowElement) != null)
{ {
for(String checkDependencyVar : changesReadVariables.get(currentFlowElement)) // Kundennummer in checkDependencyVar for(String checkReadDependencyVar : changesReadVariables.get(currentFlowElement)) // Kundennummer in checkDependencyVar
{ {
for(int j = i+1; j < fer.size(); j++) for(int j = i+1; j < fer.size(); j++)
{ {
...@@ -113,26 +156,47 @@ public class PrioritizationService { ...@@ -113,26 +156,47 @@ public class PrioritizationService {
for(VariableReference read : reads) for(VariableReference read : reads)
{ {
String currentRead = read.getRef().getName(); String currentRead = read.getRef().getName();
if(currentRead == checkDependencyVar) // Variable existiert in dem Flow, Dependency gefunden if(currentRead.equals(checkReadDependencyVar)) // Variable existiert in dem Flow, Dependency gefunden
{ {
countDependency++; countDependency++;
} }
} }
} }
} }
}
}
for(Map.Entry<String, List<VariableReference>> entry : this.writeVariables.entrySet()) dependencyList.put(f.getName(), countDependency);
}
}
catch (Exception e)
{
//System.out.println("[ERROR] ReadVariables: " + e);
}
try
{
if(changesWriteVariables.get(currentFlowElement) != null)
{
for(String checkWriteDependencyVar : changesWriteVariables.get(currentFlowElement)) // Kundennummer in checkDependencyVar
{
for(int j = i+1; j < fer.size(); j++)
{
String nextFlowElement = fer.get(j).getRef().getName(); // Innerhalb des gleichen Flows nächtes FlowElement auswählen
for(Map.Entry<String, List<VariableReference>> entry : this.writeVariables.entrySet()) // Liste mit allen ReadVariablen durchlaufen bspw. "Kundennummer_ermitteln" => vorname, nachname, kundennumer
{ {
String flowElement = entry.getKey(); String flowElement = entry.getKey();
if(nextFlowElement == flowElement) if(nextFlowElement == flowElement) // FlowElement mit dem aus der readVariables-Liste abgleichen
{ {
List<VariableReference> writes = entry.getValue(); List<VariableReference> writes = entry.getValue();
for(VariableReference write : writes) for(VariableReference write : writes)
{ {
String currentWrite = write.getRef().getName(); String currentWrite = write.getRef().getName();
if(currentWrite == checkDependencyVar) if(currentWrite == checkWriteDependencyVar) // Variable existiert in dem Flow, Dependency gefunden
{ {
System.out.println("Dependcy found!");
countDependency++; countDependency++;
} }
} }
...@@ -140,20 +204,19 @@ public class PrioritizationService { ...@@ -140,20 +204,19 @@ public class PrioritizationService {
} }
} }
} }
}
}
dependencyList.put(f.getName(), countDependency); dependencyList.put(f.getName(), countDependency);
} }
this.dependencyList = dependencyList;
return true;
} }
catch (Exception e) catch (Exception e)
{ {
System.out.println("List is empty, no changes found."); //System.out.println("[ERROR] WriteVariables: " + e);
return false; }
} }
}
return dependencyList;
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment