Skip to content
Snippets Groups Projects
Commit 0f9f9929 authored by Florian Lambers's avatar Florian Lambers
Browse files
parents 80476e78 60169c05
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);
...@@ -47,20 +49,38 @@ public class PrioritizationService { ...@@ -47,20 +49,38 @@ public class PrioritizationService {
writeVariablesNewDSL = this.getWriteVariables(this.newDSL); writeVariablesNewDSL = this.getWriteVariables(this.newDSL);
this.readVariables = readVariablesNewDSL; this.readVariables = readVariablesNewDSL;
this.writeVariables = writeVariablesNewDSL; this.writeVariables = writeVariablesNewDSL;
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);
this.dependencyList = this.parseFlowsForDependencies(changesReadVariables, changesWriteVariables); System.out.println("================================================");
//this.dumpDependencyList();
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();
} }
private void dumpDependencyList() private void dumpDependencyList()
...@@ -73,79 +93,130 @@ public class PrioritizationService { ...@@ -73,79 +93,130 @@ 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 found an Dependency the dependencyList will be extended * Search in all flows for dependencies. If it founds an dependency the dependencyList will be extended
* @param changesReadVariables * @param changesReadVariables
* @param changesWriteVariables * @param changesWriteVariables
* @return HashMap<String, Integer> dependencyList * @return HashMap<String, Integer> dependencyList
*/ */
private HashMap<String, Integer> 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();
for(Flow f: flows) for(Flow f: flows)
{
List<FlowElementReference> fer = f.getInclElements();
int countDependency = 0;
for(int i = 0; i < fer.size(); i++)
{ {
String currentFlowElement = fer.get(i).getRef().getName(); List<FlowElementReference> fer = f.getInclElements();
int countDependency = 0;
if(changesReadVariables.get(currentFlowElement) != null)
{ for(int i = 0; i < fer.size(); i++)
for(String checkDependencyVar : changesReadVariables.get(currentFlowElement)) // Kundennummer in checkDependencyVar {
{ String currentFlowElement = fer.get(i).getRef().getName();
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.readVariables.entrySet()) // Liste mit allen ReadVariablen durchlaufen bspw. "Kundennummer_ermitteln" => vorname, nachname, kundennumer try
{
if(changesReadVariables.get(currentFlowElement) != null)
{
for(String checkReadDependencyVar : changesReadVariables.get(currentFlowElement)) // Kundennummer in checkDependencyVar
{ {
String flowElement = entry.getKey(); for(int j = i+1; j < fer.size(); j++)
if(nextFlowElement == flowElement) // FlowElement mit dem aus der readVariables-Liste abgleichen
{ {
List<VariableReference> reads = entry.getValue(); String nextFlowElement = fer.get(j).getRef().getName(); // Innerhalb des gleichen Flows nächtes FlowElement auswählen
for(VariableReference read : reads)
for(Map.Entry<String, List<VariableReference>> entry : this.readVariables.entrySet()) // Liste mit allen ReadVariablen durchlaufen bspw. "Kundennummer_ermitteln" => vorname, nachname, kundennumer
{ {
String currentRead = read.getRef().getName(); String flowElement = entry.getKey();
if(currentRead == checkDependencyVar) // Variable existiert in dem Flow, Dependency gefunden
if(nextFlowElement == flowElement) // FlowElement mit dem aus der readVariables-Liste abgleichen
{ {
countDependency++; List<VariableReference> reads = entry.getValue();
for(VariableReference read : reads)
{
String currentRead = read.getRef().getName();
if(currentRead.equals(checkReadDependencyVar)) // Variable existiert in dem Flow, Dependency gefunden
{
countDependency++;
}
}
} }
} }
} }
} }
for(Map.Entry<String, List<VariableReference>> entry : this.writeVariables.entrySet()) dependencyList.put(f.getName(), countDependency);
{ }
String flowElement = entry.getKey(); }
catch (Exception e)
if(nextFlowElement == flowElement) {
//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++)
{ {
List<VariableReference> writes = entry.getValue(); String nextFlowElement = fer.get(j).getRef().getName(); // Innerhalb des gleichen Flows nächtes FlowElement auswählen
for(VariableReference write : writes)
for(Map.Entry<String, List<VariableReference>> entry : this.writeVariables.entrySet()) // Liste mit allen ReadVariablen durchlaufen bspw. "Kundennummer_ermitteln" => vorname, nachname, kundennumer
{ {
String currentWrite = write.getRef().getName(); String flowElement = entry.getKey();
if(currentWrite == checkDependencyVar)
if(nextFlowElement == flowElement) // FlowElement mit dem aus der readVariables-Liste abgleichen
{ {
countDependency++; List<VariableReference> writes = entry.getValue();
for(VariableReference write : writes)
{
String currentWrite = write.getRef().getName();
if(currentWrite == checkWriteDependencyVar) // Variable existiert in dem Flow, Dependency gefunden
{
System.out.println("Dependcy found!");
countDependency++;
}
}
} }
} }
} }
} }
dependencyList.put(f.getName(), countDependency);
} }
} }
catch (Exception e)
{
//System.out.println("[ERROR] WriteVariables: " + e);
}
} }
} }
dependencyList.put(f.getName(), countDependency); return dependencyList;
}
return dependencyList;
} }
/** /**
......
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