// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.tasktrees.taskequality; /** *
* A task equality denotes, how equal two tasks are. There are different equality levels * which are similar to the usual design levels of GUI design. These levels are *
* Tasks can be identical. This is the case if in the java virtual machine, their comparison
* using the ==
operator or the equals method return true.
*
* Tasks are lexically equal, if they represent the same events on a key stroke level to be * carried out to execute the task. Identical tasks are also syntactically equal. *
** Nodes are syntactically equal, if they differ in their events on key stroke level, but the * syntactical result is the same. For example, entering the text "hello" into a text field can * be done by entering the letters in their correct order, but also by copying the text into the * text field. The syntactical result is the same: The text "hello" was entered. But the tasks * lexically differ because the events on key stroke level are different. On the other hand, * lexically equal tasks are also syntactically equal. *
** Tasks are semantically equal, if they execute the same function for editing the concepts. An * example are a click on a button and a short cut, both executing the same function. These tasks * are syntactically and, therefore, also lexically different, but semantically equal. * Syntactically equal tasks are always also semantically equal. *
* * @version $Revision: $ $Date: 19.02.2012$ * @author 2012, last modified by $Author: patrick$ */ public enum TaskEquality { IDENTICAL, LEXICALLY_EQUAL, SYNTACTICALLY_EQUAL, SEMANTICALLY_EQUAL, UNEQUAL; /** *
* Checks for the current task equality, if it is at least identical to the
* provided one or even more concrete. As an example, the task equality identical also
* indicates, that the tasks are e.g. lexically, syntactically and semantically equal.
* Therefore, the method called on IDENTICAL
with SEMANTICALLY_EQUAL
* as parameter will return true. If this method is called on SYNTACTICALLY_EQUAL
* with the parameter IDENTICAL
instead, it returns false;
*
* returns the common denominator of this task equality and the provided one. I.e. if one * equality is e.g. syntactical and the other one only semantical, then semantical is returned. *
* * @param otherEquality the equality, to compare this with * * @return as described */ public TaskEquality getCommonDenominator(TaskEquality otherEquality) { if (this.isAtLeast(otherEquality)) { return otherEquality; } else if (otherEquality.isAtLeast(this)) { return this; } else { return TaskEquality.UNEQUAL; } } }