Changeset 1125 for trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/NodeEqualityRuleManager.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/NodeEqualityRuleManager.java
r1113 r1125 72 72 * manager before a call to this method. 73 73 */ 74 public NodeEquality applyRules(ITaskTreeNode node1, ITaskTreeNode node2)74 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) 75 75 throws IllegalStateException 76 76 { … … 83 83 84 84 for (NodeComparisonRule rule : mRuleIndex) { 85 nodeEquality = rule.compare(node1, node2); 86 87 if (nodeEquality != null) { 88 // LOG.warning("used rule " + rule + " for equality check"); 89 return nodeEquality; 85 if (rule.isApplicable(node1, node2)) { 86 nodeEquality = rule.compare(node1, node2); 87 if (nodeEquality != null) { 88 // LOG.warning("used rule " + rule + " for equality check"); 89 return nodeEquality; 90 } 90 91 } 91 92 } … … 96 97 } 97 98 99 /** 100 * <p> 101 * TODO: comment 102 * </p> 103 * 104 * @param child1 105 * @param child2 106 * @param equalityLevel 107 * @return 108 */ 109 public boolean areAtLeastEqual(ITaskTreeNode node1, 110 ITaskTreeNode node2, 111 NodeEquality equalityLevel) 112 { 113 if (equalityLevel == null) { 114 throw new IllegalArgumentException("required equality level must not be null"); 115 } 116 117 switch (equalityLevel) { 118 case IDENTICAL: 119 return areIdentical(node1, node2); 120 case LEXICALLY_EQUAL: 121 return areLexicallyEqual(node1, node2); 122 case SYNTACTICALLY_EQUAL: 123 return areSyntacticallyEqual(node1, node2); 124 case SEMANTICALLY_EQUAL: 125 return areSemanticallyEqual(node1, node2); 126 case UNEQUAL: 127 return !areSemanticallyEqual(node1, node2); 128 default: 129 throw new IllegalArgumentException("unknown required equality: " + equalityLevel); 130 } 131 } 132 133 /** 134 * <p> 135 * TODO: comment 136 * </p> 137 * 138 * @param child1 139 * @param child2 140 * @return 141 */ 142 public boolean areIdentical(ITaskTreeNode node1, ITaskTreeNode node2) { 143 if (mRuleIndex == null) { 144 throw new IllegalStateException("not initialized"); 145 } 146 147 for (NodeComparisonRule rule : mRuleIndex) { 148 if (rule.isApplicable(node1, node2) && rule.areLexicallyEqual(node1, node2)) { 149 return true; 150 } 151 } 152 153 return false; 154 } 155 156 /** 157 * <p> 158 * TODO: comment 159 * </p> 160 * 161 * @param child1 162 * @param child2 163 * @return 164 */ 165 public boolean areLexicallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 166 if (mRuleIndex == null) { 167 throw new IllegalStateException("not initialized"); 168 } 169 170 for (NodeComparisonRule rule : mRuleIndex) { 171 if (rule.isApplicable(node1, node2) && rule.areLexicallyEqual(node1, node2)) { 172 return true; 173 } 174 } 175 176 return false; 177 } 178 179 /** 180 * <p> 181 * TODO: comment 182 * </p> 183 * 184 * @param child1 185 * @param child2 186 * @return 187 */ 188 public boolean areSyntacticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 189 if (mRuleIndex == null) { 190 throw new IllegalStateException("not initialized"); 191 } 192 193 for (NodeComparisonRule rule : mRuleIndex) { 194 if (rule.isApplicable(node1, node2) && rule.areSyntacticallyEqual(node1, node2)) { 195 return true; 196 } 197 } 198 199 return false; 200 } 201 202 /** 203 * <p> 204 * TODO: comment 205 * </p> 206 * 207 * @param child1 208 * @param child2 209 * @return 210 */ 211 public boolean areSemanticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 212 if (mRuleIndex == null) { 213 throw new IllegalStateException("not initialized"); 214 } 215 216 for (NodeComparisonRule rule : mRuleIndex) { 217 if (rule.isApplicable(node1, node2) && rule.areSemanticallyEqual(node1, node2)) { 218 return true; 219 } 220 } 221 222 return false; 223 } 224 98 225 }
Note: See TracChangeset
for help on using the changeset viewer.