Changeset 1217 for trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java
- Timestamp:
- 06/06/13 17:08:25 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java
r1199 r1217 15 15 package de.ugoe.cs.autoquest.usability.rules.metrics; 16 16 17 import static de.ugoe.cs.autoquest.usability.task tree.filters.EventTypeFilter.TEXT_INPUT;17 import static de.ugoe.cs.autoquest.usability.taskmodel.filter.types.EventTypeFilter.TEXT_INPUT; 18 18 import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.aggregateEnteredTextFromTextInputs; 19 19 … … 28 28 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 29 29 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; 30 import de.ugoe.cs.autoquest.usability.result. DefectDescriptionResolver;31 import de.ugoe.cs.autoquest.usability.result.Usability Defect;30 import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver; 31 import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription; 32 32 import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric; 33 33 import de.ugoe.cs.autoquest.usability.rules.UsabilityRule; 34 import de.ugoe.cs.autoquest.usability.task tree.FilterResult;35 import de.ugoe.cs.autoquest.usability.task tree.IterativeDFSFilterStrategy;36 import de.ugoe.cs.autoquest.usability.task tree.filters.TaskModelFilter;34 import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult; 35 import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy; 36 import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter; 37 37 38 38 /** 39 39 * <p> 40 * TODO comment 40 * Metric, which measures either the repetition of entered words or the maximum repetition of a 41 * single word. 41 42 * </p> 42 43 * … … 47 48 /** 48 49 * <p> 49 * TODO: comment50 * Constructor. Creates a new {@link TextInputEntryRepetitionsMetric} for a given task model. 50 51 * </p> 51 * 52 * @param task Tree52 * 53 * @param taskModel 53 54 */ 54 55 public TextInputEntryRepetitionsMetric(ITaskModel taskModel) { 55 56 super(taskModel); 56 57 this.name = "TextInputEntryRepetitions"; 57 this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName()); 58 this.defect = 59 new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass() 60 .getSimpleName()); 58 61 } 59 62 60 /* (non-Javadoc) 63 /* 64 * (non-Javadoc) 65 * 61 66 * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check() 62 67 */ 63 68 @Override 64 public Optional<Usability Defect> calculate() {69 public Optional<UsabilityProblemDescription> calculate() { 65 70 FilterResult textInputEvents = extractNodesFromTaskTree(); 66 71 float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter()); 67 72 return this.defect.isPresent(evaluationMetric); 68 73 } 69 74 75 /** 76 * 77 * <p> 78 * Filters all text input events from task model. 79 * </p> 80 * 81 * @return {@code FilterResult} 82 */ 70 83 private FilterResult extractNodesFromTaskTree() { 71 84 return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT) 72 85 .from(this.taskModel); 73 86 } 74 87 88 /** 89 * 90 * <p> 91 * Calculates the metric. 92 * </p> 93 * 94 * @param textInputEvents 95 * all text input events 96 * @return either number of repeated words or the number of repetitions of the most entered word 97 */ 75 98 private float calculateEvaluationMetric(List<ITask> textInputEvents) { 76 Multiset<String> enteredTextFragments = 77 aggregateEnteredTextFromTextInputs(textInputEvents); 99 Multiset<String> enteredTextFragments = aggregateEnteredTextFromTextInputs(textInputEvents); 78 100 Multiset<String> orderedTextFragmentsWithMultipleOccurences = 79 101 onlyTextFragmentsWithMultipleOccurences(enteredTextFragments); … … 86 108 orderedTextFragmentsWithMultipleOccurences 87 109 .count(wordWithHighestRepetitionInTextFragments); 88 return Math.max(numberOfRepeatedWords, maxRepetitions -1);110 return Math.max(numberOfRepeatedWords, maxRepetitions - 1); 89 111 } 90 112 113 /** 114 * 115 * <p> 116 * Return only words, which at least entered twice. 117 * </p> 118 * 119 * @param allTextInputs 120 * all text input events 121 * @return all word, which used min. twice 122 */ 91 123 private Multiset<String> onlyTextFragmentsWithMultipleOccurences(final Multiset<String> allTextInputs) 92 124 { … … 104 136 } 105 137 106 /* (non-Javadoc) 107 * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller) 138 /* 139 * (non-Javadoc) 140 * 141 * @see 142 * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest 143 * .usability.EvaluationMethodCaller) 108 144 */ 109 145 @Override 110 public Optional<Usability Defect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)146 public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller) 111 147 { 112 148 return evaluationMethodCaller.check(this); 113 149 } 114 150 115 151 }
Note: See TracChangeset
for help on using the changeset viewer.