Ignore:
Timestamp:
04/08/13 16:50:21 (11 years ago)
Author:
pharms
Message:
  • complete refactoring of task tree model with a separation of task models and task instances
Location:
trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/LongFormUsageDefect.java

    r1150 r1152  
    1818import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.SCROLL; 
    1919import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT; 
    20 import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.ITERATION; 
    21 import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter.SEQUENCE; 
     20import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.ITERATION; 
     21import static de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter.SEQUENCE; 
    2222 
    2323import com.google.common.base.Optional; 
    2424 
    25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2626import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; 
    2727import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver; 
     
    4848     * @param taskTree 
    4949     */ 
    50     public LongFormUsageDefect(ITaskTree taskTree) { 
    51         super(taskTree); 
     50    public LongFormUsageDefect(ITaskModel taskModel) { 
     51        super(taskModel); 
    5252        this.name = "LongFormUsagePattern"; 
    5353        this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName()); 
     
    7373    public Optional<UsabilityDefect> check() { 
    7474        Optional<UsabilityDefect> present = Optional.absent(); 
    75         if(this.longFormUsagePattern.containedIn(taskTree)) { 
     75        if(this.longFormUsagePattern.containedIn(taskModel)) { 
    7676            present = Optional.of(this.defect); 
    7777        } 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePattern.java

    r1150 r1152  
    2222import com.google.common.collect.Iterables; 
    2323 
    24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     24import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2626import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy; 
    27 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter; 
    28 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter; 
     27import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter; 
     28import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter; 
    2929 
    3030/** 
     
    3737public class UsagePattern { 
    3838     
    39     private TaskTreeFilter taskTreeFilter = new TaskTreeFilter(new IterativeDFSFilterStrategy()); 
     39    private TaskModelFilter taskTreeFilter = new TaskModelFilter(new IterativeDFSFilterStrategy()); 
    4040     
    41     private TaskTreeNodeTypeFilter concernedNode; 
     41    private TaskTypeFilter concernedTask; 
    4242 
    4343    private List<UsagePatternVisitor> patternVisitors; 
     
    5353     * @param eventType 
    5454     */ 
    55     public UsagePattern(TaskTreeNodeTypeFilter concernedNode, 
     55    public UsagePattern(TaskTypeFilter concernedNode, 
    5656                        UsagePatternVisitor... patternVisitor) 
    5757    { 
    5858        this.patternVisitors = Arrays.asList(patternVisitor); 
    59         this.concernedNode = concernedNode; 
     59        this.concernedTask = concernedNode; 
    6060    } 
    6161 
    62     public boolean containedIn(ITaskTree taskTree) { 
    63         List<ITaskTreeNode> allConcernedNodes = filterAllConcernedNodeFrom(taskTree); 
    64         for(ITaskTreeNode concernedNode : allConcernedNodes) { 
    65             applyAllVisitors(concernedNode); 
     62    public boolean containedIn(ITaskModel taskModel) { 
     63        List<ITask> allConcernedTasks = filterAllConcernedTasksFrom(taskModel); 
     64        for(ITask concernedTask : allConcernedTasks) { 
     65            applyAllVisitors(concernedTask); 
    6666            if(allVisitorsArePresent()) { 
    6767                this.present = true; 
     
    7575    } 
    7676 
    77     private void applyAllVisitors(ITaskTreeNode concernedNode) { 
     77    private void applyAllVisitors(ITask concernedTask) { 
    7878        Optional<UsagePatternVisitor> previousVisitor = Optional.absent(); 
    7979        for(UsagePatternVisitor visitor : patternVisitors) { 
    8080            if(appliedOnSelectionNode(previousVisitor)) { 
    81                 for(ITaskTreeNode selectionNode : previousVisitor.get().getRetainedSelectionNodes()) { 
    82                     selectionNode.accept(visitor); 
     81                for(ITask selection : previousVisitor.get().getRetainedSelectionNodes()) { 
     82                    selection.accept(visitor); 
    8383                } 
    8484            } else { 
    8585                previousVisitor = Optional.of(visitor); 
    86                 concernedNode.accept(visitor); 
     86                concernedTask.accept(visitor); 
    8787            } 
    8888        } 
     
    101101     * @return 
    102102     */ 
    103     private List<ITaskTreeNode> filterAllConcernedNodeFrom(ITaskTree taskTree) { 
    104         return this.taskTreeFilter.filterByNodeType(this.concernedNode).from(taskTree).nodesMatchedFilter(); 
     103    private List<ITask> filterAllConcernedTasksFrom(ITaskModel taskModel) { 
     104        return this.taskTreeFilter.filterByNodeType(this.concernedTask).from(taskModel).tasksMatchedFilter(); 
    105105    } 
    106106     
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternBuilder.java

    r1150 r1152  
    2222import de.ugoe.cs.autoquest.usability.rules.patterns.visitors.StartsWithPatternVisitor; 
    2323import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 
    24 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter; 
     24import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter; 
    2525 
    2626/** 
     
    3333public class UsagePatternBuilder { 
    3434 
    35     protected TaskTreeNodeTypeFilter concernedNode; 
     35    protected TaskTypeFilter concernedNode; 
    3636     
    3737    protected EventTypeFilter startsWithEvent; 
     
    5555     * @return 
    5656     */ 
    57     public SpecifyPatternStep concernedNode(TaskTreeNodeTypeFilter concernedNode) { 
     57    public SpecifyPatternStep concernedNode(TaskTypeFilter concernedNode) { 
    5858        this.concernedNode = concernedNode; 
    5959        return new SpecifyPatternStep(); 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/UsagePatternVisitor.java

    r1150 r1152  
    2626import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    2727import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 
    28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
    30 import de.ugoe.cs.autoquest.tasktrees.treeifc.NodeVisitor; 
     28import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     29import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    3130import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 
    3231import de.ugoe.cs.autoquest.usability.util.PatternsVisitorUtil; 
     
    4746    protected boolean present = false; 
    4847     
    49     protected List<ITaskTreeNode> retainedChildrenNodesFromSelectionNodes = Lists.newArrayList(); 
     48    protected List<ITask> retainedChildrenTasksFromSelections = Lists.newArrayList(); 
    5049     
    5150    /* (non-Javadoc) 
     
    8584            this.present = patternIsPresent(); 
    8685        } else { 
    87             ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(selection); 
    88             this.present = containedPattern.containedIn(taskTree);   
     86            ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(selection); 
     87            this.present = containedPattern.containedIn(taskModel);   
    8988        } 
    9089    } 
    9190 
    92     protected void retainNodesWherePatternIsPresent(List<ITaskTreeNode> children) { 
    93         for(ITaskTreeNode node : children) { 
     91    protected void retainNodesWherePatternIsPresent(List<ITask> children) { 
     92        for(ITask task : children) { 
    9493            this.present = false; 
    95             node.accept(this); 
     94            task.accept(this); 
    9695            if(this.present) { 
    97                 this.retainedChildrenNodesFromSelectionNodes.add(node); 
     96                this.retainedChildrenTasksFromSelections.add(task); 
    9897            } 
    9998        } 
     
    101100     
    102101    private boolean patternIsPresent() { 
    103         return !this.retainedChildrenNodesFromSelectionNodes.isEmpty(); 
     102        return !this.retainedChildrenTasksFromSelections.isEmpty(); 
    104103    } 
    105104     
     
    122121     */ 
    123122    public void reset() { 
    124         this.retainedChildrenNodesFromSelectionNodes.clear(); 
     123        this.retainedChildrenTasksFromSelections.clear(); 
    125124        this.present = false; 
    126125    } 
     
    144143     * @return 
    145144     */ 
    146     public List<ITaskTreeNode> getRetainedSelectionNodes() { 
    147         return this.retainedChildrenNodesFromSelectionNodes; 
     145    public List<ITask> getRetainedSelectionNodes() { 
     146        return this.retainedChildrenTasksFromSelections; 
    148147    } 
    149148     
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsEventVisitor.java

    r1150 r1152  
    1919import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 
    2020import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
    21 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     21import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    2222import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor; 
    2323import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 
     
    4747     */ 
    4848    public void visit(IIteration iteration) { 
    49         checkAllChildrenAndReturnIfPatternIsPresent(iteration.getChildren()); 
     49        checkTaskAndReturnIfPatternIsPresent(iteration.getMarkedTask()); 
    5050    } 
    5151 
     
    5757    } 
    5858     
    59     private void checkAllChildrenAndReturnIfPatternIsPresent(List<ITaskTreeNode> children) { 
    60         for(ITaskTreeNode node : children) { 
    61             node.accept(this); 
    62             if(this.present) { 
     59    private void checkAllChildrenAndReturnIfPatternIsPresent(List<ITask> children) { 
     60        for (ITask task : children) { 
     61            if (checkTaskAndReturnIfPatternIsPresent(task)) { 
    6362                break; 
    6463            } 
     
    6665    } 
    6766 
     67    /** 
     68     * 
     69     */ 
     70    private boolean checkTaskAndReturnIfPatternIsPresent(ITask task) { 
     71        task.accept(this); 
     72        return this.present; 
     73    } 
    6874} 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/ContainsPatternVisitor.java

    r1150 r1152  
    1515package de.ugoe.cs.autoquest.usability.rules.patterns.visitors; 
    1616 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    1718import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 
    1819import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
    19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     20import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     21import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2122import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern; 
    2223import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor; 
     
    4748     */ 
    4849    public void visit(IIteration iteration) { 
    49         checkAllChildrenAndReturnIfPatternIsPresent(iteration); 
     50        checkTaskAndReturnIfPatternIsPresent(iteration.getMarkedTask()); 
    5051 
    5152    } 
     
    5960    } 
    6061     
    61     private void checkAllChildrenAndReturnIfPatternIsPresent(ITaskTreeNode node) { 
    62         for(ITaskTreeNode child : node.getChildren()) { 
    63             ITaskTree taskTree; 
    64             if(isEvent(child)) { 
    65                 taskTree = PatternsVisitorUtil.createTaskTreeFromNode(node); 
    66             } else { 
    67                 taskTree = PatternsVisitorUtil.createTaskTreeFromNode(child); 
    68             } 
    69             this.present = containedPattern.containedIn(taskTree);  
    70             if(this.present) { 
     62    private void checkAllChildrenAndReturnIfPatternIsPresent(ISequence sequence) { 
     63        for (ITask child : sequence.getChildren()) { 
     64            if(checkTaskAndReturnIfPatternIsPresent(child)) { 
    7165                break; 
    7266            } 
     
    7468    } 
    7569     
    76     private boolean isEvent(ITaskTreeNode firstNode) { 
    77         return firstNode.getChildren().isEmpty(); 
     70    private boolean checkTaskAndReturnIfPatternIsPresent(ITask task) { 
     71        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(task); 
     72        this.present = containedPattern.containedIn(taskModel);  
     73    } 
     74     
     75    private boolean isEvent(ITask task) { 
     76        return task instanceof IEventTask; 
    7877    } 
    7978 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithEventVisitor.java

    r1150 r1152  
    4545     */ 
    4646    public void visit(IIteration iteration) { 
    47         PatternsVisitorUtil.lastNodeOf(iteration.getChildren()).accept(this); 
     47        iteration.getMarkedTask().accept(this); 
    4848    } 
    4949 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/EndsWithPatternVisitor.java

    r1150 r1152  
    1515package de.ugoe.cs.autoquest.usability.rules.patterns.visitors; 
    1616 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    1718import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 
    1819import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
    19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     20import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     21import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2122import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern; 
    2223import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor; 
     
    4748     */ 
    4849    public void visit(IIteration iteration) { 
    49         ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(iteration); 
    50         this.present = containedPattern.containedIn(taskTree);  
     50        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(iteration); 
     51        this.present = containedPattern.containedIn(taskModel);  
    5152 
    5253    } 
     
    5657     */ 
    5758    public void visit(ISequence sequence) { 
    58         ITaskTreeNode lastNode = PatternsVisitorUtil.lastNodeOf(sequence.getChildren()); 
    59         ITaskTree taskTree; 
    60         if(isEvent(lastNode)) { 
    61             taskTree = PatternsVisitorUtil.createTaskTreeFromNode(sequence); 
     59        ITask lastTask = PatternsVisitorUtil.lastNodeOf(sequence.getChildren()); 
     60        ITaskModel taskModel; 
     61        if(isEvent(lastTask)) { 
     62            taskModel = PatternsVisitorUtil.createTaskModelFromNode(sequence); 
    6263        } else { 
    63             taskTree = PatternsVisitorUtil.createTaskTreeFromNode(lastNode); 
     64            taskModel = PatternsVisitorUtil.createTaskModelFromNode(lastTask); 
    6465        } 
    65         this.present = containedPattern.containedIn(taskTree);       
     66        this.present = containedPattern.containedIn(taskModel);       
    6667    } 
    6768 
    68     private boolean isEvent(ITaskTreeNode firstNode) { 
    69         return firstNode.getChildren().isEmpty(); 
     69    private boolean isEvent(ITask lastTask) { 
     70        return lastTask instanceof IEventTask; 
    7071    } 
    7172 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithEventVisitor.java

    r1150 r1152  
    4545     */ 
    4646    public void visit(IIteration iteration) { 
    47         PatternsVisitorUtil.firstNodeOf(iteration.getChildren()).accept(this); 
     47        iteration.getMarkedTask().accept(this); 
    4848    } 
    4949     
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/patterns/visitors/StartsWithPatternVisitor.java

    r1150 r1152  
    1515package de.ugoe.cs.autoquest.usability.rules.patterns.visitors; 
    1616 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    1718import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 
    1819import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
    19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    20 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     20import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     21import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2122import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePattern; 
    2223import de.ugoe.cs.autoquest.usability.rules.patterns.UsagePatternVisitor; 
     
    4748     */ 
    4849    public void visit(IIteration iteration) { 
    49         ITaskTree taskTree = PatternsVisitorUtil.createTaskTreeFromNode(iteration); 
    50         this.present = containedPattern.containedIn(taskTree);   
     50        ITaskModel taskModel = PatternsVisitorUtil.createTaskModelFromNode(iteration); 
     51        this.present = containedPattern.containedIn(taskModel);   
    5152    } 
    5253 
     
    5556     */ 
    5657    public void visit(ISequence sequence) { 
    57         ITaskTreeNode firstNode = PatternsVisitorUtil.firstNodeOf(sequence.getChildren()); 
    58         ITaskTree taskTree; 
    59         if(isEvent(firstNode)) { 
    60             taskTree = PatternsVisitorUtil.createTaskTreeFromNode(sequence); 
     58        ITask firstTask = PatternsVisitorUtil.firstNodeOf(sequence.getChildren()); 
     59        ITaskModel taskModel; 
     60        if(isEvent(firstTask)) { 
     61            taskModel = PatternsVisitorUtil.createTaskModelFromNode(sequence); 
    6162        } else { 
    62             taskTree = PatternsVisitorUtil.createTaskTreeFromNode(firstNode); 
     63            taskModel = PatternsVisitorUtil.createTaskModelFromNode(firstTask); 
    6364        } 
    64         this.present = containedPattern.containedIn(taskTree);       
     65        this.present = containedPattern.containedIn(taskModel);       
    6566    } 
    6667 
    67     private boolean isEvent(ITaskTreeNode firstNode) { 
    68         return firstNode.getChildren().isEmpty(); 
     68    private boolean isEvent(ITask firstTask) { 
     69        return firstTask instanceof IEventTask; 
    6970    } 
    7071 
Note: See TracChangeset for help on using the changeset viewer.