- // System.out.println("recurDFS outNode=" + outNode);
- // System.out.println("---cur combinationNodeInSCGraph=" + combinationNodeInSCGraph);
- // System.out.println("---outNode combinationNodeInSCGraph="
- // + getCombinationNodeInSCGraph(desc, outNode));
-
- Set<HNode> inNodeSetToOutNode = graph.getIncomingNodeSet(outNode);
-
- if (visited.containsAll(inNodeSetToOutNode)) {
- if (!outNode.isSkeleton() && !visited.contains(outNode)) {
- if (outNode.isCombinationNode()) {
- // check whether the next combination node is different from the current node
- if (combinationNodeInSCGraph.equals(getCombinationNodeInSCGraph(desc, outNode))) {
+ System.out.println("---recurDFS outNode=" + outNode);
+ System.out.println("---cur combinationNodeInSCGraph=" + combinationNodeInSCGraph);
+ System.out.println("---outNode combinationNodeInSCGraph="
+ + getCombinationNodeInSCGraph(desc, outNode));
+
+ if (!outNode.isSkeleton() && !visited.contains(outNode)) {
+ if (outNode.isCombinationNode()) {
+
+ Set<HNode> combineSkeletonNodeSet =
+ simpleHierarchyGraph.getCombineSetByCombinationNode(outNode);
+ Set<HNode> incomingHNodeSetToOutNode = simpleHierarchyGraph.getIncomingNodeSet(outNode);
+ // extract nodes belong to the same combine node
+ Set<HNode> incomingCombinedHNodeSet = new HashSet<HNode>();
+ for (Iterator iterator = incomingHNodeSetToOutNode.iterator(); iterator.hasNext();) {
+ HNode inNode = (HNode) iterator.next();
+ if (combineSkeletonNodeSet.contains(inNode)) {
+ incomingCombinedHNodeSet.add(inNode);
+ }
+ }
+ System.out.println("-----incomingCombinedHNodeSet=" + incomingCombinedHNodeSet);
+
+ // check whether the next combination node is different from the current node
+ if (combinationNodeInSCGraph.equals(getCombinationNodeInSCGraph(desc, outNode))) {
+ if (visited.containsAll(incomingCombinedHNodeSet)) {