Ignore:
Timestamp:
04/04/13 16:06:07 (11 years ago)
Author:
pharms
Message:
  • complete refactoring of task tree model with a separation of task models and task instances
  • appropriate adaptation of task tree generation process
  • appropriate adaptation of commands and task tree visualization
Location:
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality
Files:
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/GUIEventTaskComparisonRule.java

    r1125 r1146  
    1313//   limitations under the License. 
    1414 
    15 package de.ugoe.cs.autoquest.tasktrees.nodeequality; 
     15package de.ugoe.cs.autoquest.tasktrees.taskequality; 
    1616 
    1717import de.ugoe.cs.autoquest.eventcore.IEventTarget; 
     
    4242import de.ugoe.cs.autoquest.eventcore.guimodel.IToolTip; 
    4343import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    44 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     44import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    4545 
    4646/** 
     
    5858 * @author Patrick Harms 
    5959 */ 
    60 public class GUIEventTaskComparisonRule implements NodeComparisonRule { 
     60public class GUIEventTaskComparisonRule implements TaskComparisonRule { 
    6161     
    6262    /* (non-Javadoc) 
    63      * @see NodeComparisonRule#isApplicable(ITaskTreeNode, ITaskTreeNode) 
     63     * @see NodeComparisonRule#isApplicable(ITask, ITask) 
    6464     */ 
    6565    @Override 
    66     public boolean isApplicable(ITaskTreeNode node1, ITaskTreeNode node2) { 
     66    public boolean isApplicable(ITask task1, ITask task2) { 
    6767        return 
    68             ((node1 instanceof IEventTask) && (node2 instanceof IEventTask) && 
    69             (((IEventTask) node1).getEventType() instanceof IInteraction) && 
    70             (((IEventTask) node2).getEventType() instanceof IInteraction)); 
     68            ((task1 instanceof IEventTask) && (task2 instanceof IEventTask) && 
     69            (((IEventTask) task1).getEventType() instanceof IInteraction) && 
     70            (((IEventTask) task2).getEventType() instanceof IInteraction)); 
    7171    } 
    7272 
    7373    /* (non-Javadoc) 
    74      * @see NodeComparisonRule#areLexicallyEqual(ITaskTreeNode, ITaskTreeNode) 
     74     * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 
    7575     */ 
    7676    @Override 
    77     public boolean areLexicallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 
    78         NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL); 
    79         return (equality != null) && (equality.isAtLeast(NodeEquality.LEXICALLY_EQUAL)); 
     77    public boolean areLexicallyEqual(ITask task1, ITask task2) { 
     78        TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 
     79        return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 
    8080    } 
    8181 
    8282    /* (non-Javadoc) 
    83      * @see NodeComparisonRule#areSyntacticallyEqual(ITaskTreeNode, ITaskTreeNode) 
     83     * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 
    8484     */ 
    8585    @Override 
    86     public boolean areSyntacticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 
    87         NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL); 
    88         return (equality != null) && (equality.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)); 
     86    public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 
     87        TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 
     88        return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 
    8989    } 
    9090 
    9191    /* (non-Javadoc) 
    92      * @see NodeComparisonRule#areSemanticallyEqual(ITaskTreeNode, ITaskTreeNode) 
     92     * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 
    9393     */ 
    9494    @Override 
    95     public boolean areSemanticallyEqual(ITaskTreeNode node1, ITaskTreeNode node2) { 
    96         NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL); 
    97         return (equality != null) && (equality.isAtLeast(NodeEquality.SEMANTICALLY_EQUAL)); 
     95    public boolean areSemanticallyEqual(ITask task1, ITask task2) { 
     96        TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 
     97        return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 
    9898    } 
    9999 
    100100    /* (non-Javadoc) 
    101      * @see NodeComparisonRule#compare(ITaskTreeNode, ITaskTreeNode) 
     101     * @see NodeComparisonRule#compare(ITask, ITask) 
    102102     */ 
    103103    @Override 
    104     public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) { 
    105         return getEquality(node1, node2, null); 
    106     } 
    107  
    108     /** 
    109      *  
    110      */ 
    111     private NodeEquality getEquality(ITaskTreeNode node1, 
    112                                      ITaskTreeNode node2, 
    113                                      NodeEquality  requiredEqualityLevel) 
    114     { 
    115         IEventTask task1 = (IEventTask) node1; 
    116         IEventTask task2 = (IEventTask) node2; 
    117          
    118         if (!task1.getEventTarget().equals(task2.getEventTarget())) { 
    119             return NodeEquality.UNEQUAL; 
    120         } 
    121          
    122         IInteraction interaction1 = (IInteraction) task1.getEventType(); 
    123         IInteraction interaction2 = (IInteraction) task2.getEventType(); 
     104    public TaskEquality compare(ITask task1, ITask task2) { 
     105        return getEquality(task1, task2, null); 
     106    } 
     107 
     108    /** 
     109     *  
     110     */ 
     111    private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 
     112        IEventTask eventTask1 = (IEventTask) task1; 
     113        IEventTask eventTask2 = (IEventTask) task2; 
     114         
     115        if (!eventTask1.getEventTarget().equals(eventTask2.getEventTarget())) { 
     116            return TaskEquality.UNEQUAL; 
     117        } 
     118         
     119        IInteraction interaction1 = (IInteraction) eventTask1.getEventType(); 
     120        IInteraction interaction2 = (IInteraction) eventTask2.getEventType(); 
    124121         
    125122        return compareInteractions 
    126             (interaction1, interaction2, task1.getEventTarget(), requiredEqualityLevel); 
     123            (interaction1, interaction2, eventTask1.getEventTarget(), requiredEqualityLevel); 
    127124    } 
    128125 
     
    145142     * @return as described 
    146143     */ 
    147     private NodeEquality compareInteractions(IInteraction interaction1, 
     144    private TaskEquality compareInteractions(IInteraction interaction1, 
    148145                                             IInteraction interaction2, 
    149146                                             IEventTarget eventTarget, 
    150                                              NodeEquality equalityLevel) 
    151     { 
    152         NodeEquality level = equalityLevel; 
     147                                             TaskEquality equalityLevel) 
     148    { 
     149        TaskEquality level = equalityLevel; 
    153150         
    154151        if (level == null) { 
    155             level = NodeEquality.LEXICALLY_EQUAL; 
     152            level = TaskEquality.LEXICALLY_EQUAL; 
    156153        } 
    157154         
    158155        if (interaction1 == interaction2) { 
    159             return NodeEquality.LEXICALLY_EQUAL; 
     156            return TaskEquality.LEXICALLY_EQUAL; 
    160157        } 
    161158        else if ((interaction1 instanceof KeyInteraction) && 
     
    186183        } 
    187184        else if (interaction1.equals(interaction2)) { 
    188             return NodeEquality.LEXICALLY_EQUAL; 
     185            return TaskEquality.LEXICALLY_EQUAL; 
    189186        } 
    190187        else { 
    191             return NodeEquality.UNEQUAL; 
     188            return TaskEquality.UNEQUAL; 
    192189        } 
    193190    } 
     
    204201     * @return 
    205202     */ 
    206     private NodeEquality compareKeyInteractions(KeyInteraction interaction1, 
     203    private TaskEquality compareKeyInteractions(KeyInteraction interaction1, 
    207204                                                KeyInteraction interaction2, 
    208                                                 NodeEquality   equalityLevel) 
     205                                                TaskEquality   equalityLevel) 
    209206    { 
    210207        if (((interaction1 instanceof KeyPressed) && (interaction2 instanceof KeyPressed)) || 
     
    212209            ((interaction1 instanceof KeyTyped) && (interaction2 instanceof KeyTyped))) 
    213210        { 
    214             if ((equalityLevel.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)) && 
     211            if ((equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) && 
    215212                (interaction1.getKey() == interaction2.getKey())) 
    216213            { 
    217                 return NodeEquality.LEXICALLY_EQUAL; 
     214                return TaskEquality.LEXICALLY_EQUAL; 
    218215            } 
    219216            else { 
    220                 return NodeEquality.SEMANTICALLY_EQUAL; 
    221             } 
    222         } 
    223          
    224         return NodeEquality.UNEQUAL; 
     217                return TaskEquality.SEMANTICALLY_EQUAL; 
     218            } 
     219        } 
     220         
     221        return TaskEquality.UNEQUAL; 
    225222    } 
    226223     
     
    236233     * @return as described 
    237234     */ 
    238     private NodeEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1, 
     235    private TaskEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1, 
    239236                                                  MouseDragAndDrop interaction2, 
    240                                                   NodeEquality     equalityLevel) 
     237                                                  TaskEquality     equalityLevel) 
    241238    { 
    242239        if (interaction1.getButton() != interaction2.getButton()) { 
    243             return NodeEquality.UNEQUAL; 
    244         } 
    245          
    246         if (equalityLevel.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)) { 
     240            return TaskEquality.UNEQUAL; 
     241        } 
     242         
     243        if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 
    247244            int x1 = interaction1.getX(); 
    248245            int x1Start = interaction1.getXStart(); 
     
    255252         
    256253            if ((x1Start == x2Start) && (x1 == x2) && (y1Start == y2Start) && (y1 == y2)) { 
    257                 return NodeEquality.LEXICALLY_EQUAL; 
    258             } 
    259         } 
    260          
    261         return NodeEquality.SEMANTICALLY_EQUAL; 
     254                return TaskEquality.LEXICALLY_EQUAL; 
     255            } 
     256        } 
     257         
     258        return TaskEquality.SEMANTICALLY_EQUAL; 
    262259    } 
    263260 
     
    279276     * @return as described 
    280277     */ 
    281     private NodeEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1, 
     278    private TaskEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1, 
    282279                                                        MouseButtonInteraction interaction2, 
    283280                                                        IEventTarget           eventTarget, 
    284                                                         NodeEquality           equalityLevel) 
     281                                                        TaskEquality           equalityLevel) 
    285282    { 
    286283        boolean coordinatesMatch = true; 
     
    293290        } 
    294291        else if (interaction1.getButton() != interaction2.getButton()) { 
    295             return NodeEquality.UNEQUAL; 
    296         } 
    297         else if (equalityLevel.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL) && 
     292            return TaskEquality.UNEQUAL; 
     293        } 
     294        else if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL) && 
    298295                 clickCoordinatesMakeLexicalDifference(eventTarget)) 
    299296        { 
     
    319316        { 
    320317            if (coordinatesMatch) { 
    321                 return NodeEquality.LEXICALLY_EQUAL; 
     318                return TaskEquality.LEXICALLY_EQUAL; 
    322319            } 
    323320            else { 
    324                 return NodeEquality.SEMANTICALLY_EQUAL; 
    325             } 
    326         } 
    327          
    328         return NodeEquality.UNEQUAL; 
     321                return TaskEquality.SEMANTICALLY_EQUAL; 
     322            } 
     323        } 
     324         
     325        return TaskEquality.UNEQUAL; 
    329326    } 
    330327 
     
    346343     * @return as described 
    347344     */ 
    348     private NodeEquality compareScrolls(Scroll       interaction1, 
     345    private TaskEquality compareScrolls(Scroll       interaction1, 
    349346                                        Scroll       interaction2, 
    350                                         NodeEquality equalityLevel) 
    351     { 
    352         if (equalityLevel.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)) { 
     347                                        TaskEquality equalityLevel) 
     348    { 
     349        if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 
    353350            int x1 = interaction1.getXPosition(); 
    354351            int x2 = interaction2.getXPosition(); 
     
    357354         
    358355            if ((x1 == x2) && (y1 == y2)) { 
    359                 return NodeEquality.LEXICALLY_EQUAL; 
    360             } 
    361         } 
    362          
    363         return NodeEquality.SEMANTICALLY_EQUAL; 
     356                return TaskEquality.LEXICALLY_EQUAL; 
     357            } 
     358        } 
     359         
     360        return TaskEquality.SEMANTICALLY_EQUAL; 
    364361    } 
    365362 
     
    377374     * @return as described 
    378375     */ 
    379     private NodeEquality compareTextInputs(TextInput    interaction1, 
     376    private TaskEquality compareTextInputs(TextInput    interaction1, 
    380377                                           TextInput    interaction2, 
    381                                            NodeEquality equalityLevel) 
     378                                           TaskEquality equalityLevel) 
    382379    { 
    383380        switch (equalityLevel) { 
    384381            case LEXICALLY_EQUAL: 
    385382                if (interaction1.getTextInputEvents().equals(interaction2.getTextInputEvents())) { 
    386                     return NodeEquality.LEXICALLY_EQUAL; 
     383                    return TaskEquality.LEXICALLY_EQUAL; 
    387384                } 
    388385                // fall through 
    389386            case SYNTACTICALLY_EQUAL: 
    390387                if (interaction1.getEnteredText().equals(interaction2.getEnteredText())) { 
    391                     return NodeEquality.SYNTACTICALLY_EQUAL; 
     388                    return TaskEquality.SYNTACTICALLY_EQUAL; 
    392389                } 
    393390                // fall through 
    394391            case SEMANTICALLY_EQUAL: 
    395                 return NodeEquality.SEMANTICALLY_EQUAL; 
     392                return TaskEquality.SEMANTICALLY_EQUAL; 
    396393            default: 
    397                 return NodeEquality.UNEQUAL; 
     394                return TaskEquality.UNEQUAL; 
    398395        } 
    399396    } 
     
    411408     * @return as described 
    412409     */ 
    413     private NodeEquality compareValueSelections(ValueSelection<?> interaction1, 
     410    private TaskEquality compareValueSelections(ValueSelection<?> interaction1, 
    414411                                                ValueSelection<?> interaction2, 
    415                                                 NodeEquality      equalityLevel) 
    416     { 
    417         if (equalityLevel.isAtLeast(NodeEquality.SYNTACTICALLY_EQUAL)) { 
     412                                                TaskEquality      equalityLevel) 
     413    { 
     414        if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 
    418415            Object value1 = interaction1.getSelectedValue(); 
    419416            Object value2 = interaction2.getSelectedValue(); 
    420417         
    421418            if ((value1 == value2) || ((value1 != null) && (value1.equals(value2)))) { 
    422                 return NodeEquality.LEXICALLY_EQUAL; 
    423             } 
    424         } 
    425          
    426         return NodeEquality.SEMANTICALLY_EQUAL; 
     419                return TaskEquality.LEXICALLY_EQUAL; 
     420            } 
     421        } 
     422         
     423        return TaskEquality.SEMANTICALLY_EQUAL; 
    427424    } 
    428425 
Note: See TracChangeset for help on using the changeset viewer.