Changeset 1217 for trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.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/TextInputRatioMetric.java
r1152 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 19 19 import java.util.List; … … 27 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 28 28 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; 29 import de.ugoe.cs.autoquest.usability.result. DefectDescriptionResolver;30 import de.ugoe.cs.autoquest.usability.result.Usability Defect;29 import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver; 30 import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription; 31 31 import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric; 32 32 import de.ugoe.cs.autoquest.usability.rules.UsabilityRule; 33 import de.ugoe.cs.autoquest.usability.task tree.FilterResult;34 import de.ugoe.cs.autoquest.usability.task tree.IterativeDFSFilterStrategy;35 import de.ugoe.cs.autoquest.usability.task tree.filters.TaskModelFilter;33 import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult; 34 import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy; 35 import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter; 36 36 37 37 /** 38 38 * <p> 39 * TODO comment39 * Metric, which measures the ratio between the text input and the non text input events. 40 40 * </p> 41 41 * … … 46 46 /** 47 47 * <p> 48 * TODO: comment48 * Constructor. Creates a new {@code TextInputRatioMetric} for a given task model. 49 49 * </p> 50 * 50 * 51 51 * @param taskTree 52 52 */ … … 54 54 super(taskModel); 55 55 this.name = "TextInputRatio"; 56 this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName()); 56 this.defect = 57 new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass() 58 .getSimpleName()); 57 59 } 58 60 59 /* (non-Javadoc) 61 /* 62 * (non-Javadoc) 63 * 60 64 * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check() 61 65 */ 62 66 @Override 63 public Optional<Usability Defect> calculate() {67 public Optional<UsabilityProblemDescription> calculate() { 64 68 FilterResult textInputEvents = extractNodesFromTaskTree(); 65 float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(), textInputEvents.tasksNotMatchedFilter()); 69 float evaluationMetric = 70 calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(), 71 textInputEvents.tasksNotMatchedFilter()); 66 72 return this.defect.isPresent(evaluationMetric); 67 73 } 68 74 75 /** 76 * 77 * <p> 78 * Filters all text input events from task model. 79 * </p> 80 * 81 * @return {@code FilterResult} 82 */ 69 83 private FilterResult extractNodesFromTaskTree() { 70 84 return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT) 71 85 .from(this.taskModel); 72 86 } 73 74 private float calculateEvaluationMetric(List<ITask> textInputEvents, List<ITask> nonTextInputEvents) { 87 88 /** 89 * 90 * <p> 91 * Calculates the metric. 92 * </p> 93 * 94 * @param textInputEvents 95 * all text input events 96 * @param nonTextInputEvents 97 * all non text input events 98 * @return ratio between text input and non text input events 99 */ 100 private float calculateEvaluationMetric(List<ITask> textInputEvents, 101 List<ITask> nonTextInputEvents) 102 { 75 103 float numberOfTextInputEvents = textInputEvents.size(); 76 104 float numberOfNonTextInputEvents = nrOfEventTasksNotMatchedFilter(nonTextInputEvents); … … 78 106 } 79 107 108 /** 109 * 110 * <p> 111 * Filters all {@link IEventTask}s from non text input event. 112 * </p> 113 * 114 * @param nonTextInputEvents 115 * all non text input events 116 * @return number of {@link IEventTask}s 117 */ 80 118 private int nrOfEventTasksNotMatchedFilter(List<ITask> nonTextInputEvents) { 81 return Iterables.size(Iterables.filter(nonTextInputEvents, 82 new Predicate<ITask>() { 119 return Iterables.size(Iterables.filter(nonTextInputEvents, new Predicate<ITask>() { 83 120 84 85 86 87 88 121 @Override 122 public boolean apply(ITask task) { 123 return task instanceof IEventTask; 124 } 125 })); 89 126 } 90 127 91 /* (non-Javadoc) 92 * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller) 128 /* 129 * (non-Javadoc) 130 * 131 * @see 132 * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest 133 * .usability.EvaluationMethodCaller) 93 134 */ 94 135 @Override 95 public Optional<Usability Defect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)136 public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller) 96 137 { 97 138 return evaluationMethodCaller.check(this);
Note: See TracChangeset
for help on using the changeset viewer.