source: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/NodeIdentityRule.java @ 1125

Last change on this file since 1125 was 1125, checked in by pharms, 11 years ago
  • refactoring of task tree node comparison to be able to optimize the comparisons for the different comparison levels lexically, syntactically, semantically
  • Property svn:executable set to *
File size: 2.5 KB
Line 
1//   Copyright 2012 Georg-August-Universität Göttingen, Germany
2//
3//   Licensed under the Apache License, Version 2.0 (the "License");
4//   you may not use this file except in compliance with the License.
5//   You may obtain a copy of the License at
6//
7//       http://www.apache.org/licenses/LICENSE-2.0
8//
9//   Unless required by applicable law or agreed to in writing, software
10//   distributed under the License is distributed on an "AS IS" BASIS,
11//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//   See the License for the specific language governing permissions and
13//   limitations under the License.
14
15package de.ugoe.cs.autoquest.tasktrees.nodeequality;
16
17import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
18
19/**
20 * <p>
21 * This comparison rule returns <code>NodeEquality.IDENTICAL</code> if the comparison of the two
22 * task tree nodes using the <code>==</code> operator or the <code>equals</code> method return true.
23 * Else it returns null to denote, that it can not compare the nodes.
24 * </p>
25 *
26 * @version $Revision: $ $Date: 19.02.2012$
27 * @author 2012, last modified by $Author: patrick$
28 */
29public class NodeIdentityRule implements NodeComparisonRule {
30
31    /* (non-Javadoc)
32     * @see NodeComparisonRule#isApplicable(ITaskTreeNode, ITaskTreeNode)
33     */
34    @Override
35    public boolean isApplicable(ITaskTreeNode node1, ITaskTreeNode node2) {
36        return (node1 == node2);
37    }
38
39    /* (non-Javadoc)
40     * @see NodeComparisonRule#areLexicallyEqual(ITaskTreeNode, ITaskTreeNode)
41     */
42    @Override
43    public boolean areLexicallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) {
44        return (node1 == node2);
45    }
46
47    /* (non-Javadoc)
48     * @see NodeComparisonRule#areSyntacticallyEqual(ITaskTreeNode, ITaskTreeNode)
49     */
50    @Override
51    public boolean areSyntacticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) {
52        return (node1 == node2);
53    }
54
55    /* (non-Javadoc)
56     * @see NodeComparisonRule#areSemanticallyEqual(ITaskTreeNode, ITaskTreeNode)
57     */
58    @Override
59    public boolean areSemanticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) {
60        return (node1 == node2);
61    }
62
63    /* (non-Javadoc)
64     * @see NodeComparisonRule#compare(ITaskTreeNode, ITaskTreeNode)
65     */
66    @Override
67    public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) {
68        if (isApplicable(node1, node2)) {
69            return NodeEquality.IDENTICAL;
70        }
71        else {
72            return null;
73        }
74    }
75
76}
Note: See TracBrowser for help on using the repository browser.