HashSet<Node> predecessors = new HashSet<Node>();
HashSet<Node> successors = new HashSet<Node>();
HashSet<NameValuePair> outSet = new HashSet<NameValuePair>();
+ ArrayList<NameValuePair> setSet = new ArrayList<NameValuePair>();
HashMap<Node, ArrayList<NameValuePair>> setSetMap = new HashMap<Node, ArrayList<NameValuePair>>();
- ArrayList<NameValuePair> setSet = new ArrayList<NameValuePair>();
-
Node(Integer id) {
this.id = id;
successors.add(node);
}
- void setSetSet(ArrayList<NameValuePair> setSet, boolean isManual) {
- if (isManual)
- this.setSet = new ArrayList<NameValuePair>();
-
- for (int i = 0;i < setSet.size();i++) {
- this.setSet.add(new NameValuePair(setSet.get(i).getAppNum(), setSet.get(i).getValue(),
- setSet.get(i).getVarName(), setSet.get(i).getIsManual()));
- }
- }
-
Integer getId() {
return id;
}
return successors;
}
- ArrayList<NameValuePair> getSetSet() {
- return setSet;
- }
-
HashSet<NameValuePair> getOutSet() {
return outSet;
}
+ ArrayList<NameValuePair> getSetSet() {
+ return setSet;
+ }
+
HashMap<Node, ArrayList<NameValuePair>> getSetSetMap() {
return setSetMap;
}
this.varName = varName;
}
- void setIsManual(String varName) {
+ void setIsManual(String varName) {
this.isManual = isManual;
}
Node currentNode = nodes.get(id);
- // Update the setSet for this new node
- currentNode.setSetSet(tempSetSet, manual);
- tempSetSet = new ArrayList<NameValuePair>();
+ if ((currentNode.getSetSetMap().get(parentNode) == null) || manual)
+ currentNode.getSetSetMap().put(parentNode, new ArrayList<NameValuePair>());
+
+ // Update the setSet for the edge
+ currentNode.getSetSetMap().get(parentNode).addAll(tempSetSet);
+ parentNode.getSetSet().addAll(tempSetSet);
+ tempSetSet = new ArrayList<NameValuePair>();
manual = false;
+ // Check for the conflict in this edge
+ conflictFound = checkForConflict(parentNode);
+
if (search.isNewState()) {
detail = "new";
} else {
if (!(parentNode.getSuccessors().contains(currentNode)))
parentNode.addSuccessor(currentNode);
-
- // Update the setSetMap of the current node
- for (Node i : currentNode.getPredecessors()) {
- currentNode.getSetSetMap().put(i, i.getSetSet());
- }
-
// Update the edge and check if the outset of the current node is changed or not to propagate the change
boolean isChanged = updateEdge(parentNode, currentNode);
-
- // Check for the conflict in this edge
- conflictFound = checkForConflict(currentNode);
// Check if the outSet of this state has changed, update all of its successors' sets if any
if (isChanged)