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
File:
1 edited

Legend:

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

    r1150 r1152  
    2323import com.google.common.collect.Iterables; 
    2424 
    25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
     26import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     27import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2728import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; 
    2829import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver; 
     
    3233import de.ugoe.cs.autoquest.usability.tasktree.FilterResult; 
    3334import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy; 
    34 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeFilter; 
     35import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter; 
    3536 
    3637/** 
     
    5051     * @param taskTree 
    5152     */ 
    52     public TextInputRatioMetric(ITaskTree taskTree) { 
    53         super(taskTree); 
     53    public TextInputRatioMetric(ITaskModel taskModel) { 
     54        super(taskModel); 
    5455        this.name = "TextInputRatio"; 
    5556        this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName()); 
     
    6263    public Optional<UsabilityDefect> calculate() { 
    6364        FilterResult textInputEvents = extractNodesFromTaskTree(); 
    64         float evaluationMetric = calculateEvaluationMetric(textInputEvents.nodesMatchedFilter(), textInputEvents.nodesNotMatchedFilter()); 
     65        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(), textInputEvents.tasksNotMatchedFilter()); 
    6566        return this.defect.isPresent(evaluationMetric); 
    6667    } 
    6768     
    6869    private FilterResult extractNodesFromTaskTree() { 
    69         return new TaskTreeFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT) 
    70             .from(this.taskTree); 
     70        return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT) 
     71            .from(this.taskModel); 
    7172    } 
    7273     
    73     private float calculateEvaluationMetric(List<ITaskTreeNode> textInputEvents, List<ITaskTreeNode> nonTextInputEvents) { 
     74    private float calculateEvaluationMetric(List<ITask> textInputEvents, List<ITask> nonTextInputEvents) { 
    7475        float numberOfTextInputEvents = textInputEvents.size(); 
    75         float numberOfNonTextInputEvents = nrOfEventNodesNotMatchedFilter(nonTextInputEvents); 
     76        float numberOfNonTextInputEvents = nrOfEventTasksNotMatchedFilter(nonTextInputEvents); 
    7677        return numberOfTextInputEvents / (numberOfTextInputEvents + numberOfNonTextInputEvents); 
    7778    } 
    7879 
    79     private int nrOfEventNodesNotMatchedFilter(List<ITaskTreeNode> nonTextInputEvents) { 
     80    private int nrOfEventTasksNotMatchedFilter(List<ITask> nonTextInputEvents) { 
    8081        return Iterables.size(Iterables.filter(nonTextInputEvents, 
    81                                                new Predicate<ITaskTreeNode>() { 
     82                                               new Predicate<ITask>() { 
    8283 
    8384                                                   @Override 
    84                                                    public boolean apply(ITaskTreeNode node) { 
    85                                                        return (node.getChildren() == null) || 
    86                                                            (node.getChildren().size() == 0); 
     85                                                   public boolean apply(ITask task) { 
     86                                                       return task instanceof IEventTask; 
    8787                                                   } 
    8888                                               })); 
Note: See TracChangeset for help on using the changeset viewer.