Ignore:
Timestamp:
06/06/13 17:08:25 (11 years ago)
Author:
adeicke
Message:
  • Added proper formating and JavaDoc?.
  • Several renaming refactorings.
File:
1 edited

Legend:

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

    r1152 r1217  
    1515package de.ugoe.cs.autoquest.usability.rules.metrics; 
    1616 
    17 import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT; 
     17import static de.ugoe.cs.autoquest.usability.taskmodel.filter.types.EventTypeFilter.TEXT_INPUT; 
    1818import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.aggregateEnteredTextFromTextInputs; 
    19 import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.characterIsLetterOrDigitPredicate; 
     19import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.characterIsNoLetterOrDigitPredicate; 
    2020 
    2121import java.util.List; 
     
    2828import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2929import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; 
    30 import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver; 
    31 import de.ugoe.cs.autoquest.usability.result.UsabilityDefect; 
     30import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver; 
     31import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription; 
    3232import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric; 
    3333import de.ugoe.cs.autoquest.usability.rules.UsabilityRule; 
    34 import de.ugoe.cs.autoquest.usability.tasktree.FilterResult; 
    35 import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy; 
    36 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter; 
     34import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult; 
     35import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy; 
     36import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter; 
    3737 
    3838/** 
    3939 * <p> 
    40  * TODO comment 
     40 * Metric, which calculates the ratio ratio between non letter or digit characters and all entered 
     41 * characters. 
    4142 * </p> 
    4243 *  
     
    4748    /** 
    4849     * <p> 
    49      * TODO: comment 
     50     * Constructor. Creates a new {@code NoLetterOrDigitRatioMetric} for a given task model. 
    5051     * </p> 
    51      * 
    52      * @param taskTree 
     52     *  
     53     * @param taskModel 
    5354     */ 
    5455    public NoLetterOrDigitRatioMetric(ITaskModel taskModel) { 
    5556        super(taskModel); 
    5657        this.name = "NoLetterOrDigitRatio"; 
    57         this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName()); 
     58        this.defect = 
     59            new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass() 
     60                .getSimpleName()); 
    5861    } 
    5962 
    60     /* (non-Javadoc) 
     63    /* 
     64     * (non-Javadoc) 
     65     *  
    6166     * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check() 
    6267     */ 
    6368    @Override 
    64     public Optional<UsabilityDefect> calculate() { 
     69    public Optional<UsabilityProblemDescription> calculate() { 
    6570        FilterResult textInputEvents = extractNodesFromTaskTree(); 
    6671        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter()); 
    6772        return this.defect.isPresent(evaluationMetric); 
    6873    } 
    69      
     74 
     75    /** 
     76     *  
     77     * <p> 
     78     * Filters all text input events from task model. 
     79     * </p> 
     80     *  
     81     * @return {@code FilterResult} 
     82     */ 
    7083    private FilterResult extractNodesFromTaskTree() { 
    7184        return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT) 
    7285            .from(this.taskModel); 
    7386    } 
    74      
     87 
     88    /** 
     89     *  
     90     * <p> 
     91     * Calculates the metric. 
     92     * </p> 
     93     *  
     94     * @param textInputEvents 
     95     *            all text input events 
     96     * @return ratio between non letter or digit characters and all entered characters 
     97     */ 
    7598    private float calculateEvaluationMetric(List<ITask> textInputEvents) { 
    76         Multiset<String> enteredTextFragments = 
    77             aggregateEnteredTextFromTextInputs(textInputEvents); 
     99        Multiset<String> enteredTextFragments = aggregateEnteredTextFromTextInputs(textInputEvents); 
    78100        int allCharactersCount = 0; 
    79101        int noLetterOrDigitCount = 0; 
     
    82104            allCharactersCount += CharMatcher.ANY.countIn(textFragment) * occurencesOfTextFragment; 
    83105            noLetterOrDigitCount += 
    84                 CharMatcher.forPredicate(characterIsLetterOrDigitPredicate()).countIn(textFragment) * 
    85                     occurencesOfTextFragment; 
     106                CharMatcher.forPredicate(characterIsNoLetterOrDigitPredicate()) 
     107                    .countIn(textFragment) * occurencesOfTextFragment; 
    86108        } 
    87109        return allCharactersCount != 0 ? (float) noLetterOrDigitCount / (float) allCharactersCount 
     
    89111    } 
    90112 
    91     /* (non-Javadoc) 
    92      * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller) 
     113    /* 
     114     * (non-Javadoc) 
     115     *  
     116     * @see 
     117     * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest 
     118     * .usability.EvaluationMethodCaller) 
    93119     */ 
    94120    @Override 
    95     public Optional<UsabilityDefect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller) 
     121    public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller) 
    96122    { 
    97123        return evaluationMethodCaller.check(this); 
Note: See TracChangeset for help on using the changeset viewer.