Changeset 1493 for trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/TextInputStatisticsRule.java
- Timestamp:
- 04/11/14 11:21:45 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/TextInputStatisticsRule.java
r1335 r1493 15 15 package de.ugoe.cs.autoquest.usability; 16 16 17 import java.text.DecimalFormat;18 17 import java.util.ArrayList; 19 18 import java.util.Collection; … … 57 56 calculateStatistics(taskModel.getUserSessions(), statistics); 58 57 59 UsabilityEvaluationResult results = new UsabilityEvaluationResult( );58 UsabilityEvaluationResult results = new UsabilityEvaluationResult(taskModel); 60 59 analyzeStatistics(statistics, results); 61 60 … … 80 79 UsabilityEvaluationResult results) 81 80 { 82 float allTextFieldInputs =81 int allTextFieldInputs = 83 82 statistics.getNoOfTextFieldInputs() + statistics.getNoOfTextAreaInputs(); 84 83 85 float ratio = allTextFieldInputs / (float) statistics.getNoOfAllEvents(); 86 87 UsabilityDefectSeverity severity = null; 88 if (ratio > 0.9) { 89 severity = UsabilityDefectSeverity.HIGH; 90 } 91 else if (ratio > 0.7) { 92 severity = UsabilityDefectSeverity.MEDIUM; 93 } 94 else if (ratio > 0.5) { 95 severity = UsabilityDefectSeverity.LOW; 96 } 97 else if (ratio > 0.3) { 98 severity = UsabilityDefectSeverity.INFO; 99 } 100 84 int ratio = 1000 * allTextFieldInputs / statistics.getNoOfAllEvents(); 85 86 // TODO comment magic numbers 87 UsabilityDefectSeverity severity = UsabilityDefectSeverity.getSeverity 88 (ratio, 900, 700, 500, 300); 89 101 90 if (severity != null) { 102 Map<String, String> parameters = new HashMap<String, String>();103 parameters.put("textInputRatio", DecimalFormat.getInstance().format(ratio * 100));91 Map<String, Object> parameters = new HashMap<String, Object>(); 92 parameters.put("textInputRatio", (ratio / 10)); 104 93 105 94 results.addDefect … … 122 111 int noOfUsagesOfTextField1WithSameTextInTextField2 = entry.enteredTexts.size(); 123 112 124 float ratioTextField1 =125 noOfUsagesOfTextField1WithSameTextInTextField2 / (float)noOfUsagesOfTextField1;126 127 float ratioTextField2 =128 noOfUsagesOfTextField1WithSameTextInTextField2 / (float)noOfUsagesOfTextField2;129 130 createTextFieldEntryRepetitionDefect 131 (ratioTextField1, entry.textField1,entry.textField2, results);132 133 createTextFieldEntryRepetitionDefect 134 (ratioTextField2, entry.textField2,entry.textField1, results);135 136 } 137 } 138 139 /** 140 * 141 */ 142 private void createTextFieldEntryRepetitionDefect( floatratioOfEqualEntries,113 int ratioTextField1 = 114 1000 * noOfUsagesOfTextField1WithSameTextInTextField2 / noOfUsagesOfTextField1; 115 116 int ratioTextField2 = 117 1000 * noOfUsagesOfTextField1WithSameTextInTextField2 / noOfUsagesOfTextField2; 118 119 createTextFieldEntryRepetitionDefect(ratioTextField1, entry.textField1, 120 entry.textField2, results); 121 122 createTextFieldEntryRepetitionDefect(ratioTextField2, entry.textField2, 123 entry.textField1, results); 124 125 } 126 } 127 128 /** 129 * 130 */ 131 private void createTextFieldEntryRepetitionDefect(int ratioOfEqualEntries, 143 132 ITextField textField1, 144 133 ITextField textField2, 145 134 UsabilityEvaluationResult results) 146 135 { 147 UsabilityDefectSeverity severity = null; 148 if (ratioOfEqualEntries > 0.9) { 149 severity = UsabilityDefectSeverity.HIGH; 150 } 151 else if (ratioOfEqualEntries > 0.5) { 152 severity = UsabilityDefectSeverity.MEDIUM; 153 } 154 else if (ratioOfEqualEntries > 0.2) { 155 severity = UsabilityDefectSeverity.LOW; 156 } 157 else if (ratioOfEqualEntries > 0.1) { 158 severity = UsabilityDefectSeverity.INFO; 159 } 136 // TODO comment magic numbers 137 UsabilityDefectSeverity severity = UsabilityDefectSeverity.getSeverity 138 (ratioOfEqualEntries, 900, 500, 200, 100); 160 139 161 140 if (severity != null) { 162 Map<String, String> parameters = new HashMap<String, String>(); 163 parameters.put("textRepetitionRatio", 164 DecimalFormat.getInstance().format(ratioOfEqualEntries * 100)); 165 parameters.put("textField1", textField1.toString()); 166 parameters.put("textField2", textField2.toString()); 141 Map<String, Object> parameters = new HashMap<String, Object>(); 142 parameters.put("textRepetitionRatio", (ratioOfEqualEntries / 10)); 143 parameters.put("textField1", textField1); 144 parameters.put("textField2", textField2); 167 145 168 146 results.addDefect … … 192 170 } 193 171 194 float ratio = (float) noLetterOrDigitCount / (float) allCharactersCount; 195 196 UsabilityDefectSeverity severity = null; 197 if (ratio > 0.1) { // every 10th sign 198 severity = UsabilityDefectSeverity.HIGH; 199 } 200 else if (ratio > 0.05) { // every 20th sign 201 severity = UsabilityDefectSeverity.MEDIUM; 202 } 203 else if (ratio > 0.02) { // every 50th sign 204 severity = UsabilityDefectSeverity.LOW; 205 } 206 else if (ratio > 0.01) { // every 100th sign 207 severity = UsabilityDefectSeverity.INFO; 208 } 172 int ratio = 1000 * noLetterOrDigitCount / allCharactersCount; 173 174 UsabilityDefectSeverity severity = 175 UsabilityDefectSeverity.getSeverity(ratio, 176 100, // every 10th sign 177 50, // every 20th sign 178 20, // every 50th sign 179 10 // every 100th sign 180 ); 209 181 210 182 if (severity != null) { 211 Map<String, String> parameters = new HashMap<String, String>(); 212 parameters.put("textField", textField.toString()); 213 parameters.put("noLetterOrDigitRatio", 214 DecimalFormat.getInstance().format(ratio * 100)); 183 Map<String, Object> parameters = new HashMap<String, Object>(); 184 parameters.put("textField", textField); 185 parameters.put("noLetterOrDigitRatio", (ratio / 10)); 215 186 216 187 results.addDefect 217 (severity, UsabilityDefectDescription.TEXT_FIELD_NO_LETTER_OR_DIGIT_RATIO, parameters); 188 (severity, UsabilityDefectDescription.TEXT_FIELD_NO_LETTER_OR_DIGIT_RATIO, 189 parameters); 218 190 } 219 191 }
Note: See TracChangeset
for help on using the changeset viewer.