Changeset 1125 for trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/NodeAndIterationComparisonRule.java
- Timestamp:
- 03/18/13 11:46:47 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/NodeAndIterationComparisonRule.java
r1113 r1125 14 14 15 15 package de.ugoe.cs.autoquest.tasktrees.nodeequality; 16 17 import java.util.List; 16 18 17 19 import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; … … 48 50 } 49 51 50 /* 51 * (non-Javadoc) 52 * 53 * @see de.ugoe.cs.tasktree.nodeequality.NodeEqualityRule#apply(TaskTreeNode, TaskTreeNode) 52 /* (non-Javadoc) 53 * @see NodeComparisonRule#isApplicable(ITaskTreeNode, ITaskTreeNode) 54 */ 55 @Override 56 public boolean isApplicable(ITaskTreeNode node1, ITaskTreeNode node2) { 57 return ((node1 instanceof IIteration) && (!(node2 instanceof IIteration))) || 58 ((node2 instanceof IIteration) && (!(node1 instanceof IIteration))); 59 } 60 61 /* (non-Javadoc) 62 * @see NodeComparisonRule#areLexicallyEqual(ITaskTreeNode, ITaskTreeNode) 63 */ 64 @Override 65 public boolean areLexicallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 66 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL); 67 return (equality != null) && (equality.isAtLeast(NodeEquality.LEXICALLY_EQUAL)); 68 } 69 70 /* (non-Javadoc) 71 * @see NodeComparisonRule#areSyntacticallyEqual(ITaskTreeNode, ITaskTreeNode) 72 */ 73 @Override 74 public boolean areSyntacticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 75 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL); 76 return (equality != null) && (equality.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)); 77 } 78 79 /* (non-Javadoc) 80 * @see NodeComparisonRule#areSemanticallyEqual(ITaskTreeNode, ITaskTreeNode) 81 */ 82 @Override 83 public boolean areSemanticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 84 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL); 85 return (equality != null) && (equality.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL)); 86 } 87 88 /* (non-Javadoc) 89 * @see NodeComparisonRule#compare(ITaskTreeNode, ITaskTreeNode) 54 90 */ 55 91 @Override 56 92 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) { 93 return getEquality(node1, node2, null); 94 } 95 96 /** 97 * 98 */ 99 private NodeEquality getEquality(ITaskTreeNode node1, 100 ITaskTreeNode node2, 101 NodeEquality requiredEqualityLevel) 102 { 57 103 IIteration iteration = null; 58 104 ITaskTreeNode node = null; … … 80 126 } 81 127 128 List<ITaskTreeNode> children = iteration.getChildren(); 129 82 130 // now, that we found the iteration and the node, lets compare the child of the iteration 83 131 // with the node. 84 if ( iteration.getChildren().size() < 1) {132 if (children.size() < 1) { 85 133 return null; 86 134 } 87 135 88 NodeEquality nodeEquality = mRuleManager.applyRules(iteration.getChildren().get(0), node);136 NodeEquality nodeEquality = callRuleManager(children.get(0), node, requiredEqualityLevel); 89 137 90 138 // although the subtask may be identical to the node, we can not return identical, as … … 98 146 99 147 } 148 149 /** 150 * <p> 151 * TODO: comment 152 * </p> 153 * 154 * @param child1 155 * @param child2 156 * @param requiredEqualityLevel 157 * @return 158 */ 159 private NodeEquality callRuleManager(ITaskTreeNode child1, 160 ITaskTreeNode child2, 161 NodeEquality requiredEqualityLevel) 162 { 163 if (requiredEqualityLevel == null) { 164 return mRuleManager.compare(child1, child2); 165 } 166 else if (mRuleManager.areAtLeastEqual(child1, child2, requiredEqualityLevel)) { 167 return requiredEqualityLevel; 168 } 169 else { 170 return NodeEquality.UNEQUAL; 171 } 172 } 100 173 }
Note: See TracChangeset
for help on using the changeset viewer.