Ignore:
Timestamp:
09/07/17 16:15:00 (7 years ago)
Author:
pharms
Message:
  • changes for first VR oriented usability evaluation
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/RequiredInefficientActionsRule.java

    r1949 r2162  
    1717import java.util.Collection; 
    1818import java.util.HashMap; 
     19import java.util.LinkedList; 
     20import java.util.List; 
    1921import java.util.Map; 
    2022 
    2123import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; 
    2224 
    23 import de.ugoe.cs.autoquest.eventcore.Event; 
    24 import de.ugoe.cs.autoquest.eventcore.gui.Scroll; 
    2525import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskInstanceTraversingVisitor; 
     26import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskTraversingVisitor; 
     27import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    2628import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
    2729import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
     
    9092        for (ITask task : tasks) { 
    9193            if (task instanceof ISequence)  { 
    92                 double[] ratios = getRatiosOfInefficientActionsInInstances((ISequence) task); 
    93                  
    94                 for (int i = 0; i < ratios.length; i++) { 
    95                     if (ratios[i] > 0) { 
    96                         // there is at least on inefficient action 
    97                         inefficientActionRatios.put((ISequence) task, ratios); 
    98                         break; 
     94                if (countEfficientActions((ISequence) task) > 1) { 
     95                    double[] ratios = getRatiosOfInefficientActionsInInstances((ISequence) task); 
     96                     
     97                    for (int i = 0; i < ratios.length; i++) { 
     98                        if (ratios[i] > 0) { 
     99                            // there is at least on inefficient action 
     100                            inefficientActionRatios.put((ISequence) task, ratios); 
     101                            break; 
     102                        } 
    99103                    } 
    100104                } 
     
    103107         
    104108        return inefficientActionRatios; 
     109    } 
     110 
     111    /** 
     112     *  
     113     */ 
     114    private int countEfficientActions(ISequence task) { 
     115        final List<IEventTask> efficientActions = new LinkedList<>(); 
     116         
     117        task.accept(new DefaultTaskTraversingVisitor() { 
     118            @Override 
     119            public void visit(IEventTask eventTask) { 
     120                if (!ActionClassifier.isInefficient(eventTask)) { 
     121                    efficientActions.add(eventTask); 
     122                } 
     123            } 
     124        }); 
     125         
     126        return efficientActions.size(); 
    105127    } 
    106128 
     
    131153            @Override 
    132154            public void visit(IEventTaskInstance eventTaskInstance) { 
    133                 if (isInefficientAction(eventTaskInstance.getEvent())) { 
     155                if (ActionClassifier.isInefficient(eventTaskInstance.getEvent())) { 
    134156                    count[0]++; 
    135157                } 
     
    143165    } 
    144166 
    145     /** 
    146      * 
    147      */ 
    148     private boolean isInefficientAction(Event event) { 
    149         return (event.getType() instanceof Scroll); 
    150     } 
    151  
    152167} 
Note: See TracChangeset for help on using the changeset viewer.