ArrayList<NameValuePair> setSet = parentNode.getOutgoingEdges().get(currentNode).getSetSetMap().get(currentTransition);
HashMap<String, String> valueMap = new HashMap<String, String>(); // HashMap from varName to value
HashMap<String, Integer> writerMap = new HashMap<String, Integer>(); // HashMap from varName to appNum
-
+ HashMap<String, Boolean> isManualMap = new HashMap<String, Boolean>(); // HashMap from varName to isManual
// Update the valueMap and writerMap + check for conflict between the elements of setSet
for (int i = 0;i < setSet.size();i++) {
String varName = nameValuePair.getVarName();
String value = nameValuePair.getValue();
Integer appNum = nameValuePair.getAppNum();
+ Boolean isManual = nameValuePair.getIsManual();
if (valueMap.containsKey(varName)) {
// Check if we have a same writer
if (!valueMap.get(varName).equals(value)) {
errorMessage = createErrorMessage(nameValuePair, valueMap, writerMap);
return true;
- } else { // We have two writers writing the same value
- writerMap.put(varName, 3); // 3 represents both apps
- }
- } else {
- // Check if we have more than one value with the same writer
- if (!valueMap.get(varName).equals(value)) {
- // We have one writer writing more than one value in a same event
- valueMap.put(varName, "twoValue");
}
}
+ valueMap.put(varName, value);
+ writerMap.put(varName, appNum);
+ isManualMap.put(varName, isManual);
} else {
valueMap.put(varName, value);
writerMap.put(varName, appNum);
+ isManualMap.put(varName, isManual);
}
}
String value = valueMap.get(i.getVarName());
Integer writer = writerMap.get(i.getVarName());
if ((value != null)&&(writer != null)) {
- if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum())) {
+ if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum())
+ &&!isManualMap.get(i.getVarName())) {
// We have different values and different writers
errorMessage = createErrorMessage(i, valueMap, writerMap);
return true;