Commit 6af6311f1efd3ac71ee397d8328fd6d2336508e3
1 parent
ece5f89a
Exists in
master
and in
1 other branch
git-svn-id: https://svn.bento.ifrs.edu.br/default/ASES/ASES%20-%20Web/ASES%20-%2…
…0Web/Fontes/avaliador-api@10688 c2178572-b5ca-4887-91d2-9e3a90c7d55b
Showing
83 changed files
with
1587 additions
and
1174 deletions
Show diff stats
src/main/java/br/com/checker/emag/core/ContentEvaluation.java
@@ -24,74 +24,162 @@ import br.com.checker.emag.Occurrence; | @@ -24,74 +24,162 @@ import br.com.checker.emag.Occurrence; | ||
24 | import br.com.checker.emag.OccurrenceClassification; | 24 | import br.com.checker.emag.OccurrenceClassification; |
25 | import br.com.checker.emag.core.SpecificRecommendation.ContentRecommendation; | 25 | import br.com.checker.emag.core.SpecificRecommendation.ContentRecommendation; |
26 | 26 | ||
27 | -public class ContentEvaluation extends Evaluation{ | 27 | +public class ContentEvaluation extends Evaluation { |
28 | 28 | ||
29 | - private ContentEvaluation(Source document) { super(document); } | ||
30 | - | ||
31 | - private ContentEvaluation(Source document,String url) { | ||
32 | - super(document,url); | 29 | + private ContentEvaluation(Source document) { |
30 | + super(document); | ||
33 | } | 31 | } |
34 | - | 32 | + |
33 | + private ContentEvaluation(Source document, String url) { | ||
34 | + super(document, url); | ||
35 | + } | ||
36 | + | ||
35 | public static class ContentEvaluationBuilder extends EvaluationBuilder { | 37 | public static class ContentEvaluationBuilder extends EvaluationBuilder { |
36 | - | 38 | + |
37 | @Override | 39 | @Override |
38 | - protected ContentEvaluation with(Source document) { return new ContentEvaluation(document); } | ||
39 | - | 40 | + protected ContentEvaluation with(Source document) { |
41 | + return new ContentEvaluation(document); | ||
42 | + } | ||
43 | + | ||
40 | @Override | 44 | @Override |
41 | - protected ContentEvaluation with(Source document,String url) { return new ContentEvaluation(document,url); } | ||
42 | - | ||
43 | - public SpecificRecommendation recommendation17() { return new EvaluationRecommendation17();} | ||
44 | - public SpecificRecommendation recommendation18() { return new EvaluationRecommendation18();} | ||
45 | - public SpecificRecommendation recommendation19() { return new EvaluationRecommendation19();} | ||
46 | - public SpecificRecommendation recommendation20() { return new EvaluationRecommendation20();} | ||
47 | - public SpecificRecommendation recommendation21() { return new EvaluationRecommendation21();} | ||
48 | - public SpecificRecommendation recommendation22() { return new EvaluationRecommendation22();} | ||
49 | - public SpecificRecommendation recommendation23() { return new EvaluationRecommendation23();} | ||
50 | - public SpecificRecommendation recommendation24() { return new EvaluationRecommendation24();} | ||
51 | - public SpecificRecommendation recommendation25() { return new EvaluationRecommendation25();} | ||
52 | - public SpecificRecommendation recommendation26() { return new EvaluationRecommendation26();} | ||
53 | - public SpecificRecommendation recommendation27() { return new EvaluationRecommendation27();} | ||
54 | - public SpecificRecommendation recommendation28() { return new EvaluationRecommendation28();} | ||
55 | - | 45 | + protected ContentEvaluation with(Source document, String url) { |
46 | + return new ContentEvaluation(document, url); | ||
47 | + } | ||
48 | + | ||
49 | + public SpecificRecommendation recommendation17() { | ||
50 | + return new EvaluationRecommendation17(); | ||
51 | + } | ||
52 | + | ||
53 | + public SpecificRecommendation recommendation18() { | ||
54 | + return new EvaluationRecommendation18(); | ||
55 | + } | ||
56 | + | ||
57 | + public SpecificRecommendation recommendation19() { | ||
58 | + return new EvaluationRecommendation19(); | ||
59 | + } | ||
60 | + | ||
61 | + public SpecificRecommendation recommendation20() { | ||
62 | + return new EvaluationRecommendation20(); | ||
63 | + } | ||
64 | + | ||
65 | + public SpecificRecommendation recommendation21() { | ||
66 | + return new EvaluationRecommendation21(); | ||
67 | + } | ||
68 | + | ||
69 | + public SpecificRecommendation recommendation22() { | ||
70 | + return new EvaluationRecommendation22(); | ||
71 | + } | ||
72 | + | ||
73 | + public SpecificRecommendation recommendation23() { | ||
74 | + return new EvaluationRecommendation23(); | ||
75 | + } | ||
76 | + | ||
77 | + public SpecificRecommendation recommendation24() { | ||
78 | + return new EvaluationRecommendation24(); | ||
79 | + } | ||
80 | + | ||
81 | + public SpecificRecommendation recommendation25() { | ||
82 | + return new EvaluationRecommendation25(); | ||
83 | + } | ||
84 | + | ||
85 | + public SpecificRecommendation recommendation26() { | ||
86 | + return new EvaluationRecommendation26(); | ||
87 | + } | ||
88 | + | ||
89 | + public SpecificRecommendation recommendation27() { | ||
90 | + return new EvaluationRecommendation27(); | ||
91 | + } | ||
92 | + | ||
93 | + public SpecificRecommendation recommendation28() { | ||
94 | + return new EvaluationRecommendation28(); | ||
95 | + } | ||
96 | + | ||
56 | } | 97 | } |
57 | - | ||
58 | - protected static class EvaluationRecommendation17 extends ContentRecommendation{ | ||
59 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation17();} | 98 | + |
99 | + protected static class EvaluationRecommendation17 extends | ||
100 | + ContentRecommendation { | ||
101 | + protected List<Occurrence> check() { | ||
102 | + return getEvaluation().checkRecommendation17(); | ||
103 | + } | ||
60 | } | 104 | } |
61 | - protected static class EvaluationRecommendation18 extends ContentRecommendation{ | ||
62 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation18();} | 105 | + |
106 | + protected static class EvaluationRecommendation18 extends | ||
107 | + ContentRecommendation { | ||
108 | + protected List<Occurrence> check() { | ||
109 | + return getEvaluation().checkRecommendation18(); | ||
110 | + } | ||
63 | } | 111 | } |
64 | - protected static class EvaluationRecommendation19 extends ContentRecommendation{ | ||
65 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation19();} | 112 | + |
113 | + protected static class EvaluationRecommendation19 extends | ||
114 | + ContentRecommendation { | ||
115 | + protected List<Occurrence> check() { | ||
116 | + return getEvaluation().checkRecommendation19(); | ||
117 | + } | ||
66 | } | 118 | } |
67 | - protected static class EvaluationRecommendation20 extends ContentRecommendation{ | ||
68 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation20();} | 119 | + |
120 | + protected static class EvaluationRecommendation20 extends | ||
121 | + ContentRecommendation { | ||
122 | + protected List<Occurrence> check() { | ||
123 | + return getEvaluation().checkRecommendation20(); | ||
124 | + } | ||
69 | } | 125 | } |
70 | - protected static class EvaluationRecommendation21 extends ContentRecommendation{ | ||
71 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation21();} | 126 | + |
127 | + protected static class EvaluationRecommendation21 extends | ||
128 | + ContentRecommendation { | ||
129 | + protected List<Occurrence> check() { | ||
130 | + return getEvaluation().checkRecommendation21(); | ||
131 | + } | ||
72 | } | 132 | } |
73 | - protected static class EvaluationRecommendation22 extends ContentRecommendation{ | ||
74 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation22();} | 133 | + |
134 | + protected static class EvaluationRecommendation22 extends | ||
135 | + ContentRecommendation { | ||
136 | + protected List<Occurrence> check() { | ||
137 | + return getEvaluation().checkRecommendation22(); | ||
138 | + } | ||
75 | } | 139 | } |
76 | - protected static class EvaluationRecommendation23 extends ContentRecommendation{ | ||
77 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation23();} | 140 | + |
141 | + protected static class EvaluationRecommendation23 extends | ||
142 | + ContentRecommendation { | ||
143 | + protected List<Occurrence> check() { | ||
144 | + return getEvaluation().checkRecommendation23(); | ||
145 | + } | ||
78 | } | 146 | } |
79 | - protected static class EvaluationRecommendation24 extends ContentRecommendation{ | ||
80 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation24();} | 147 | + |
148 | + protected static class EvaluationRecommendation24 extends | ||
149 | + ContentRecommendation { | ||
150 | + protected List<Occurrence> check() { | ||
151 | + return getEvaluation().checkRecommendation24(); | ||
152 | + } | ||
81 | } | 153 | } |
82 | - protected static class EvaluationRecommendation25 extends ContentRecommendation{ | ||
83 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation25();} | 154 | + |
155 | + protected static class EvaluationRecommendation25 extends | ||
156 | + ContentRecommendation { | ||
157 | + protected List<Occurrence> check() { | ||
158 | + return getEvaluation().checkRecommendation25(); | ||
159 | + } | ||
84 | } | 160 | } |
85 | - protected static class EvaluationRecommendation26 extends ContentRecommendation{ | ||
86 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation26();} | 161 | + |
162 | + protected static class EvaluationRecommendation26 extends | ||
163 | + ContentRecommendation { | ||
164 | + protected List<Occurrence> check() { | ||
165 | + return getEvaluation().checkRecommendation26(); | ||
166 | + } | ||
87 | } | 167 | } |
88 | - protected static class EvaluationRecommendation27 extends ContentRecommendation{ | ||
89 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation27();} | 168 | + |
169 | + protected static class EvaluationRecommendation27 extends | ||
170 | + ContentRecommendation { | ||
171 | + protected List<Occurrence> check() { | ||
172 | + return getEvaluation().checkRecommendation27(); | ||
173 | + } | ||
90 | } | 174 | } |
91 | - protected static class EvaluationRecommendation28 extends ContentRecommendation{ | ||
92 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation28();} | 175 | + |
176 | + protected static class EvaluationRecommendation28 extends | ||
177 | + ContentRecommendation { | ||
178 | + protected List<Occurrence> check() { | ||
179 | + return getEvaluation().checkRecommendation28(); | ||
180 | + } | ||
93 | } | 181 | } |
94 | - | 182 | + |
95 | public List<Occurrence> check() { | 183 | public List<Occurrence> check() { |
96 | getOccurrences().clear(); | 184 | getOccurrences().clear(); |
97 | getOccurrences().addAll(checkRecommendation17()); | 185 | getOccurrences().addAll(checkRecommendation17()); |
@@ -106,198 +194,244 @@ public class ContentEvaluation extends Evaluation{ | @@ -106,198 +194,244 @@ public class ContentEvaluation extends Evaluation{ | ||
106 | getOccurrences().addAll(checkRecommendation26()); | 194 | getOccurrences().addAll(checkRecommendation26()); |
107 | getOccurrences().addAll(checkRecommendation27()); | 195 | getOccurrences().addAll(checkRecommendation27()); |
108 | getOccurrences().addAll(checkRecommendation28()); | 196 | getOccurrences().addAll(checkRecommendation28()); |
109 | - | 197 | + |
110 | return getOccurrences(); | 198 | return getOccurrences(); |
111 | } | 199 | } |
112 | - | ||
113 | - | 200 | + |
114 | private List<Occurrence> checkRecommendation17() { | 201 | private List<Occurrence> checkRecommendation17() { |
115 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 202 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
116 | - | 203 | + |
117 | Element html = getDocument().getFirstElement("html"); | 204 | Element html = getDocument().getFirstElement("html"); |
118 | - | 205 | + |
119 | if (html != null) { | 206 | if (html != null) { |
120 | Attribute lang = html.getAttributes().get("lang"); | 207 | Attribute lang = html.getAttributes().get("lang"); |
121 | Attribute xmlLang = html.getAttributes().get("xml:lang"); | 208 | Attribute xmlLang = html.getAttributes().get("xml:lang"); |
122 | Attribute xmlns = html.getAttributes().get("xmlns"); | 209 | Attribute xmlns = html.getAttributes().get("xmlns"); |
123 | - | 210 | + |
124 | String tagHtml = getDocument().getFirstStartTag("html").toString(); | 211 | String tagHtml = getDocument().getFirstStartTag("html").toString(); |
125 | - | ||
126 | - | ||
127 | - /*if ( lang == null && xmlLang == null){ | ||
128 | - occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, "1")); | ||
129 | - } | ||
130 | - | ||
131 | - if(xmlLang != null && !(lang == null || xmlLang == null)){ | ||
132 | - occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, "1")); | ||
133 | - }else if (lang != null && lang.getValue().isEmpty()) { | ||
134 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
135 | - } else if (xmlLang != null && xmlLang.getValue().isEmpty()) { | ||
136 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
137 | - }else if (xmlns != null && xmlns.getValue().isEmpty()) { | ||
138 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
139 | - }*/ | ||
140 | - | ||
141 | - | ||
142 | - if (lang == null){ | ||
143 | - occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, "1")); | 212 | + String doctype = getDocument().getFirstStartTag().toString() |
213 | + .replace(" ", ""); | ||
214 | + | ||
215 | + /* | ||
216 | + * if ( lang == null && xmlLang == null){ | ||
217 | + * occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, | ||
218 | + * "1")); } | ||
219 | + * | ||
220 | + * if(xmlLang != null && !(lang == null || xmlLang == null)){ | ||
221 | + * occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, | ||
222 | + * "1")); }else if (lang != null && lang.getValue().isEmpty()) { | ||
223 | + * occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, | ||
224 | + * "2")); } else if (xmlLang != null && | ||
225 | + * xmlLang.getValue().isEmpty()) { | ||
226 | + * occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, | ||
227 | + * "2")); }else if (xmlns != null && xmlns.getValue().isEmpty()) { | ||
228 | + * occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, | ||
229 | + * "2")); } | ||
230 | + */ | ||
231 | + | ||
232 | + if (lang == null) { | ||
233 | + occurrences.add(this.buildOccurrence("3.1", true, tagHtml, | ||
234 | + html, "1")); | ||
144 | } | 235 | } |
145 | - | ||
146 | - if (xmlLang == null){ | ||
147 | - occurrences.add(this.buildOccurrence("3.1", true, tagHtml, html, "1")); | 236 | + |
237 | + // Caso seja diferente de html5 | ||
238 | + if (!doctype.equals("<!DOCTYPEhtml>")) { | ||
239 | + | ||
240 | + if (xmlLang == null) { | ||
241 | + occurrences.add(this.buildOccurrence("3.1", true, tagHtml, | ||
242 | + html, "1")); | ||
243 | + } | ||
148 | } | 244 | } |
149 | - | 245 | + |
150 | if (lang == null && (xmlLang != null || xmlns != null)) { | 246 | if (lang == null && (xmlLang != null || xmlns != null)) { |
151 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | 247 | + occurrences.add(this.buildOccurrence("3.1", false, tagHtml, |
248 | + html, "2")); | ||
152 | } else if (lang != null && lang.getValue().isEmpty()) { | 249 | } else if (lang != null && lang.getValue().isEmpty()) { |
153 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
154 | - } else if (xmlLang != null && xmlLang.getValue().isEmpty()) { | ||
155 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
156 | - }else if (xmlns != null && xmlns.getValue().isEmpty()) { | ||
157 | - occurrences.add(this.buildOccurrence("3.1", false, tagHtml, html, "2")); | ||
158 | - } | ||
159 | - | ||
160 | - /*if (lang == null && xmlns != null) { | ||
161 | - occurrences.add(this.buildOccurrence("3.1", false, html.toString(), html, "2")); | ||
162 | - } else if (xmlns != null && xmlLang.getValue().isEmpty()) { | ||
163 | - occurrences.add(this.buildOccurrence("3.1", false, html.toString(), html, "2")); | ||
164 | - } else if (xmlns != null && xmlns.getValue().isEmpty()) { | ||
165 | - occurrences.add(this.buildOccurrence("3.1", false, html.toString(), html, "2")); | 250 | + occurrences.add(this.buildOccurrence("3.1", false, tagHtml, |
251 | + html, "2")); | ||
252 | + } else if (xmlLang != null && xmlLang.getValue().isEmpty()) { | ||
253 | + occurrences.add(this.buildOccurrence("3.1", false, tagHtml, | ||
254 | + html, "2")); | ||
255 | + } else if (xmlns != null && xmlns.getValue().isEmpty()) { | ||
256 | + occurrences.add(this.buildOccurrence("3.1", false, tagHtml, | ||
257 | + html, "2")); | ||
166 | } | 258 | } |
167 | -*/ | 259 | + |
260 | + /* | ||
261 | + * if (lang == null && xmlns != null) { | ||
262 | + * occurrences.add(this.buildOccurrence("3.1", false, | ||
263 | + * html.toString(), html, "2")); } else if (xmlns != null && | ||
264 | + * xmlLang.getValue().isEmpty()) { | ||
265 | + * occurrences.add(this.buildOccurrence("3.1", false, | ||
266 | + * html.toString(), html, "2")); } else if (xmlns != null && | ||
267 | + * xmlns.getValue().isEmpty()) { | ||
268 | + * occurrences.add(this.buildOccurrence("3.1", false, | ||
269 | + * html.toString(), html, "2")); } | ||
270 | + */ | ||
168 | } | 271 | } |
169 | - | 272 | + |
170 | return occurrences; | 273 | return occurrences; |
171 | } | 274 | } |
172 | - | ||
173 | - | 275 | + |
174 | private List<Occurrence> checkRecommendation18() { | 276 | private List<Occurrence> checkRecommendation18() { |
175 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 277 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
176 | - | 278 | + |
177 | for (Element element : getDocument().getAllElements()) { | 279 | for (Element element : getDocument().getAllElements()) { |
178 | - if(!element.getName().equals("html")){ | ||
179 | - | ||
180 | - if(element.getName().equals("a") && element.getAttributeValue("href") != null){ | ||
181 | - if(element.getAttributeValue("href").contains("/?lang=")){ | ||
182 | - occurrences.add(this.buildOccurrence("3.2", false, element.toString(), element, "1")); | ||
183 | - } | ||
184 | - }else if(element.getAttributeValue("lang") != null) | ||
185 | - occurrences.add(this.buildOccurrence("3.2", false, element.toString(), element, "1")); | 280 | + if (!element.getName().equals("html")) { |
281 | + | ||
282 | + if (element.getName().equals("a") | ||
283 | + && element.getAttributeValue("href") != null) { | ||
284 | + if (element.getAttributeValue("href").contains("/?lang=")) { | ||
285 | + occurrences.add(this.buildOccurrence("3.2", false, | ||
286 | + element.toString(), element, "1")); | ||
287 | + } | ||
288 | + } else if (element.getAttributeValue("lang") != null) | ||
289 | + occurrences.add(this.buildOccurrence("3.2", false, | ||
290 | + element.toString(), element, "1")); | ||
186 | } | 291 | } |
187 | } | 292 | } |
188 | - | 293 | + |
189 | return occurrences; | 294 | return occurrences; |
190 | } | 295 | } |
191 | - | 296 | + |
192 | private List<Occurrence> checkRecommendation19() { | 297 | private List<Occurrence> checkRecommendation19() { |
193 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 298 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
194 | - | ||
195 | - //Element head = getDocument().getFirstElement("head"); | ||
196 | - | ||
197 | - //if(head == null) { | ||
198 | - //occurrences.add(new Occurrence("3.3", true, getDocument().getFirstElement().toString(),OccurrenceClassification.CONTENT_INFORMATION,"1")); | ||
199 | - //}else { | ||
200 | - //if(head != null) { | ||
201 | - Element title = getDocument().getFirstElement("title"); | ||
202 | - if (title == null) { | ||
203 | - occurrences.add(this.buildOccurrence("3.3", true, " Observação – Sem Fonte (Não existe título na página)", getDocument().getFirstElement(), "1")); | ||
204 | - //occurrences.add(new Occurrence("3.3", true, "Sem fonte (n�o existe t�tulo na p�gina)",OccurrenceClassification.CONTENT_INFORMATION,"1")); | ||
205 | - } else if (title.isEmpty()) { | ||
206 | - occurrences.add(buildOccurrence("3.3", true, title.toString(), title, "1")); | ||
207 | - } | ||
208 | - //} | ||
209 | - | 299 | + |
300 | + // Element head = getDocument().getFirstElement("head"); | ||
301 | + | ||
302 | + // if(head == null) { | ||
303 | + // occurrences.add(new Occurrence("3.3", true, | ||
304 | + // getDocument().getFirstElement().toString(),OccurrenceClassification.CONTENT_INFORMATION,"1")); | ||
305 | + // }else { | ||
306 | + // if(head != null) { | ||
307 | + Element title = getDocument().getFirstElement("title"); | ||
308 | + if (title == null) { | ||
309 | + occurrences | ||
310 | + .add(this | ||
311 | + .buildOccurrence( | ||
312 | + "3.3", | ||
313 | + true, | ||
314 | + " Observação – Sem Fonte (Não existe título na página)", | ||
315 | + getDocument().getFirstElement(), "1")); | ||
316 | + // occurrences.add(new Occurrence("3.3", true, | ||
317 | + // "Sem fonte (n�o existe t�tulo na p�gina)",OccurrenceClassification.CONTENT_INFORMATION,"1")); | ||
318 | + } else if (title.isEmpty()) { | ||
319 | + occurrences.add(buildOccurrence("3.3", true, title.toString(), | ||
320 | + title, "1")); | ||
321 | + } | ||
322 | + // } | ||
323 | + | ||
210 | return occurrences; | 324 | return occurrences; |
211 | } | 325 | } |
212 | - | 326 | + |
213 | private List<Occurrence> checkRecommendation20() { | 327 | private List<Occurrence> checkRecommendation20() { |
214 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 328 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
215 | - occurrences.add(new Occurrence("3.4", false, getDocument().getFirstElement().toString(),OccurrenceClassification.CONTENT_INFORMATION)); | 329 | + occurrences.add(new Occurrence("3.4", false, getDocument() |
330 | + .getFirstElement().toString(), | ||
331 | + OccurrenceClassification.CONTENT_INFORMATION)); | ||
216 | return occurrences; | 332 | return occurrences; |
217 | } | 333 | } |
218 | - | 334 | + |
219 | private List<Occurrence> checkRecommendation21() { | 335 | private List<Occurrence> checkRecommendation21() { |
220 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 336 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
221 | - | ||
222 | - for(Element link : getDocument().getAllElements("a")){ | 337 | + |
338 | + for (Element link : getDocument().getAllElements("a")) { | ||
223 | String href = link.getAttributeValue("href"); | 339 | String href = link.getAttributeValue("href"); |
224 | String title = link.getAttributeValue("title"); | 340 | String title = link.getAttributeValue("title"); |
225 | String content = link.getContent().toString(); | 341 | String content = link.getContent().toString(); |
226 | - | ||
227 | - if(hasEqualsContentHref(link) && isRegistroBr(content)) | ||
228 | - occurrences.add(this.buildOccurrence("3.5", false, link.toString(), link, "1")); | ||
229 | - | ||
230 | - if(!hasContent(link)) | ||
231 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"2")); | ||
232 | - else if(hasImgWithoutAlt(link)) | ||
233 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"2")); | ||
234 | - | ||
235 | - //if(hasTitle(link) && isNotAlt(link)) | ||
236 | - if(hasTitle(link) && !hasContent(link)) | ||
237 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"3")); | ||
238 | - | ||
239 | - /*if(!hasTitle(link) && !hasContent(link) && hasImgWithoutAlt(link)) | ||
240 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"4"));*/ | ||
241 | - | ||
242 | - if(hasImgWithoutAlt(link)) | ||
243 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"4")); | ||
244 | - | ||
245 | - if(hasLeiaMaisDescription(link)) | ||
246 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"5")); | ||
247 | - | ||
248 | - if(hasDiferenteContentSameLink(link)) | ||
249 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"6")); | ||
250 | - | ||
251 | - if(isTitleEqualsContent(link)) | ||
252 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"8")); | ||
253 | - | ||
254 | - if(hasSameContentDiferentLink(link)) | ||
255 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"7")); | ||
256 | - | ||
257 | - if(link != null && hasLongContent(link)) | ||
258 | - occurrences.add(this.buildOccurrence("3.5", false, link.toString(), link,"9")); | ||
259 | - | ||
260 | - if(link != null && isLinkUnavailable(link,getUrl())) | ||
261 | - occurrences.add(this.buildOccurrence("3.5", true, link.toString(), link,"10")); | ||
262 | - | 342 | + |
343 | + if (hasEqualsContentHref(link) && isRegistroBr(content)) | ||
344 | + occurrences.add(this.buildOccurrence("3.5", false, | ||
345 | + link.toString(), link, "1")); | ||
346 | + | ||
347 | + if (!hasContent(link)) | ||
348 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
349 | + link.toString(), link, "2")); | ||
350 | + else if (hasImgWithoutAlt(link)) | ||
351 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
352 | + link.toString(), link, "2")); | ||
353 | + | ||
354 | + // if(hasTitle(link) && isNotAlt(link)) | ||
355 | + if (hasTitle(link) && !hasContent(link)) | ||
356 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
357 | + link.toString(), link, "3")); | ||
358 | + | ||
359 | + /* | ||
360 | + * if(!hasTitle(link) && !hasContent(link) && | ||
361 | + * hasImgWithoutAlt(link)) | ||
362 | + * occurrences.add(this.buildOccurrence("3.5", true, | ||
363 | + * link.toString(), link,"4")); | ||
364 | + */ | ||
365 | + | ||
366 | + if (hasImgWithoutAlt(link)) | ||
367 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
368 | + link.toString(), link, "4")); | ||
369 | + | ||
370 | + if (hasLeiaMaisDescription(link)) | ||
371 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
372 | + link.toString(), link, "5")); | ||
373 | + | ||
374 | + if (hasDiferenteContentSameLink(link)) | ||
375 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
376 | + link.toString(), link, "6")); | ||
377 | + | ||
378 | + if (isTitleEqualsContent(link)) | ||
379 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
380 | + link.toString(), link, "8")); | ||
381 | + | ||
382 | + if (hasSameContentDiferentLink(link)) | ||
383 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
384 | + link.toString(), link, "7")); | ||
385 | + | ||
386 | + if (link != null && hasLongContent(link)) | ||
387 | + occurrences.add(this.buildOccurrence("3.5", false, | ||
388 | + link.toString(), link, "9")); | ||
389 | + | ||
390 | + if (link != null && isLinkUnavailable(link, getUrl())) | ||
391 | + occurrences.add(this.buildOccurrence("3.5", true, | ||
392 | + link.toString(), link, "10")); | ||
393 | + | ||
263 | } | 394 | } |
264 | - | ||
265 | return occurrences; | 395 | return occurrences; |
266 | } | 396 | } |
267 | - | ||
268 | - | ||
269 | - private boolean isLinkUnavailable(Element link,String url){ | ||
270 | - | 397 | + |
398 | + private boolean isLinkUnavailable(Element link, String url) { | ||
399 | + | ||
271 | String href = link.getAttributeValue("href"); | 400 | String href = link.getAttributeValue("href"); |
272 | - | ||
273 | - if(href!=null && href.startsWith("www")) | ||
274 | - href = "http://"+href; | ||
275 | - | ||
276 | - if(href!=null && !href.startsWith("http") && url !=null) | ||
277 | - href = url+"/"+link.getAttributeValue("href"); | ||
278 | - | ||
279 | - if(link.getAttributeValue("href") != null && !link.getAttributeValue("href").equals("#") && !link.getAttributeValue("href").equals("/") && !link.getAttributeValue("href").contains("javascript")){ | ||
280 | - | ||
281 | - int[] codErro ={400, 401,402, 403,404, 405, 406, 407, 408,409, 410, 411, 412, 414,415, 416, 417, 418,422, 423,424,425,426,450,499,500,501,502,503,504,505}; | 401 | + |
402 | + if (href != null && href.startsWith("www")) | ||
403 | + href = "http://" + href; | ||
404 | + | ||
405 | + if (href != null && !href.startsWith("http") && url != null) | ||
406 | + href = url + "/" + link.getAttributeValue("href"); | ||
407 | + | ||
408 | + if (link.getAttributeValue("href") != null | ||
409 | + && !link.getAttributeValue("href").substring(0, 1).equals("#") | ||
410 | + && !link.getAttributeValue("href").substring(0, 1).equals("/") | ||
411 | + && !link.getAttributeValue("href").contains("javascript")) { | ||
412 | + | ||
413 | + int[] codErro = { 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, | ||
414 | + 410, 411, 412, 414, 415, 416, 417, 418, 422, 423, 424, 425, | ||
415 | + 426, 450, 499, 500, 501, 502, 503, 504, 505 }; | ||
282 | int codResponse = 0; | 416 | int codResponse = 0; |
283 | - | 417 | + |
284 | String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]+$"; | 418 | String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]+$"; |
285 | - | ||
286 | - //if(!IsMatch(href,regex)) | ||
287 | - //return true; | ||
288 | - | 419 | + |
420 | + // if(!IsMatch(href,regex)) | ||
421 | + // return true; | ||
422 | + | ||
289 | try { | 423 | try { |
290 | String[] test = href.split("\\../"); | 424 | String[] test = href.split("\\../"); |
291 | - String newurl=""; | ||
292 | - for(String tes : test) | ||
293 | - newurl=newurl+tes.trim(); | ||
294 | - | 425 | + String newurl = ""; |
426 | + for (String tes : test) | ||
427 | + newurl = newurl + tes.trim(); | ||
428 | + | ||
295 | newurl = newurl.replace(" ", "%20"); | 429 | newurl = newurl.replace(" ", "%20"); |
296 | - | ||
297 | - URL u = new URL(newurl); | ||
298 | - HttpURLConnection huc = (HttpURLConnection) u.openConnection(); | ||
299 | - huc.setRequestMethod("GET"); | ||
300 | - //huc.setRequestMethod("HEAD"); | 430 | + |
431 | + URL u = new URL(newurl); | ||
432 | + HttpURLConnection huc = (HttpURLConnection) u.openConnection(); | ||
433 | + huc.setRequestMethod("GET"); | ||
434 | + // huc.setRequestMethod("HEAD"); | ||
301 | huc.connect(); | 435 | huc.connect(); |
302 | codResponse = huc.getResponseCode(); | 436 | codResponse = huc.getResponseCode(); |
303 | huc.disconnect(); | 437 | huc.disconnect(); |
@@ -305,532 +439,584 @@ public class ContentEvaluation extends Evaluation{ | @@ -305,532 +439,584 @@ public class ContentEvaluation extends Evaluation{ | ||
305 | return true; | 439 | return true; |
306 | } catch (IOException e) { | 440 | } catch (IOException e) { |
307 | return true; | 441 | return true; |
308 | - } | ||
309 | - | ||
310 | - /*if(huc.getResponseCode() != HttpURLConnection.HTTP_OK) | ||
311 | - System.out.println(link.toString());*/ | ||
312 | - for(int cod : codErro) | ||
313 | - if(codResponse == cod) return true; | ||
314 | - | ||
315 | - } | ||
316 | - | ||
317 | - return false; | ||
318 | - } | ||
319 | - | ||
320 | - private static boolean IsMatch(String s, String pattern) { | ||
321 | - try { | ||
322 | - Pattern patt = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); | ||
323 | - Matcher matcher = patt.matcher(s); | ||
324 | - return matcher.matches(); | ||
325 | - } catch (RuntimeException e) { | ||
326 | - return false; | ||
327 | - } | ||
328 | - } | ||
329 | - | 442 | + } |
443 | + | ||
444 | + /* | ||
445 | + * if(huc.getResponseCode() != HttpURLConnection.HTTP_OK) | ||
446 | + * System.out.println(link.toString()); | ||
447 | + */ | ||
448 | + for (int cod : codErro) | ||
449 | + if (codResponse == cod) { | ||
450 | + return true; | ||
451 | + } | ||
452 | + | ||
453 | + } | ||
454 | + | ||
455 | + return false; | ||
456 | + } | ||
457 | + | ||
458 | + private static boolean IsMatch(String s, String pattern) { | ||
459 | + try { | ||
460 | + Pattern patt = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); | ||
461 | + Matcher matcher = patt.matcher(s); | ||
462 | + return matcher.matches(); | ||
463 | + } catch (RuntimeException e) { | ||
464 | + return false; | ||
465 | + } | ||
466 | + } | ||
467 | + | ||
330 | private boolean isNotAlt(Element link) { | 468 | private boolean isNotAlt(Element link) { |
331 | String alt = link.getAttributeValue("alt"); | 469 | String alt = link.getAttributeValue("alt"); |
332 | return alt == null || StringUtils.isBlank(alt); | 470 | return alt == null || StringUtils.isBlank(alt); |
333 | } | 471 | } |
334 | - | 472 | + |
335 | private boolean hasLongContent(Element link) { | 473 | private boolean hasLongContent(Element link) { |
336 | - return link.getContent().getTextExtractor().toString().length() > 500 ? true : false; | 474 | + return link.getContent().getTextExtractor().toString().length() > 500 ? true |
475 | + : false; | ||
337 | } | 476 | } |
338 | - | 477 | + |
339 | private boolean hasContent(Element link) { | 478 | private boolean hasContent(Element link) { |
340 | - return StringUtils.isNotBlank(link.getContent().getTextExtractor().toString()); | 479 | + return StringUtils.isNotBlank(link.getContent().getTextExtractor() |
480 | + .toString()); | ||
341 | } | 481 | } |
342 | - private boolean hasTitle(Element link){ | 482 | + |
483 | + private boolean hasTitle(Element link) { | ||
343 | String title = link.getAttributeValue("title"); | 484 | String title = link.getAttributeValue("title"); |
344 | return title != null && StringUtils.isNotBlank(title); | 485 | return title != null && StringUtils.isNotBlank(title); |
345 | } | 486 | } |
487 | + | ||
346 | private boolean hasImgWithoutAlt(Element link) { | 488 | private boolean hasImgWithoutAlt(Element link) { |
347 | Element img = link.getFirstElement("img"); | 489 | Element img = link.getFirstElement("img"); |
348 | - if(img == null) return false; | 490 | + if (img == null) |
491 | + return false; | ||
349 | String alt = img.getAttributeValue("alt"); | 492 | String alt = img.getAttributeValue("alt"); |
350 | return alt == null || StringUtils.isBlank(alt); | 493 | return alt == null || StringUtils.isBlank(alt); |
351 | } | 494 | } |
352 | - | ||
353 | - private boolean hasLeiaMaisDescription(Element link){ | 495 | + |
496 | + private boolean hasLeiaMaisDescription(Element link) { | ||
354 | String title = link.getAttributeValue("title"); | 497 | String title = link.getAttributeValue("title"); |
355 | String content = link.getContent().getTextExtractor().toString(); | 498 | String content = link.getContent().getTextExtractor().toString(); |
356 | - String altImg = link.getFirstElement("img")!=null ? link.getFirstElement("img").getAttributeValue("alt") : "" ; | ||
357 | - | ||
358 | - for(String leiaMais:this.leiaMais){ | ||
359 | - | ||
360 | - if(title!=null) | ||
361 | - if(title.toLowerCase().equals(leiaMais)) return true; | ||
362 | - | ||
363 | - if(content!=null) | ||
364 | - if(content.toLowerCase().equals(leiaMais)) return true; | ||
365 | - | ||
366 | - if(altImg!=null) | ||
367 | - if(altImg.toLowerCase().equals(leiaMais)) return true; | ||
368 | - } | ||
369 | - | ||
370 | - | ||
371 | - /* Pattern pattern; | ||
372 | - for(String leiaMais:this.leiaMais){ | ||
373 | - pattern = Pattern.compile("("+leiaMais+")"); | ||
374 | - if(title!=null) | ||
375 | - if(pattern.matcher(title.toLowerCase()).find()) return true; | ||
376 | - | ||
377 | - if(content!=null) | ||
378 | - if(pattern.matcher(content.toLowerCase()).find()) return true; | ||
379 | - | ||
380 | - if(altImg!=null) | ||
381 | - if(pattern.matcher(altImg.toLowerCase()).find()) return true; | ||
382 | - }*/ | ||
383 | - | 499 | + String altImg = link.getFirstElement("img") != null ? link |
500 | + .getFirstElement("img").getAttributeValue("alt") : ""; | ||
501 | + | ||
502 | + for (String leiaMais : this.leiaMais) { | ||
503 | + | ||
504 | + if (title != null) | ||
505 | + if (title.toLowerCase().equals(leiaMais)) | ||
506 | + return true; | ||
507 | + | ||
508 | + if (content != null) | ||
509 | + if (content.toLowerCase().equals(leiaMais)) | ||
510 | + return true; | ||
511 | + | ||
512 | + if (altImg != null) | ||
513 | + if (altImg.toLowerCase().equals(leiaMais)) | ||
514 | + return true; | ||
515 | + } | ||
516 | + | ||
517 | + /* | ||
518 | + * Pattern pattern; for(String leiaMais:this.leiaMais){ pattern = | ||
519 | + * Pattern.compile("("+leiaMais+")"); if(title!=null) | ||
520 | + * if(pattern.matcher(title.toLowerCase()).find()) return true; | ||
521 | + * | ||
522 | + * if(content!=null) if(pattern.matcher(content.toLowerCase()).find()) | ||
523 | + * return true; | ||
524 | + * | ||
525 | + * if(altImg!=null) if(pattern.matcher(altImg.toLowerCase()).find()) | ||
526 | + * return true; } | ||
527 | + */ | ||
528 | + | ||
384 | return false; | 529 | return false; |
385 | } | 530 | } |
386 | - private boolean isRegistroBr(String href){ | ||
387 | - if(StringUtils.isBlank(href)) return false; | 531 | + |
532 | + private boolean isRegistroBr(String href) { | ||
533 | + if (StringUtils.isBlank(href)) | ||
534 | + return false; | ||
388 | Pattern pattern; | 535 | Pattern pattern; |
389 | - for(String registro:hrefRegistroBr){ | ||
390 | - pattern = Pattern.compile("(.*)("+registro+").*$"); | ||
391 | - if(pattern.matcher(href.toUpperCase()).find()) return true; | 536 | + for (String registro : hrefRegistroBr) { |
537 | + pattern = Pattern.compile("(.*)(" + registro + ").*$"); | ||
538 | + if (pattern.matcher(href.toUpperCase()).find()) | ||
539 | + return true; | ||
392 | } | 540 | } |
393 | - | 541 | + |
394 | return false; | 542 | return false; |
395 | } | 543 | } |
396 | - | ||
397 | - | 544 | + |
398 | private boolean hasEqualsContentHref(Element link) { | 545 | private boolean hasEqualsContentHref(Element link) { |
399 | String content = link.getContent().getTextExtractor().toString(); | 546 | String content = link.getContent().getTextExtractor().toString(); |
400 | - if(content != null && !content.isEmpty()) | ||
401 | - content = content.replace("http://","").replaceFirst("(/$)", ""); | ||
402 | - | 547 | + if (content != null && !content.isEmpty()) |
548 | + content = content.replace("http://", "").replaceFirst("(/$)", ""); | ||
549 | + | ||
403 | String href = link.getAttributeValue("href"); | 550 | String href = link.getAttributeValue("href"); |
404 | - if(href != null && !href.isEmpty()) | ||
405 | - href = href.replace("http://","").replaceFirst("(/$)", ""); | 551 | + if (href != null && !href.isEmpty()) |
552 | + href = href.replace("http://", "").replaceFirst("(/$)", ""); | ||
406 | return content.equals(href); | 553 | return content.equals(href); |
407 | } | 554 | } |
408 | - | 555 | + |
409 | private boolean hasDiferenteContentSameLink(Element link) { | 556 | private boolean hasDiferenteContentSameLink(Element link) { |
410 | String content = link.getContent().getTextExtractor().toString(); | 557 | String content = link.getContent().getTextExtractor().toString(); |
411 | String href = link.getAttributeValue("href"); | 558 | String href = link.getAttributeValue("href"); |
412 | - if(StringUtils.isBlank(href)) return false; | 559 | + if (StringUtils.isBlank(href)) |
560 | + return false; | ||
413 | String otherContent; | 561 | String otherContent; |
414 | String otherHref; | 562 | String otherHref; |
415 | - for(Element otherLink:getDocument().getAllElements("a")){ | 563 | + for (Element otherLink : getDocument().getAllElements("a")) { |
416 | otherContent = otherLink.getContent().getTextExtractor().toString(); | 564 | otherContent = otherLink.getContent().getTextExtractor().toString(); |
417 | otherHref = otherLink.getAttributeValue("href"); | 565 | otherHref = otherLink.getAttributeValue("href"); |
418 | - if(StringUtils.isBlank(otherHref))continue; | ||
419 | - if(!content.toLowerCase().equals(otherContent.toLowerCase()) && href.equals(otherHref)) return true; | 566 | + if (StringUtils.isBlank(otherHref)) |
567 | + continue; | ||
568 | + if (!content.toLowerCase().equals(otherContent.toLowerCase()) | ||
569 | + && href.equals(otherHref)) | ||
570 | + return true; | ||
420 | } | 571 | } |
421 | return false; | 572 | return false; |
422 | } | 573 | } |
423 | - | 574 | + |
424 | private boolean hasSameContentDiferentLink(Element link) { | 575 | private boolean hasSameContentDiferentLink(Element link) { |
425 | - //String content = link.getContent().getTextExtractor().toString(); | 576 | + // String content = link.getContent().getTextExtractor().toString(); |
426 | String content = link.getContent().toString(); | 577 | String content = link.getContent().toString(); |
427 | - | ||
428 | - if(content != null) | ||
429 | - content = content.replace("http://","").replaceFirst("(/$)", ""); | ||
430 | - | 578 | + |
579 | + if (content != null) | ||
580 | + content = content.replace("http://", "").replaceFirst("(/$)", ""); | ||
581 | + | ||
431 | String href = link.getAttributeValue("href"); | 582 | String href = link.getAttributeValue("href"); |
432 | - | ||
433 | - if(href != null) | ||
434 | - href = href.replace("http://","").replaceFirst("(/$)", ""); | ||
435 | - | ||
436 | - if(StringUtils.isBlank(href)) return false; | 583 | + |
584 | + if (href != null) | ||
585 | + href = href.replace("http://", "").replaceFirst("(/$)", ""); | ||
586 | + | ||
587 | + if (StringUtils.isBlank(href)) | ||
588 | + return false; | ||
437 | String otherContent; | 589 | String otherContent; |
438 | String otherHref; | 590 | String otherHref; |
439 | - | 591 | + |
440 | List<String> linksVerificados = new ArrayList<String>(); | 592 | List<String> linksVerificados = new ArrayList<String>(); |
441 | - | ||
442 | - for(Element otherLink : getDocument().getAllElements("a")){ | ||
443 | - | ||
444 | - if(otherLink.getBegin() == link.getBegin()) continue; | 593 | + |
594 | + for (Element otherLink : getDocument().getAllElements("a")) { | ||
595 | + | ||
596 | + if (otherLink.getBegin() == link.getBegin()) | ||
597 | + continue; | ||
445 | otherContent = otherLink.getContent().toString(); | 598 | otherContent = otherLink.getContent().toString(); |
446 | - //otherContent = otherLink.getContent().getTextExtractor().toString(); | ||
447 | - | ||
448 | - if(otherContent != null) | ||
449 | - otherContent = otherContent.replace("http://","").replaceFirst("(/$)", ""); | ||
450 | - | 599 | + // otherContent = |
600 | + // otherLink.getContent().getTextExtractor().toString(); | ||
601 | + | ||
602 | + if (otherContent != null) | ||
603 | + otherContent = otherContent.replace("http://", "") | ||
604 | + .replaceFirst("(/$)", ""); | ||
605 | + | ||
451 | otherHref = otherLink.getAttributeValue("href"); | 606 | otherHref = otherLink.getAttributeValue("href"); |
452 | - | ||
453 | - if(otherHref != null) | ||
454 | - otherHref = otherHref.replace("http://","").replaceFirst("(/$)", ""); | ||
455 | - | ||
456 | - if(StringUtils.isBlank(otherHref))continue; | ||
457 | - if(!linksVerificados.contains(content)){ | ||
458 | - if(content.toLowerCase().equals(otherContent.toLowerCase()) && !href.equals(otherHref)){ | ||
459 | - linksVerificados.add(content); | ||
460 | - return true; | 607 | + |
608 | + if (otherHref != null) | ||
609 | + otherHref = otherHref.replace("http://", "").replaceFirst( | ||
610 | + "(/$)", ""); | ||
611 | + | ||
612 | + if (StringUtils.isBlank(otherHref)) | ||
613 | + continue; | ||
614 | + if (!linksVerificados.contains(content)) { | ||
615 | + if (content.toLowerCase().equals(otherContent.toLowerCase()) | ||
616 | + && !href.equals(otherHref)) { | ||
617 | + linksVerificados.add(content); | ||
618 | + return true; | ||
619 | + } | ||
461 | } | 620 | } |
462 | - } | ||
463 | } | 621 | } |
464 | return false; | 622 | return false; |
465 | } | 623 | } |
466 | - | 624 | + |
467 | private boolean isTitleEqualsContent(Element element) { | 625 | private boolean isTitleEqualsContent(Element element) { |
468 | - | ||
469 | - String content = element.getContent().getTextExtractor().toString() ; | 626 | + |
627 | + String content = element.getContent().getTextExtractor().toString(); | ||
470 | String title = element.getAttributeValue("title"); | 628 | String title = element.getAttributeValue("title"); |
471 | - | ||
472 | - if(StringUtils.isBlank(title)) return false; | ||
473 | - | 629 | + |
630 | + if (StringUtils.isBlank(title)) | ||
631 | + return false; | ||
632 | + | ||
474 | return title.toLowerCase().equals(content.toLowerCase()); | 633 | return title.toLowerCase().equals(content.toLowerCase()); |
475 | } | 634 | } |
476 | - | 635 | + |
477 | private List<Occurrence> checkRecommendation22() { | 636 | private List<Occurrence> checkRecommendation22() { |
478 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 637 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
479 | - | 638 | + |
480 | String[] parts = null; | 639 | String[] parts = null; |
481 | - | ||
482 | - String[] descricoes = {"figura", "imagem", "alt", "descrição", "foto"}; | ||
483 | - | 640 | + |
641 | + String[] descricoes = { "figura", "imagem", "alt", "descrição", | ||
642 | + "foto" }; | ||
643 | + | ||
484 | for (Element img : getDocument().getAllElements("img")) { | 644 | for (Element img : getDocument().getAllElements("img")) { |
485 | Attribute alt = img.getAttributes().get("alt"); | 645 | Attribute alt = img.getAttributes().get("alt"); |
486 | if (alt == null) { | 646 | if (alt == null) { |
487 | - occurrences.add(buildOccurrence("3.6", true, img.toString(), img, "1")); | ||
488 | - }else if(alt.getValueSegment().toString().trim().isEmpty()){ | ||
489 | - occurrences.add(buildOccurrence("3.6", true, img.toString(), img, "2")); | ||
490 | - } | ||
491 | - | 647 | + occurrences.add(buildOccurrence("3.6", true, img.toString(), |
648 | + img, "1")); | ||
649 | + } else if (alt.getValueSegment().toString().trim().isEmpty()) { | ||
650 | + occurrences.add(buildOccurrence("3.6", true, img.toString(), | ||
651 | + img, "2")); | ||
652 | + } | ||
653 | + | ||
492 | Attribute src = img.getAttributes().get("src"); | 654 | Attribute src = img.getAttributes().get("src"); |
493 | String contAlt = null; | 655 | String contAlt = null; |
494 | - | ||
495 | - if(src != null && alt != null){ | 656 | + |
657 | + if (src != null && alt != null) { | ||
496 | String value = src.getValue(); | 658 | String value = src.getValue(); |
497 | parts = value.toString().split("/"); | 659 | parts = value.toString().split("/"); |
498 | - contAlt = alt.getValue(); | ||
499 | - | ||
500 | - if(parts.length > 0) | ||
501 | - if(parts[parts.length-1].toString().equals(contAlt)) | ||
502 | - occurrences.add(buildOccurrence("3.6", true, img.toString(), img, "3")); | 660 | + contAlt = alt.getValue(); |
661 | + | ||
662 | + if (parts.length > 0) | ||
663 | + if (parts[parts.length - 1].toString().equals(contAlt)) | ||
664 | + occurrences.add(buildOccurrence("3.6", true, | ||
665 | + img.toString(), img, "3")); | ||
503 | } | 666 | } |
504 | - | ||
505 | - for(String descricao : descricoes){ | ||
506 | - if(descricao.equalsIgnoreCase(contAlt)) | ||
507 | - occurrences.add(buildOccurrence("3.6", true, img.toString(), img, "4")); | ||
508 | - | 667 | + |
668 | + for (String descricao : descricoes) { | ||
669 | + if (descricao.equalsIgnoreCase(contAlt)) | ||
670 | + occurrences.add(buildOccurrence("3.6", true, | ||
671 | + img.toString(), img, "4")); | ||
672 | + | ||
509 | } | 673 | } |
510 | - | ||
511 | - | 674 | + |
512 | } | 675 | } |
513 | - | ||
514 | - | 676 | + |
515 | Map<String, Element> aMap = new HashMap<String, Element>(); | 677 | Map<String, Element> aMap = new HashMap<String, Element>(); |
516 | - | ||
517 | - | ||
518 | - | 678 | + |
519 | for (Element img : getDocument().getAllElements("img")) { | 679 | for (Element img : getDocument().getAllElements("img")) { |
520 | - | 680 | + |
521 | Attribute src = img.getAttributes().get("src"); | 681 | Attribute src = img.getAttributes().get("src"); |
522 | Attribute alt = img.getAttributes().get("alt"); | 682 | Attribute alt = img.getAttributes().get("alt"); |
523 | - | 683 | + |
524 | boolean isVerificado = false; | 684 | boolean isVerificado = false; |
525 | - | 685 | + |
526 | if (alt != null && !alt.getValue().isEmpty()) { | 686 | if (alt != null && !alt.getValue().isEmpty()) { |
527 | - | ||
528 | - if(src != null) | ||
529 | - if(!aMap.containsKey(src.getValue())){ | ||
530 | - | ||
531 | - int rowImgVerificado = this.getRow(img); | ||
532 | - | ||
533 | - for (Element imgA : getDocument().getAllElements("img")) { | ||
534 | - int rowImgA = this.getRow(imgA); | ||
535 | - | ||
536 | - if(rowImgA > rowImgVerificado){ | ||
537 | - | ||
538 | - Attribute srcAtt = imgA.getAttributes().get("src"); | ||
539 | - Attribute altAtt = imgA.getAttributes().get("alt"); | ||
540 | - | ||
541 | - if (altAtt != null && !altAtt.getValue().isEmpty()) { | ||
542 | - if(alt.getValue().equals(altAtt.getValue())){ | ||
543 | - if(srcAtt != null){ | ||
544 | - if(!src.getValue().equals(srcAtt.getValue())){ | ||
545 | - occurrences.add(buildOccurrence("3.6", false, imgA.toString(), imgA, "5")); | ||
546 | - aMap.put(srcAtt.getValue(), img); | ||
547 | - isVerificado = true; | 687 | + |
688 | + if (src != null) | ||
689 | + if (!aMap.containsKey(src.getValue())) { | ||
690 | + | ||
691 | + int rowImgVerificado = this.getRow(img); | ||
692 | + | ||
693 | + for (Element imgA : getDocument().getAllElements("img")) { | ||
694 | + int rowImgA = this.getRow(imgA); | ||
695 | + | ||
696 | + if (rowImgA > rowImgVerificado) { | ||
697 | + | ||
698 | + Attribute srcAtt = imgA.getAttributes().get( | ||
699 | + "src"); | ||
700 | + Attribute altAtt = imgA.getAttributes().get( | ||
701 | + "alt"); | ||
702 | + | ||
703 | + if (altAtt != null | ||
704 | + && !altAtt.getValue().isEmpty()) { | ||
705 | + if (alt.getValue() | ||
706 | + .equals(altAtt.getValue())) { | ||
707 | + if (srcAtt != null) { | ||
708 | + if (!src.getValue().equals( | ||
709 | + srcAtt.getValue())) { | ||
710 | + occurrences | ||
711 | + .add(buildOccurrence( | ||
712 | + "3.6", | ||
713 | + false, | ||
714 | + imgA.toString(), | ||
715 | + imgA, "5")); | ||
716 | + aMap.put(srcAtt.getValue(), img); | ||
717 | + isVerificado = true; | ||
718 | + } | ||
548 | } | 719 | } |
549 | } | 720 | } |
550 | } | 721 | } |
551 | } | 722 | } |
552 | } | 723 | } |
553 | } | 724 | } |
554 | - } | ||
555 | - | ||
556 | - if(src != null) | ||
557 | - aMap.put(src.getValue(), img); | ||
558 | - | ||
559 | - if(isVerificado) | ||
560 | - occurrences.add(buildOccurrence("3.6", false, img.toString(), img, "5")); | 725 | + |
726 | + if (src != null) | ||
727 | + aMap.put(src.getValue(), img); | ||
728 | + | ||
729 | + if (isVerificado) | ||
730 | + occurrences.add(buildOccurrence("3.6", false, | ||
731 | + img.toString(), img, "5")); | ||
561 | } | 732 | } |
562 | } | 733 | } |
563 | - | ||
564 | - | ||
565 | - /*Map<String, String> aMap = new HashMap<String, String>(); | ||
566 | - | ||
567 | - for (Element img : getDocument().getAllElements("img")) { | ||
568 | - | ||
569 | - Attribute src = img.getAttributes().get("src"); | ||
570 | - Attribute altAtt = img.getAttributes().get("alt"); | ||
571 | - if (altAtt != null && !altAtt.getValue().isEmpty()) { | ||
572 | - if(aMap.containsKey(altAtt.getValue())){ | ||
573 | - Attribute srcAtt = img.getAttributes().get("src"); | ||
574 | - if(srcAtt != null){ | ||
575 | - if(!aMap.get(altAtt.getValue()).contains("src=\""+srcAtt.getValue()+"\"")) | ||
576 | - occurrences.add(buildOccurrence("3.6", false, img.toString(), img, "5")); | ||
577 | - } | ||
578 | - }else{ | ||
579 | - aMap.put(altAtt.getValue(), img.toString()); | ||
580 | - } | ||
581 | - } | ||
582 | - }*/ | ||
583 | - | 734 | + |
735 | + /* | ||
736 | + * Map<String, String> aMap = new HashMap<String, String>(); | ||
737 | + * | ||
738 | + * for (Element img : getDocument().getAllElements("img")) { | ||
739 | + * | ||
740 | + * Attribute src = img.getAttributes().get("src"); Attribute altAtt = | ||
741 | + * img.getAttributes().get("alt"); if (altAtt != null && | ||
742 | + * !altAtt.getValue().isEmpty()) { | ||
743 | + * if(aMap.containsKey(altAtt.getValue())){ Attribute srcAtt = | ||
744 | + * img.getAttributes().get("src"); if(srcAtt != null){ | ||
745 | + * if(!aMap.get(altAtt | ||
746 | + * .getValue()).contains("src=\""+srcAtt.getValue()+"\"")) | ||
747 | + * occurrences.add(buildOccurrence("3.6", false, img.toString(), img, | ||
748 | + * "5")); } }else{ aMap.put(altAtt.getValue(), img.toString()); } } } | ||
749 | + */ | ||
750 | + | ||
584 | for (Element img : getDocument().getAllElements("img")) { | 751 | for (Element img : getDocument().getAllElements("img")) { |
585 | Attribute alt = img.getAttributes().get("alt"); | 752 | Attribute alt = img.getAttributes().get("alt"); |
586 | Attribute title = img.getAttributes().get("title"); | 753 | Attribute title = img.getAttributes().get("title"); |
587 | if (alt != null && title != null) { | 754 | if (alt != null && title != null) { |
588 | - if(title.getValue().equals(alt.getValue())) | ||
589 | - occurrences.add(buildOccurrence("3.6", true, img.toString(), img, "6")); | 755 | + if (title.getValue().equals(alt.getValue())) |
756 | + occurrences.add(buildOccurrence("3.6", true, | ||
757 | + img.toString(), img, "6")); | ||
590 | } | 758 | } |
591 | } | 759 | } |
592 | - | 760 | + |
593 | this.oder(occurrences); | 761 | this.oder(occurrences); |
594 | - | 762 | + |
595 | return occurrences; | 763 | return occurrences; |
596 | } | 764 | } |
597 | - | 765 | + |
598 | private List<Occurrence> checkRecommendation23() { | 766 | private List<Occurrence> checkRecommendation23() { |
599 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 767 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
600 | - | 768 | + |
601 | boolean isMap = false; | 769 | boolean isMap = false; |
602 | - | 770 | + |
603 | for (Element table : getDocument().getAllElements("img")) { | 771 | for (Element table : getDocument().getAllElements("img")) { |
604 | - | 772 | + |
605 | Attribute usemap = table.getAttributes().get("usemap"); | 773 | Attribute usemap = table.getAttributes().get("usemap"); |
606 | Attribute alt = table.getAttributes().get("alt"); | 774 | Attribute alt = table.getAttributes().get("alt"); |
607 | - | ||
608 | - if (usemap != null && (alt == null || alt.getValue().isEmpty())){ | ||
609 | - occurrences.add(this.buildOccurrence("3.7", true, table.toString(), table, "1")); | 775 | + |
776 | + if (usemap != null && (alt == null || alt.getValue().isEmpty())) { | ||
777 | + occurrences.add(this.buildOccurrence("3.7", true, | ||
778 | + table.toString(), table, "1")); | ||
610 | isMap = true; | 779 | isMap = true; |
611 | } | 780 | } |
612 | - | 781 | + |
613 | } | 782 | } |
614 | - | ||
615 | - if(isMap) | 783 | + |
784 | + if (isMap) | ||
616 | for (Element map : getDocument().getAllElements("map")) { | 785 | for (Element map : getDocument().getAllElements("map")) { |
617 | - for (Element area :map.getAllElements("area")) { | 786 | + for (Element area : map.getAllElements("area")) { |
618 | Attribute alt = area.getAttributes().get("alt"); | 787 | Attribute alt = area.getAttributes().get("alt"); |
619 | - if(alt == null || alt.getValue().isEmpty()) | ||
620 | - occurrences.add(this.buildOccurrence("3.7", true, map.toString(), map, "1")); | 788 | + if (alt == null || alt.getValue().isEmpty()) |
789 | + occurrences.add(this.buildOccurrence("3.7", true, | ||
790 | + map.toString(), map, "1")); | ||
621 | } | 791 | } |
622 | } | 792 | } |
623 | - | ||
624 | - | 793 | + |
625 | return occurrences; | 794 | return occurrences; |
626 | } | 795 | } |
627 | - | 796 | + |
628 | private List<Occurrence> checkRecommendation24() { | 797 | private List<Occurrence> checkRecommendation24() { |
629 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 798 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
630 | - occurrences.add(new Occurrence("3.8", false, getDocument().getFirstElement().toString(),OccurrenceClassification.CONTENT_INFORMATION)); | 799 | + occurrences.add(new Occurrence("3.8", false, getDocument() |
800 | + .getFirstElement().toString(), | ||
801 | + OccurrenceClassification.CONTENT_INFORMATION)); | ||
631 | return occurrences; | 802 | return occurrences; |
632 | } | 803 | } |
633 | - | 804 | + |
634 | private List<Occurrence> checkRecommendation25() { | 805 | private List<Occurrence> checkRecommendation25() { |
635 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 806 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
636 | - | 807 | + |
808 | + String doctype = getDocument().getFirstStartTag().toString() | ||
809 | + .replace(" ", ""); | ||
810 | + | ||
637 | for (Element table : getDocument().getAllElements("table")) { | 811 | for (Element table : getDocument().getAllElements("table")) { |
638 | Attribute summary = table.getAttributes().get("summary"); | 812 | Attribute summary = table.getAttributes().get("summary"); |
813 | + | ||
814 | + if (!doctype.equals("<!DOCTYPEhtml>")) { | ||
815 | + if (summary == null || summary.getValue().equals("")) | ||
816 | + occurrences.add(buildOccurrence("3.9", false, table | ||
817 | + .getStartTag().toString(), table, "1")); | ||
818 | + } | ||
639 | 819 | ||
640 | - if (summary == null || summary.getValue().equals("")) | ||
641 | - occurrences.add(buildOccurrence("3.9", false, table.getStartTag().toString(), table, "1")); | ||
642 | - | ||
643 | - if(table.getAllElements("caption").isEmpty() || table.getAllElements("caption") == null) | ||
644 | - occurrences.add(buildOccurrence("3.9", false, table.getStartTag().toString(), table, "1")); | 820 | + if (table.getAllElements("caption").isEmpty() |
821 | + || table.getAllElements("caption") == null) | ||
822 | + occurrences.add(buildOccurrence("3.9", false, table | ||
823 | + .getStartTag().toString(), table, "1")); | ||
645 | } | 824 | } |
646 | - | 825 | + |
647 | return occurrences; | 826 | return occurrences; |
648 | } | 827 | } |
649 | - | 828 | + |
650 | private List<Occurrence> checkRecommendation26() { | 829 | private List<Occurrence> checkRecommendation26() { |
651 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 830 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
652 | - | ||
653 | - /*for (Element table : getDocument().getAllElements("table")) { | ||
654 | - occurrences.add(buildOccurrence("3.10", false, table.toString(), table, "1")); | ||
655 | - }*/ | ||
656 | - | 831 | + |
832 | + /* | ||
833 | + * for (Element table : getDocument().getAllElements("table")) { | ||
834 | + * occurrences.add(buildOccurrence("3.10", false, table.toString(), | ||
835 | + * table, "1")); } | ||
836 | + */ | ||
837 | + | ||
657 | for (Element table : getDocument().getAllElements("table")) { | 838 | for (Element table : getDocument().getAllElements("table")) { |
658 | - for(Element caption : table.getAllElements("caption")){ | ||
659 | - if(caption == null || caption.isEmpty()) | ||
660 | - occurrences.add(buildOccurrence("3.10", true, table.getStartTag().toString(), table, "1")); | 839 | + for (Element caption : table.getAllElements("caption")) { |
840 | + if (caption == null || caption.isEmpty()) | ||
841 | + occurrences.add(buildOccurrence("3.10", true, table | ||
842 | + .getStartTag().toString(), table, "1")); | ||
661 | } | 843 | } |
662 | } | 844 | } |
663 | - | ||
664 | - | 845 | + |
665 | for (Element table : getDocument().getAllElements("table")) { | 846 | for (Element table : getDocument().getAllElements("table")) { |
666 | Attribute summary = table.getAttributes().get("summary"); | 847 | Attribute summary = table.getAttributes().get("summary"); |
667 | - | 848 | + |
668 | boolean THusaScope = false; | 849 | boolean THusaScope = false; |
669 | boolean THusaId = false; | 850 | boolean THusaId = false; |
670 | boolean THusaHeaders = false; | 851 | boolean THusaHeaders = false; |
671 | boolean TDusaScope = false; | 852 | boolean TDusaScope = false; |
672 | - boolean TDusaId= false; | 853 | + boolean TDusaId = false; |
673 | boolean TDusaHeaders = false; | 854 | boolean TDusaHeaders = false; |
674 | boolean usaThead = false; | 855 | boolean usaThead = false; |
675 | boolean usaTfoot = false; | 856 | boolean usaTfoot = false; |
676 | boolean usaTbody = false; | 857 | boolean usaTbody = false; |
677 | - | ||
678 | - | ||
679 | - if (summary == null || summary.getValue().equals("")) | ||
680 | - occurrences.add(buildOccurrence("3.10", true, table.getStartTag().toString(), table, "1")); | ||
681 | - | 858 | + |
859 | + if (summary == null || summary.getValue().equals("")) | ||
860 | + occurrences.add(buildOccurrence("3.10", true, table | ||
861 | + .getStartTag().toString(), table, "1")); | ||
862 | + | ||
682 | for (Element thead : table.getAllElements("thead")) { | 863 | for (Element thead : table.getAllElements("thead")) { |
683 | if (thead != null) | 864 | if (thead != null) |
684 | usaThead = true; | 865 | usaThead = true; |
685 | } | 866 | } |
686 | - | 867 | + |
687 | for (Element tfoot : table.getAllElements("tfoot")) { | 868 | for (Element tfoot : table.getAllElements("tfoot")) { |
688 | if (tfoot != null) | 869 | if (tfoot != null) |
689 | usaTfoot = true; | 870 | usaTfoot = true; |
690 | } | 871 | } |
691 | - | 872 | + |
692 | for (Element tbody : table.getAllElements("tbody")) { | 873 | for (Element tbody : table.getAllElements("tbody")) { |
693 | if (tbody != null) | 874 | if (tbody != null) |
694 | usaTbody = true; | 875 | usaTbody = true; |
695 | } | 876 | } |
696 | - | ||
697 | - /*if(!usaThead && !usaTbody && !usaTfoot){ | ||
698 | - | ||
699 | - //occurrences.add(this.buildOccurrence("3.10", true, table.getAllStartTags("table").get(0).toString(), table, "1")); | ||
700 | - | ||
701 | - for (Element th : table.getAllElements("th")) { | ||
702 | - Attribute scope = th.getAttributes().get("scope"); | ||
703 | - Attribute headers = th.getAttributes().get("headers"); | ||
704 | - Attribute id = th.getAttributes().get("id"); | ||
705 | - if (scope != null && !scope.getValue().equals("")) { | ||
706 | - THusaScope = true; | ||
707 | - } else if (headers != null && !headers.getValue().equals("")) { | ||
708 | - THusaHeaders = true; | ||
709 | - } else if (id != null && !id.getValue().equals("")) { | ||
710 | - THusaId = true; | ||
711 | - } | ||
712 | - | ||
713 | - if(!THusaScope && !THusaHeaders && !THusaId){ | ||
714 | - occurrences.add(this.buildOccurrence("3.10", true, th.toString(), th, "1")); | ||
715 | - } | ||
716 | - } | ||
717 | - | ||
718 | - for (Element td : table.getAllElements("td")) { | ||
719 | - Attribute tdscope = td.getAttributes().get("scope"); | ||
720 | - Attribute tdheaders = td.getAttributes().get("headers"); | ||
721 | - Attribute tdid = td.getAttributes().get("id"); | ||
722 | - if (tdscope != null && !tdscope.getValue().equals("")) { | ||
723 | - TDusaScope = true; | ||
724 | - } else if (tdheaders != null && !tdheaders.getValue().equals("")) { | ||
725 | - TDusaHeaders = true; | ||
726 | - } else if (tdid != null && !tdid.getValue().equals("")) { | ||
727 | - TDusaId = true; | ||
728 | - } | ||
729 | - | ||
730 | - if(!TDusaScope && !TDusaHeaders && !TDusaId){ | ||
731 | - occurrences.add(this.buildOccurrence("3.10", true, td.toString(), td, "1")); | ||
732 | - } | ||
733 | - } | ||
734 | - | ||
735 | - }*/ | ||
736 | - } | ||
737 | - //Sorting | 877 | + |
878 | + /* | ||
879 | + * if(!usaThead && !usaTbody && !usaTfoot){ | ||
880 | + * | ||
881 | + * //occurrences.add(this.buildOccurrence("3.10", true, | ||
882 | + * table.getAllStartTags("table").get(0).toString(), table, "1")); | ||
883 | + * | ||
884 | + * for (Element th : table.getAllElements("th")) { Attribute scope = | ||
885 | + * th.getAttributes().get("scope"); Attribute headers = | ||
886 | + * th.getAttributes().get("headers"); Attribute id = | ||
887 | + * th.getAttributes().get("id"); if (scope != null && | ||
888 | + * !scope.getValue().equals("")) { THusaScope = true; } else if | ||
889 | + * (headers != null && !headers.getValue().equals("")) { | ||
890 | + * THusaHeaders = true; } else if (id != null && | ||
891 | + * !id.getValue().equals("")) { THusaId = true; } | ||
892 | + * | ||
893 | + * if(!THusaScope && !THusaHeaders && !THusaId){ | ||
894 | + * occurrences.add(this.buildOccurrence("3.10", true, th.toString(), | ||
895 | + * th, "1")); } } | ||
896 | + * | ||
897 | + * for (Element td : table.getAllElements("td")) { Attribute tdscope | ||
898 | + * = td.getAttributes().get("scope"); Attribute tdheaders = | ||
899 | + * td.getAttributes().get("headers"); Attribute tdid = | ||
900 | + * td.getAttributes().get("id"); if (tdscope != null && | ||
901 | + * !tdscope.getValue().equals("")) { TDusaScope = true; } else if | ||
902 | + * (tdheaders != null && !tdheaders.getValue().equals("")) { | ||
903 | + * TDusaHeaders = true; } else if (tdid != null && | ||
904 | + * !tdid.getValue().equals("")) { TDusaId = true; } | ||
905 | + * | ||
906 | + * if(!TDusaScope && !TDusaHeaders && !TDusaId){ | ||
907 | + * occurrences.add(this.buildOccurrence("3.10", true, td.toString(), | ||
908 | + * td, "1")); } } | ||
909 | + * | ||
910 | + * } | ||
911 | + */ | ||
912 | + } | ||
913 | + // Sorting | ||
738 | Collections.sort(occurrences, new Comparator<Occurrence>() { | 914 | Collections.sort(occurrences, new Comparator<Occurrence>() { |
739 | - public int compare(Occurrence occurrence1, Occurrence occurrence2){ | ||
740 | - return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
741 | - } | ||
742 | - }); | ||
743 | - | 915 | + public int compare(Occurrence occurrence1, Occurrence occurrence2) { |
916 | + return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
917 | + } | ||
918 | + }); | ||
919 | + | ||
744 | return occurrences; | 920 | return occurrences; |
745 | 921 | ||
746 | } | 922 | } |
747 | - | 923 | + |
748 | private List<Occurrence> checkRecommendation27() { | 924 | private List<Occurrence> checkRecommendation27() { |
749 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 925 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
750 | - | ||
751 | - //String reg = "<p.*?>(.*)<\\/p.*?>"; | ||
752 | - | 926 | + |
927 | + // String reg = "<p.*?>(.*)<\\/p.*?>"; | ||
928 | + | ||
753 | for (Element paragrafo : getDocument().getAllElements("p")) { | 929 | for (Element paragrafo : getDocument().getAllElements("p")) { |
754 | - | ||
755 | - /* Pattern p = Pattern.compile(reg,Pattern.CASE_INSENSITIVE); | ||
756 | - Matcher m = p.matcher(paragrafo); | ||
757 | - | ||
758 | - while(m.find()){ | ||
759 | - String conteudoParagrafo = m.group(1); | ||
760 | - | ||
761 | - if(conteudoParagrafo.length() > 1000) | ||
762 | - occurrences.add(this.buildOccurrence("3.11", false, paragrafo.toString(), paragrafo, "1")); | ||
763 | - }*/ | ||
764 | - | ||
765 | - | ||
766 | - if(paragrafo.getContent().length() > 1000) | ||
767 | - occurrences.add(this.buildOccurrence("3.11", false, paragrafo.toString(), paragrafo, "1")); | ||
768 | - | ||
769 | - String align = paragrafo.getAttributeValue("align"); | ||
770 | - if("justify".equals(align)) | ||
771 | - occurrences.add(this.buildOccurrence("3.11", true, paragrafo.toString(), paragrafo, "2")); | ||
772 | - | ||
773 | - String style = paragrafo.getAttributeValue("style"); | ||
774 | - if(style != null && style.contains("text-align:justify")) | ||
775 | - occurrences.add(this.buildOccurrence("3.11", true, paragrafo.toString(), paragrafo, "2")); | ||
776 | - } | ||
777 | - | ||
778 | - | 930 | + |
931 | + /* | ||
932 | + * Pattern p = Pattern.compile(reg,Pattern.CASE_INSENSITIVE); | ||
933 | + * Matcher m = p.matcher(paragrafo); | ||
934 | + * | ||
935 | + * while(m.find()){ String conteudoParagrafo = m.group(1); | ||
936 | + * | ||
937 | + * if(conteudoParagrafo.length() > 1000) | ||
938 | + * occurrences.add(this.buildOccurrence("3.11", false, | ||
939 | + * paragrafo.toString(), paragrafo, "1")); } | ||
940 | + */ | ||
941 | + | ||
942 | + if (paragrafo.getContent().length() > 1000) | ||
943 | + occurrences.add(this.buildOccurrence("3.11", false, | ||
944 | + paragrafo.toString(), paragrafo, "1")); | ||
945 | + | ||
946 | + String align = paragrafo.getAttributeValue("align"); | ||
947 | + if ("justify".equals(align)) | ||
948 | + occurrences.add(this.buildOccurrence("3.11", true, | ||
949 | + paragrafo.toString(), paragrafo, "2")); | ||
950 | + | ||
951 | + String style = paragrafo.getAttributeValue("style"); | ||
952 | + if (style != null && style.contains("text-align:justify")) | ||
953 | + occurrences.add(this.buildOccurrence("3.11", true, | ||
954 | + paragrafo.toString(), paragrafo, "2")); | ||
955 | + } | ||
956 | + | ||
779 | for (Element tags : getDocument().getAllElements()) { | 957 | for (Element tags : getDocument().getAllElements()) { |
780 | - if(!tags.getName().equals("p")){ | ||
781 | - String style = tags.getAttributeValue("style"); | ||
782 | - if(style != null && style.contains("text-align:justify")) | ||
783 | - occurrences.add(this.buildOccurrence("3.11", true, tags.toString(), tags, "3")); | ||
784 | - } | ||
785 | - | 958 | + if (!tags.getName().equals("p")) { |
959 | + String style = tags.getAttributeValue("style"); | ||
960 | + if (style != null && style.contains("text-align:justify")) | ||
961 | + occurrences.add(this.buildOccurrence("3.11", true, | ||
962 | + tags.toString(), tags, "3")); | ||
963 | + } | ||
964 | + | ||
786 | } | 965 | } |
787 | return occurrences; | 966 | return occurrences; |
788 | } | 967 | } |
789 | - | 968 | + |
790 | private List<Occurrence> checkRecommendation28() { | 969 | private List<Occurrence> checkRecommendation28() { |
791 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 970 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
792 | - | 971 | + |
793 | for (Element abbr : getDocument().getAllElements("abbr")) { | 972 | for (Element abbr : getDocument().getAllElements("abbr")) { |
794 | Attribute title = abbr.getAttributes().get("title"); | 973 | Attribute title = abbr.getAttributes().get("title"); |
795 | - if(title == null || title.getValue().equals("")) | ||
796 | - occurrences.add(buildOccurrence("3.12", true, abbr.toString(), abbr, "1")); | ||
797 | - | ||
798 | - | ||
799 | - if(abbr.getContent() == null) | ||
800 | - occurrences.add(buildOccurrence("3.12", true, abbr.toString(), abbr, "1")); | 974 | + if (title == null || title.getValue().equals("")) |
975 | + occurrences.add(buildOccurrence("3.12", true, abbr.toString(), | ||
976 | + abbr, "1")); | ||
977 | + | ||
978 | + if (abbr.getContent() == null) | ||
979 | + occurrences.add(buildOccurrence("3.12", true, abbr.toString(), | ||
980 | + abbr, "1")); | ||
801 | } | 981 | } |
802 | - | 982 | + |
803 | return occurrences; | 983 | return occurrences; |
804 | } | 984 | } |
805 | - | ||
806 | - private Occurrence buildOccurrence(String code, boolean error, | ||
807 | - String tag, Element element, | ||
808 | - String criterio) { | ||
809 | - return super.buildOccurrence(code, error, tag, element, OccurrenceClassification.CONTENT_INFORMATION,criterio); | ||
810 | - } | ||
811 | - | ||
812 | - public OccurrenceClassification type () { return OccurrenceClassification.CONTENT_INFORMATION;} | ||
813 | - | ||
814 | - private String[] hrefRegistroBr = {"COM","COM.BR","ECO.BR","EMP.BR","NET.BR","EDU.BR", | ||
815 | - "ADM.BR","ADV.BR","ARQ.BR","ATO.BR","BIO.BR","BMD.BR","CIM.BR","CNG.BR", | ||
816 | - "CNT.BR","ECN.BR","ENG.BR","ETI.B","FND.BR","FOT.BR","FST.BR","GGF.BR","JOR.BR", | ||
817 | - "LEL.BR","MAT.BR","MED.BR","MUS.BR","NOT.BR","NTR.BR","ODO.BR","PPG.BR","PRO.BR", | ||
818 | - "PSC.BR","QSL.BR","SLG.BR","TAXI.BR","TEO.BR","TRD.BR","VET.BR","ZLG.BR","BLOG.BR", | ||
819 | - "FLOG.BR","NOM.BR","VLOG.BR","WIKI.BR","AGR.BR","ART.BR","ESP.BR","ETC.BR","FAR.BR", | ||
820 | - "IMB.BR","IND.BR","INF.BR","RADIO.BR","REC.BR","SRV.BR","TMP.BR","TUR.BR","TV.BR", | ||
821 | - "AM.BR","COOP.BR","FM.BR","G12.BR","GOV.BR","MIL.BR","ORG.BR","PSI.BR","B.BR", | ||
822 | - "JUS.BR","LEG.BR","MP.BR"}; | ||
823 | - | ||
824 | - private String[] leiaMais = {"clique aqui","leia mais","saiba mais","veja mais","acesse a lista", "mais"}; | ||
825 | - | ||
826 | - private List<Occurrence> oder(List occurrences){ | ||
827 | - //Sorting | 985 | + |
986 | + private Occurrence buildOccurrence(String code, boolean error, String tag, | ||
987 | + Element element, String criterio) { | ||
988 | + return super.buildOccurrence(code, error, tag, element, | ||
989 | + OccurrenceClassification.CONTENT_INFORMATION, criterio); | ||
990 | + } | ||
991 | + | ||
992 | + public OccurrenceClassification type() { | ||
993 | + return OccurrenceClassification.CONTENT_INFORMATION; | ||
994 | + } | ||
995 | + | ||
996 | + private String[] hrefRegistroBr = { "COM", "COM.BR", "ECO.BR", "EMP.BR", | ||
997 | + "NET.BR", "EDU.BR", "ADM.BR", "ADV.BR", "ARQ.BR", "ATO.BR", | ||
998 | + "BIO.BR", "BMD.BR", "CIM.BR", "CNG.BR", "CNT.BR", "ECN.BR", | ||
999 | + "ENG.BR", "ETI.B", "FND.BR", "FOT.BR", "FST.BR", "GGF.BR", | ||
1000 | + "JOR.BR", "LEL.BR", "MAT.BR", "MED.BR", "MUS.BR", "NOT.BR", | ||
1001 | + "NTR.BR", "ODO.BR", "PPG.BR", "PRO.BR", "PSC.BR", "QSL.BR", | ||
1002 | + "SLG.BR", "TAXI.BR", "TEO.BR", "TRD.BR", "VET.BR", "ZLG.BR", | ||
1003 | + "BLOG.BR", "FLOG.BR", "NOM.BR", "VLOG.BR", "WIKI.BR", "AGR.BR", | ||
1004 | + "ART.BR", "ESP.BR", "ETC.BR", "FAR.BR", "IMB.BR", "IND.BR", | ||
1005 | + "INF.BR", "RADIO.BR", "REC.BR", "SRV.BR", "TMP.BR", "TUR.BR", | ||
1006 | + "TV.BR", "AM.BR", "COOP.BR", "FM.BR", "G12.BR", "GOV.BR", "MIL.BR", | ||
1007 | + "ORG.BR", "PSI.BR", "B.BR", "JUS.BR", "LEG.BR", "MP.BR" }; | ||
1008 | + | ||
1009 | + private String[] leiaMais = { "clique aqui", "leia mais", "saiba mais", | ||
1010 | + "veja mais", "acesse a lista", "mais" }; | ||
1011 | + | ||
1012 | + private List<Occurrence> oder(List occurrences) { | ||
1013 | + // Sorting | ||
828 | Collections.sort(occurrences, new Comparator<Occurrence>() { | 1014 | Collections.sort(occurrences, new Comparator<Occurrence>() { |
829 | - public int compare(Occurrence occurrence1, Occurrence occurrence2){ | ||
830 | - return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
831 | - } | ||
832 | - }); | 1015 | + public int compare(Occurrence occurrence1, Occurrence occurrence2) { |
1016 | + return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
1017 | + } | ||
1018 | + }); | ||
833 | return occurrences; | 1019 | return occurrences; |
834 | } | 1020 | } |
835 | - | 1021 | + |
836 | } | 1022 | } |
src/main/java/br/com/checker/emag/core/MarkEvaluation.java
@@ -23,74 +23,123 @@ import com.google.gson.Gson; | @@ -23,74 +23,123 @@ import com.google.gson.Gson; | ||
23 | import com.google.gson.GsonBuilder; | 23 | import com.google.gson.GsonBuilder; |
24 | 24 | ||
25 | public class MarkEvaluation extends Evaluation { | 25 | public class MarkEvaluation extends Evaluation { |
26 | - | ||
27 | - //private static String CSS_VALIDATOR_URL = "http://www.css-validator.org/validator?uri=#{url}&warning=0&output=soap12"; | 26 | + |
27 | + // private static String CSS_VALIDATOR_URL = | ||
28 | + // "http://www.css-validator.org/validator?uri=#{url}&warning=0&output=soap12"; | ||
28 | private static String CSS_VALIDATOR_URL = "http://jigsaw.w3.org/css-validator/validator?uri=#{url}&warning=0&output=soap12"; | 29 | private static String CSS_VALIDATOR_URL = "http://jigsaw.w3.org/css-validator/validator?uri=#{url}&warning=0&output=soap12"; |
29 | private static String HTML_VALIDATOR_URL = "https://validator.w3.org/nu/?doc=#{url}&out=json"; | 30 | private static String HTML_VALIDATOR_URL = "https://validator.w3.org/nu/?doc=#{url}&out=json"; |
30 | - | ||
31 | - private MarkEvaluation(Source document) { super(document); } | ||
32 | - | ||
33 | - private MarkEvaluation(Source document,String url) { | ||
34 | - super(document,url); | 31 | + |
32 | + private MarkEvaluation(Source document) { | ||
33 | + super(document); | ||
34 | + } | ||
35 | + | ||
36 | + private MarkEvaluation(Source document, String url) { | ||
37 | + super(document, url); | ||
35 | } | 38 | } |
36 | - | 39 | + |
37 | public static class MarkEvaluationBuilder extends EvaluationBuilder { | 40 | public static class MarkEvaluationBuilder extends EvaluationBuilder { |
38 | - | 41 | + |
39 | @Override | 42 | @Override |
40 | - protected MarkEvaluation with(Source document) { return new MarkEvaluation(document); } | ||
41 | - | ||
42 | - | 43 | + protected MarkEvaluation with(Source document) { |
44 | + return new MarkEvaluation(document); | ||
45 | + } | ||
46 | + | ||
43 | @Override | 47 | @Override |
44 | - protected MarkEvaluation with(Source document,String url) { return new MarkEvaluation(document,url); } | ||
45 | - | ||
46 | - public SpecificRecommendation recommendation1() { return new EvaluationRecommendation1();} | ||
47 | - public SpecificRecommendation recommendation2() { return new EvaluationRecommendation2();} | ||
48 | - public SpecificRecommendation recommendation3() { return new EvaluationRecommendation3();} | ||
49 | - public SpecificRecommendation recommendation4() { return new EvaluationRecommendation4();} | ||
50 | - public SpecificRecommendation recommendation5() { return new EvaluationRecommendation5();} | ||
51 | - public SpecificRecommendation recommendation6() { return new EvaluationRecommendation6();} | ||
52 | - public SpecificRecommendation recommendation7() { return new EvaluationRecommendation7();} | ||
53 | - public SpecificRecommendation recommendation8() { return new EvaluationRecommendation8();} | ||
54 | - public SpecificRecommendation recommendation9() { return new EvaluationRecommendation9();} | ||
55 | - } | ||
56 | - | ||
57 | - protected static class EvaluationRecommendation1 extends MarkRecommendation{ | ||
58 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation1();} | ||
59 | - } | ||
60 | - | ||
61 | - protected static class EvaluationRecommendation2 extends MarkRecommendation{ | ||
62 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation2();} | ||
63 | - } | ||
64 | - | ||
65 | - protected static class EvaluationRecommendation3 extends MarkRecommendation{ | ||
66 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation3();} | ||
67 | - } | ||
68 | - | ||
69 | - protected static class EvaluationRecommendation4 extends MarkRecommendation{ | ||
70 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation4();} | ||
71 | - } | ||
72 | - | ||
73 | - protected static class EvaluationRecommendation5 extends MarkRecommendation{ | ||
74 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation5();} | ||
75 | - } | ||
76 | - | ||
77 | - protected static class EvaluationRecommendation6 extends MarkRecommendation{ | ||
78 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation6();} | ||
79 | - } | ||
80 | - | ||
81 | - protected static class EvaluationRecommendation7 extends MarkRecommendation{ | ||
82 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation7();} | ||
83 | - } | ||
84 | - | ||
85 | - protected static class EvaluationRecommendation8 extends MarkRecommendation{ | ||
86 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation8();} | ||
87 | - } | ||
88 | - | ||
89 | - protected static class EvaluationRecommendation9 extends MarkRecommendation{ | ||
90 | - protected List<Occurrence> check() { return getEvaluation().checkRecommendation9();} | ||
91 | - } | ||
92 | - | ||
93 | - | 48 | + protected MarkEvaluation with(Source document, String url) { |
49 | + return new MarkEvaluation(document, url); | ||
50 | + } | ||
51 | + | ||
52 | + public SpecificRecommendation recommendation1() { | ||
53 | + return new EvaluationRecommendation1(); | ||
54 | + } | ||
55 | + | ||
56 | + public SpecificRecommendation recommendation2() { | ||
57 | + return new EvaluationRecommendation2(); | ||
58 | + } | ||
59 | + | ||
60 | + public SpecificRecommendation recommendation3() { | ||
61 | + return new EvaluationRecommendation3(); | ||
62 | + } | ||
63 | + | ||
64 | + public SpecificRecommendation recommendation4() { | ||
65 | + return new EvaluationRecommendation4(); | ||
66 | + } | ||
67 | + | ||
68 | + public SpecificRecommendation recommendation5() { | ||
69 | + return new EvaluationRecommendation5(); | ||
70 | + } | ||
71 | + | ||
72 | + public SpecificRecommendation recommendation6() { | ||
73 | + return new EvaluationRecommendation6(); | ||
74 | + } | ||
75 | + | ||
76 | + public SpecificRecommendation recommendation7() { | ||
77 | + return new EvaluationRecommendation7(); | ||
78 | + } | ||
79 | + | ||
80 | + public SpecificRecommendation recommendation8() { | ||
81 | + return new EvaluationRecommendation8(); | ||
82 | + } | ||
83 | + | ||
84 | + public SpecificRecommendation recommendation9() { | ||
85 | + return new EvaluationRecommendation9(); | ||
86 | + } | ||
87 | + } | ||
88 | + | ||
89 | + protected static class EvaluationRecommendation1 extends MarkRecommendation { | ||
90 | + protected List<Occurrence> check() { | ||
91 | + return getEvaluation().checkRecommendation1(); | ||
92 | + } | ||
93 | + } | ||
94 | + | ||
95 | + protected static class EvaluationRecommendation2 extends MarkRecommendation { | ||
96 | + protected List<Occurrence> check() { | ||
97 | + return getEvaluation().checkRecommendation2(); | ||
98 | + } | ||
99 | + } | ||
100 | + | ||
101 | + protected static class EvaluationRecommendation3 extends MarkRecommendation { | ||
102 | + protected List<Occurrence> check() { | ||
103 | + return getEvaluation().checkRecommendation3(); | ||
104 | + } | ||
105 | + } | ||
106 | + | ||
107 | + protected static class EvaluationRecommendation4 extends MarkRecommendation { | ||
108 | + protected List<Occurrence> check() { | ||
109 | + return getEvaluation().checkRecommendation4(); | ||
110 | + } | ||
111 | + } | ||
112 | + | ||
113 | + protected static class EvaluationRecommendation5 extends MarkRecommendation { | ||
114 | + protected List<Occurrence> check() { | ||
115 | + return getEvaluation().checkRecommendation5(); | ||
116 | + } | ||
117 | + } | ||
118 | + | ||
119 | + protected static class EvaluationRecommendation6 extends MarkRecommendation { | ||
120 | + protected List<Occurrence> check() { | ||
121 | + return getEvaluation().checkRecommendation6(); | ||
122 | + } | ||
123 | + } | ||
124 | + | ||
125 | + protected static class EvaluationRecommendation7 extends MarkRecommendation { | ||
126 | + protected List<Occurrence> check() { | ||
127 | + return getEvaluation().checkRecommendation7(); | ||
128 | + } | ||
129 | + } | ||
130 | + | ||
131 | + protected static class EvaluationRecommendation8 extends MarkRecommendation { | ||
132 | + protected List<Occurrence> check() { | ||
133 | + return getEvaluation().checkRecommendation8(); | ||
134 | + } | ||
135 | + } | ||
136 | + | ||
137 | + protected static class EvaluationRecommendation9 extends MarkRecommendation { | ||
138 | + protected List<Occurrence> check() { | ||
139 | + return getEvaluation().checkRecommendation9(); | ||
140 | + } | ||
141 | + } | ||
142 | + | ||
94 | public List<Occurrence> check() { | 143 | public List<Occurrence> check() { |
95 | getOccurrences().addAll(checkRecommendation1()); | 144 | getOccurrences().addAll(checkRecommendation1()); |
96 | getOccurrences().addAll(checkRecommendation2()); | 145 | getOccurrences().addAll(checkRecommendation2()); |
@@ -101,771 +150,949 @@ public class MarkEvaluation extends Evaluation { | @@ -101,771 +150,949 @@ public class MarkEvaluation extends Evaluation { | ||
101 | getOccurrences().addAll(checkRecommendation7()); | 150 | getOccurrences().addAll(checkRecommendation7()); |
102 | getOccurrences().addAll(checkRecommendation8()); | 151 | getOccurrences().addAll(checkRecommendation8()); |
103 | getOccurrences().addAll(checkRecommendation9()); | 152 | getOccurrences().addAll(checkRecommendation9()); |
104 | - | 153 | + |
105 | return getOccurrences(); | 154 | return getOccurrences(); |
106 | } | 155 | } |
107 | - | ||
108 | - | 156 | + |
109 | private List<Occurrence> checkRecommendation1() { | 157 | private List<Occurrence> checkRecommendation1() { |
110 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 158 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
111 | - | ||
112 | - | 159 | + |
113 | String url = getUrl(); | 160 | String url = getUrl(); |
114 | - if(url!=null){ | ||
115 | - | 161 | + if (url != null) { |
162 | + | ||
116 | int[] errosWarningsCss = getErrorCount(true, url); | 163 | int[] errosWarningsCss = getErrorCount(true, url); |
117 | int[] errosWarningsHtml = getErrorCount(false, url); | 164 | int[] errosWarningsHtml = getErrorCount(false, url); |
118 | - | ||
119 | - if(errosWarningsHtml[1] > 0) | ||
120 | - occurrences.add(buildOccurrence("1.1", false, url, getDocument().getFirstElement(), "1")); | ||
121 | - | ||
122 | - if(errosWarningsCss[1] > 0) | ||
123 | - occurrences.add(buildOccurrence("1.1", false, url, getDocument().getFirstElement().getFirstElement(), "2")); | ||
124 | - | ||
125 | - if(errosWarningsHtml[0] > 0) | ||
126 | - occurrences.add(buildOccurrence("1.1", true, url, getDocument().getFirstElement(), "1")); | ||
127 | - | ||
128 | - if(errosWarningsCss[0] > 0) | ||
129 | - occurrences.add(buildOccurrence("1.1", true, url, getDocument().getFirstElement().getFirstElement(), "2")); | 165 | + |
166 | + if (errosWarningsHtml[1] > 0) | ||
167 | + occurrences.add(buildOccurrence("1.1", false, url, | ||
168 | + getDocument().getFirstElement(), "1")); | ||
169 | + | ||
170 | + if (errosWarningsCss[1] > 0) | ||
171 | + occurrences | ||
172 | + .add(buildOccurrence("1.1", false, url, getDocument() | ||
173 | + .getFirstElement().getFirstElement(), "2")); | ||
174 | + | ||
175 | + if (errosWarningsHtml[0] > 0) | ||
176 | + occurrences.add(buildOccurrence("1.1", true, url, getDocument() | ||
177 | + .getFirstElement(), "1")); | ||
178 | + | ||
179 | + if (errosWarningsCss[0] > 0) | ||
180 | + occurrences.add(buildOccurrence("1.1", true, url, getDocument() | ||
181 | + .getFirstElement().getFirstElement(), "2")); | ||
130 | } | 182 | } |
131 | - | 183 | + |
132 | for (Element element : getDocument().getAllElements()) { | 184 | for (Element element : getDocument().getAllElements()) { |
133 | String value = element.getAttributeValue("style"); | 185 | String value = element.getAttributeValue("style"); |
134 | - | ||
135 | - if(value != null) | ||
136 | - occurrences.add(this.buildOccurrence("1.1", false, element.toString(), element, "3")); | 186 | + |
187 | + if (value != null) | ||
188 | + occurrences.add(this.buildOccurrence("1.1", false, | ||
189 | + element.toString(), element, "3")); | ||
137 | } | 190 | } |
138 | - | 191 | + |
139 | for (Element element : getDocument().getAllElements("style")) { | 192 | for (Element element : getDocument().getAllElements("style")) { |
140 | - | ||
141 | - if(element != null) | ||
142 | - occurrences.add(this.buildOccurrence("1.1", false, element.toString(), element, "4")); | ||
143 | - } | ||
144 | - | ||
145 | - | ||
146 | - List<String> eventos = new ArrayList<String>( Arrays.asList("onclick", "ondblclick")); | ||
147 | - | ||
148 | - | 193 | + |
194 | + if (element != null) | ||
195 | + occurrences.add(this.buildOccurrence("1.1", false, | ||
196 | + element.toString(), element, "4")); | ||
197 | + } | ||
198 | + | ||
199 | + List<String> eventos = new ArrayList<String>(Arrays.asList("onclick", | ||
200 | + "ondblclick")); | ||
201 | + | ||
149 | for (Element element : getDocument().getAllElements()) { | 202 | for (Element element : getDocument().getAllElements()) { |
150 | - if(element.getAttributes() != null){ | ||
151 | - //String script = element.getAttributes().getTextExtractor().toString(); | ||
152 | - for (Attribute attribute : element.getAttributes()) { | ||
153 | - if(eventos.contains(attribute.getName())) | ||
154 | - occurrences.add(this.buildOccurrence("1.1", false, element.toString(), element, "5")); | 203 | + if (element.getAttributes() != null) { |
204 | + // String script = | ||
205 | + // element.getAttributes().getTextExtractor().toString(); | ||
206 | + for (Attribute attribute : element.getAttributes()) { | ||
207 | + if (eventos.contains(attribute.getName())) | ||
208 | + occurrences.add(this.buildOccurrence("1.1", false, | ||
209 | + element.toString(), element, "5")); | ||
155 | } | 210 | } |
156 | - | ||
157 | - /* if(script.contains("javascript")){ | ||
158 | - occurrences.add(this.buildOccurrence("1.1", false, element.toString(), element, "5")); | ||
159 | - }*/ | 211 | + |
212 | + /* | ||
213 | + * if(script.contains("javascript")){ | ||
214 | + * occurrences.add(this.buildOccurrence("1.1", false, | ||
215 | + * element.toString(), element, "5")); } | ||
216 | + */ | ||
160 | } | 217 | } |
161 | } | 218 | } |
162 | - | 219 | + |
163 | for (Element element : getDocument().getAllElements("script")) { | 220 | for (Element element : getDocument().getAllElements("script")) { |
164 | - //if(element.getAttributeValue("src") ==null) | ||
165 | - if(element != null) | ||
166 | - occurrences.add(this.buildOccurrence("1.1", false, element.toString(), element, "6")); | 221 | + // if(element.getAttributeValue("src") ==null) |
222 | + if (element != null) | ||
223 | + occurrences.add(this.buildOccurrence("1.1", false, | ||
224 | + element.toString(), element, "6")); | ||
167 | } | 225 | } |
168 | - | 226 | + |
169 | this.oder(occurrences); | 227 | this.oder(occurrences); |
170 | - | 228 | + |
171 | return occurrences; | 229 | return occurrences; |
172 | } | 230 | } |
173 | - | 231 | + |
174 | private List<Occurrence> checkRecommendation2() { | 232 | private List<Occurrence> checkRecommendation2() { |
175 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 233 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
176 | - | ||
177 | - List<String> tags = Arrays.asList("h1","h2","h3","h4","h5","h6","a","p"); | 234 | + |
235 | + List<String> tags = Arrays.asList("h1", "h2", "h3", "h4", "h5", "h6", | ||
236 | + "a", "p"); | ||
178 | List<Integer> linhasImg = new ArrayList<Integer>(); | 237 | List<Integer> linhasImg = new ArrayList<Integer>(); |
179 | - | ||
180 | - for (String tag : tags) { | ||
181 | - for (Element element : getDocument().getAllElements(tag)) { | ||
182 | - | ||
183 | - /*if(element.getAttributes().getCount()==0) | ||
184 | - occurrences.add(this.buildOccurrence("1.2", true, element.toString(), element, "1")); | ||
185 | - else*/ | ||
186 | - | ||
187 | - if(element != null){ | ||
188 | - String endTag = element.getEndTag() == null ? "" : element.getEndTag().toString(); | ||
189 | - | ||
190 | - Element img = element.getFirstElement("img"); | ||
191 | - | ||
192 | - if(img != null){ | ||
193 | - if(img.getAttributes().get("alt") != null && img.getAttributes().get("alt").getValue().isEmpty()){ | ||
194 | - | ||
195 | - if(!linhasImg.contains(this.getRow(img))){ | ||
196 | - occurrences.add(this.buildOccurrence("1.2", true,img.getStartTag().toString(), img, "1")); | ||
197 | - } | ||
198 | - linhasImg.add(this.getRow(img)); | ||
199 | - } | ||
200 | - }else{ | ||
201 | - if(element.getContent().toString().isEmpty() || element.getContent().toString().trim().equals("")){ | ||
202 | - occurrences.add(this.buildOccurrence("1.2", true, element.getStartTag().toString() + endTag, element, "1")); | ||
203 | - } | 238 | + |
239 | + for (String tag : tags) { | ||
240 | + for (Element element : getDocument().getAllElements(tag)) { | ||
241 | + | ||
242 | + /* | ||
243 | + * if(element.getAttributes().getCount()==0) | ||
244 | + * occurrences.add(this.buildOccurrence("1.2", true, | ||
245 | + * element.toString(), element, "1")); else | ||
246 | + */ | ||
247 | + | ||
248 | + if (element != null) { | ||
249 | + String endTag = element.getEndTag() == null ? "" : element | ||
250 | + .getEndTag().toString(); | ||
251 | + | ||
252 | + Element img = element.getFirstElement("img"); | ||
253 | + | ||
254 | + if (img != null) { | ||
255 | + if (img.getAttributes().get("alt") != null | ||
256 | + && img.getAttributes().get("alt").getValue() | ||
257 | + .isEmpty()) { | ||
258 | + | ||
259 | + if (!linhasImg.contains(this.getRow(img))) { | ||
260 | + occurrences.add(this.buildOccurrence("1.2", | ||
261 | + true, img.getStartTag().toString(), | ||
262 | + img, "1")); | ||
263 | + } | ||
264 | + linhasImg.add(this.getRow(img)); | ||
265 | + } | ||
266 | + } else { | ||
267 | + if (element.getContent().toString().isEmpty() | ||
268 | + || element.getContent().toString().trim() | ||
269 | + .equals("")) { | ||
270 | + occurrences.add(this.buildOccurrence("1.2", true, | ||
271 | + element.getStartTag().toString() + endTag, | ||
272 | + element, "1")); | ||
204 | } | 273 | } |
205 | } | 274 | } |
206 | } | 275 | } |
207 | - | ||
208 | } | 276 | } |
209 | - | ||
210 | - linhasImg = new ArrayList<Integer>(); | ||
211 | - | ||
212 | - tags = Arrays.asList("!doctype","script","meta","style","head","link","h1","h2","h3","h4","h5","h6","a","p","input"); | ||
213 | - | ||
214 | - for (Element element : getDocument().getAllElements()) { | ||
215 | - if(!tags.contains(element.getName())){ | ||
216 | - | ||
217 | - if(element != null && !(element.getName().equals("!--"))){ | ||
218 | - | ||
219 | - String endTag = element.getEndTag() == null ? "" : element.getEndTag().toString(); | ||
220 | - | ||
221 | - Element img = element.getFirstElement("img"); | ||
222 | - | ||
223 | - if(img != null){ | ||
224 | - if(img.getAttributes().get("alt") != null && img.getAttributes().get("alt").getValue().isEmpty()){ | ||
225 | - | ||
226 | - if(!linhasImg.contains(this.getRow(img))){ | ||
227 | - occurrences.add(this.buildOccurrence("1.2", false, img.toString(), img, "1")); | ||
228 | - } | ||
229 | - | ||
230 | - linhasImg.add(this.getRow(img)); | ||
231 | - } | ||
232 | - | ||
233 | - }else{ | ||
234 | - if(element.getContent().toString().isEmpty() || element.getContent().toString().trim().equals("")){ | ||
235 | - occurrences.add(this.buildOccurrence("1.2", false, element.getStartTag().toString() + endTag, element, "1")); | ||
236 | - } | ||
237 | - | 277 | + |
278 | + } | ||
279 | + | ||
280 | + linhasImg = new ArrayList<Integer>(); | ||
281 | + | ||
282 | + tags = Arrays.asList("!doctype", "script", "meta", "style", "head", | ||
283 | + "link", "h1", "h2", "h3", "h4", "h5", "h6", "a", "p", "input"); | ||
284 | + | ||
285 | + for (Element element : getDocument().getAllElements()) { | ||
286 | + if (!tags.contains(element.getName())) { | ||
287 | + | ||
288 | + if (element != null && !(element.getName().equals("!--"))) { | ||
289 | + | ||
290 | + String endTag = element.getEndTag() == null ? "" : element | ||
291 | + .getEndTag().toString(); | ||
292 | + | ||
293 | + Element img = element.getFirstElement("img"); | ||
294 | + | ||
295 | + if (img != null) { | ||
296 | + if (img.getAttributes().get("alt") != null | ||
297 | + && img.getAttributes().get("alt").getValue() | ||
298 | + .isEmpty()) { | ||
299 | + | ||
300 | + if (!linhasImg.contains(this.getRow(img))) { | ||
301 | + occurrences.add(this.buildOccurrence("1.2", | ||
302 | + false, img.toString(), img, "1")); | ||
303 | + } | ||
304 | + | ||
305 | + linhasImg.add(this.getRow(img)); | ||
306 | + } | ||
307 | + | ||
308 | + } else { | ||
309 | + if (element.getContent().toString().isEmpty() | ||
310 | + || element.getContent().toString().trim() | ||
311 | + .equals("")) { | ||
312 | + occurrences.add(this.buildOccurrence("1.2", false, | ||
313 | + element.getStartTag().toString() + endTag, | ||
314 | + element, "1")); | ||
238 | } | 315 | } |
316 | + | ||
239 | } | 317 | } |
240 | } | 318 | } |
241 | } | 319 | } |
242 | - | ||
243 | - this.oder(occurrences); | ||
244 | - | ||
245 | - | ||
246 | - /*boolean isError = false; | ||
247 | - for (Element element : getDocument().getAllElements()) { | ||
248 | - Attributes attribute = element.getAttributes(); | ||
249 | - | ||
250 | - isError = tags.contains(element.getName()); | ||
251 | - | ||
252 | - | ||
253 | - if(element.isEmpty()) | ||
254 | - occurrences.add(this.buildOccurrence("1.2", isError, element.toString(), element, "1")); | ||
255 | - else if(attribute.getCount()==0) | ||
256 | - occurrences.add(this.buildOccurrence("1.2", isError, element.toString(), element, "1")); | ||
257 | - }*/ | ||
258 | - | ||
259 | - | ||
260 | - | 320 | + } |
321 | + | ||
322 | + this.oder(occurrences); | ||
323 | + | ||
324 | + /* | ||
325 | + * boolean isError = false; for (Element element : | ||
326 | + * getDocument().getAllElements()) { Attributes attribute = | ||
327 | + * element.getAttributes(); | ||
328 | + * | ||
329 | + * isError = tags.contains(element.getName()); | ||
330 | + * | ||
331 | + * | ||
332 | + * if(element.isEmpty()) occurrences.add(this.buildOccurrence("1.2", | ||
333 | + * isError, element.toString(), element, "1")); else | ||
334 | + * if(attribute.getCount()==0) | ||
335 | + * occurrences.add(this.buildOccurrence("1.2", isError, | ||
336 | + * element.toString(), element, "1")); } | ||
337 | + */ | ||
338 | + | ||
261 | return occurrences; | 339 | return occurrences; |
262 | } | 340 | } |
263 | - | 341 | + |
264 | private List<Occurrence> checkRecommendation3() { | 342 | private List<Occurrence> checkRecommendation3() { |
265 | - | ||
266 | - | ||
267 | - //CRITERIO 4 | 343 | + |
344 | + // CRITERIO 4 | ||
268 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 345 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
269 | int count = 0; | 346 | int count = 0; |
270 | - | ||
271 | - for (Element element : getDocument().getAllElements("h1")){ | ||
272 | - if(count>0){ | ||
273 | - occurrences.add(this.buildOccurrence("1.3", true,element.toString(), element, "4")); | ||
274 | - }else | 347 | + |
348 | + for (Element element : getDocument().getAllElements("h1")) { | ||
349 | + if (count > 0) { | ||
350 | + occurrences.add(this.buildOccurrence("1.3", true, | ||
351 | + element.toString(), element, "4")); | ||
352 | + } else | ||
275 | count++; | 353 | count++; |
276 | } | 354 | } |
277 | - | ||
278 | - /*if(count>0) | ||
279 | - occurrences.add(this.buildOccurrence("1.3", true,getDocument().getFirstElement("h1").toString(), getDocument().getFirstElement("h1"), "4")); | ||
280 | - */ | ||
281 | - | ||
282 | - //CRITERIO 3 | 355 | + |
356 | + /* | ||
357 | + * if(count>0) occurrences.add(this.buildOccurrence("1.3", | ||
358 | + * true,getDocument().getFirstElement("h1").toString(), | ||
359 | + * getDocument().getFirstElement("h1"), "4")); | ||
360 | + */ | ||
361 | + | ||
362 | + // CRITERIO 3 | ||
283 | boolean hasOtherH = false; | 363 | boolean hasOtherH = false; |
284 | - for(Element element : getDocument().getAllElements()) { | 364 | + for (Element element : getDocument().getAllElements()) { |
285 | if (element.getName().matches("h[2-6]")) { | 365 | if (element.getName().matches("h[2-6]")) { |
286 | hasOtherH = true; | 366 | hasOtherH = true; |
287 | break; | 367 | break; |
288 | - } | ||
289 | - } | ||
290 | - | ||
291 | - if(count >0 && !hasOtherH) | ||
292 | - occurrences.add(this.buildOccurrence("1.3", false,getDocument().getFirstElement("h1").toString(), getDocument().getFirstElement("h1"), "3")); | ||
293 | - | ||
294 | - | ||
295 | - //CRITERIO 2 | ||
296 | - | ||
297 | - /*String[] tags = {"h6","h5","h4","h3","h2","h1"}; | ||
298 | - //String[] tags = {"h1","h2","h3","h4","h5","h6"}; | ||
299 | - | ||
300 | - | ||
301 | - for(int index = 0 ; index< tags.length ; index++){ | ||
302 | - | ||
303 | - for(Element h : getDocument().getAllElements(tags[index])) { | ||
304 | - if(!hasCorrectHierarchy(index, tags)) | ||
305 | - occurrences.add(this.buildOccurrence("1.3", true,h.toString(), h, "2")); | ||
306 | } | 368 | } |
307 | - }*/ | ||
308 | - | ||
309 | - | ||
310 | - | 369 | + } |
370 | + | ||
371 | + if (count > 0 && !hasOtherH) | ||
372 | + occurrences.add(this.buildOccurrence("1.3", false, getDocument() | ||
373 | + .getFirstElement("h1").toString(), getDocument() | ||
374 | + .getFirstElement("h1"), "3")); | ||
375 | + | ||
376 | + // CRITERIO 2 | ||
377 | + | ||
378 | + /* | ||
379 | + * String[] tags = {"h6","h5","h4","h3","h2","h1"}; //String[] tags = | ||
380 | + * {"h1","h2","h3","h4","h5","h6"}; | ||
381 | + * | ||
382 | + * | ||
383 | + * for(int index = 0 ; index< tags.length ; index++){ | ||
384 | + * | ||
385 | + * for(Element h : getDocument().getAllElements(tags[index])) { | ||
386 | + * if(!hasCorrectHierarchy(index, tags)) | ||
387 | + * occurrences.add(this.buildOccurrence("1.3", true,h.toString(), h, | ||
388 | + * "2")); } } | ||
389 | + */ | ||
390 | + | ||
311 | List<Element> elementsObj = getDocument().getAllElements(); | 391 | List<Element> elementsObj = getDocument().getAllElements(); |
312 | - | 392 | + |
313 | int anterior = 1; | 393 | int anterior = 1; |
314 | for (Element htmlElement : elementsObj) { | 394 | for (Element htmlElement : elementsObj) { |
315 | - if (htmlElement.getName().matches("h[1-6]")) { | ||
316 | - int tagId = Integer.parseInt(htmlElement.getName().substring(1)); | ||
317 | - if(!(tagId <= anterior)){ | ||
318 | - if(!(tagId == anterior+1)) | ||
319 | - occurrences.add(this.buildOccurrence("1.3", true,htmlElement.toString(), htmlElement, "2")); | ||
320 | - } | ||
321 | - anterior = tagId; | ||
322 | - } | ||
323 | - } | ||
324 | - | ||
325 | - if(!hasH()) | ||
326 | - occurrences.add(this.buildOccurrence("1.3", true,"Observação - Sem fonte (os níveis de título não foram utilizados)", getDocument().getFirstElement(), "1")); | ||
327 | - | ||
328 | - //Sorting | 395 | + if (htmlElement.getName().matches("h[1-6]")) { |
396 | + int tagId = Integer | ||
397 | + .parseInt(htmlElement.getName().substring(1)); | ||
398 | + if (!(tagId <= anterior)) { | ||
399 | + if (!(tagId == anterior + 1)) | ||
400 | + occurrences.add(this.buildOccurrence("1.3", true, | ||
401 | + htmlElement.toString(), htmlElement, "2")); | ||
402 | + } | ||
403 | + anterior = tagId; | ||
404 | + } | ||
405 | + } | ||
406 | + | ||
407 | + if (!hasH()) | ||
408 | + occurrences | ||
409 | + .add(this | ||
410 | + .buildOccurrence( | ||
411 | + "1.3", | ||
412 | + true, | ||
413 | + "Observação - Sem fonte (os níveis de título não foram utilizados)", | ||
414 | + getDocument().getFirstElement(), "1")); | ||
415 | + | ||
416 | + // Sorting | ||
329 | Collections.sort(occurrences, new Comparator<Occurrence>() { | 417 | Collections.sort(occurrences, new Comparator<Occurrence>() { |
330 | - public int compare(Occurrence occurrence1, Occurrence occurrence2){ | ||
331 | - return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
332 | - } | ||
333 | - }); | ||
334 | - | ||
335 | - | 418 | + public int compare(Occurrence occurrence1, Occurrence occurrence2) { |
419 | + return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
420 | + } | ||
421 | + }); | ||
422 | + | ||
336 | return occurrences; | 423 | return occurrences; |
337 | } | 424 | } |
338 | - | ||
339 | - private int verificarNiveis(Integer posicao, List<String> tags){ | 425 | + |
426 | + private int verificarNiveis(Integer posicao, List<String> tags) { | ||
340 | for (int i = 0; i < posicao; i++) { | 427 | for (int i = 0; i < posicao; i++) { |
341 | - if(Integer.parseInt( tags.get(i).substring(1)) == Integer.parseInt(tags.get(posicao).substring(1))-1){ | 428 | + if (Integer.parseInt(tags.get(i).substring(1)) == Integer |
429 | + .parseInt(tags.get(posicao).substring(1)) - 1) { | ||
342 | return Integer.parseInt(tags.get(i).substring(1)); | 430 | return Integer.parseInt(tags.get(i).substring(1)); |
343 | - } | ||
344 | - } | 431 | + } |
432 | + } | ||
345 | return -1; | 433 | return -1; |
346 | } | 434 | } |
347 | - | ||
348 | - private boolean hasCorrectHierarchy(int index,String[] tags) { | ||
349 | - | ||
350 | - for(int i = index+1;i<tags.length;i++ ){ | ||
351 | - if(getDocument().getFirstElement(tags[i])== null) | 435 | + |
436 | + private boolean hasCorrectHierarchy(int index, String[] tags) { | ||
437 | + | ||
438 | + for (int i = index + 1; i < tags.length; i++) { | ||
439 | + if (getDocument().getFirstElement(tags[i]) == null) | ||
352 | return false; | 440 | return false; |
353 | } | 441 | } |
354 | return true; | 442 | return true; |
355 | } | 443 | } |
356 | - | 444 | + |
357 | private boolean hasH() { | 445 | private boolean hasH() { |
358 | - | ||
359 | - String[] tags = {"h6","h5","h4","h3","h2","h1"}; | ||
360 | - for(String h : tags){ | ||
361 | - if(getDocument().getFirstElement(h) !=null) | 446 | + |
447 | + String[] tags = { "h6", "h5", "h4", "h3", "h2", "h1" }; | ||
448 | + for (String h : tags) { | ||
449 | + if (getDocument().getFirstElement(h) != null) | ||
362 | return true; | 450 | return true; |
363 | } | 451 | } |
364 | - | 452 | + |
365 | return false; | 453 | return false; |
366 | } | 454 | } |
367 | - | ||
368 | - /*No documento NÃO PERMITE VERIFICAÇÃO AUTOMATIZADA*/ | 455 | + |
456 | + /* No documento NÃO PERMITE VERIFICAÇÃO AUTOMATIZADA */ | ||
369 | private List<Occurrence> checkRecommendation4() { | 457 | private List<Occurrence> checkRecommendation4() { |
370 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 458 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
371 | - | ||
372 | - for(Element link : this.getDocument().getAllElements("a")){ | 459 | + |
460 | + for (Element link : this.getDocument().getAllElements("a")) { | ||
373 | Attribute tabIndex = link.getAttributes().get("tabindex"); | 461 | Attribute tabIndex = link.getAttributes().get("tabindex"); |
374 | - if(tabIndex!=null) { | ||
375 | - occurrences.add(this.buildOccurrence("1.4", false,link.toString(), link, "2")); | ||
376 | - | ||
377 | - if(rangeIncorretoTabeIndex(tabIndex)) | ||
378 | - occurrences.add(this.buildOccurrence("1.4", false,link.toString(), link, "3")); | 462 | + if (tabIndex != null) { |
463 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
464 | + link.toString(), link, "2")); | ||
465 | + | ||
466 | + if (rangeIncorretoTabeIndex(tabIndex)) | ||
467 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
468 | + link.toString(), link, "3")); | ||
379 | } | 469 | } |
380 | } | 470 | } |
381 | - | ||
382 | - for(Element input : this.getDocument().getAllElements("input")){ | ||
383 | - | 471 | + |
472 | + for (Element input : this.getDocument().getAllElements("input")) { | ||
473 | + | ||
384 | Attribute tabIndex = input.getAttributes().get("tabindex"); | 474 | Attribute tabIndex = input.getAttributes().get("tabindex"); |
385 | - if(tabIndex!=null) | ||
386 | - occurrences.add(this.buildOccurrence("1.4", false, input.toString(), input, "2")); | ||
387 | - | ||
388 | - if(rangeIncorretoTabeIndex(tabIndex)) | ||
389 | - occurrences.add(this.buildOccurrence("1.4", false,input.toString(), input, "3")); | 475 | + if (tabIndex != null) |
476 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
477 | + input.toString(), input, "2")); | ||
478 | + | ||
479 | + if (rangeIncorretoTabeIndex(tabIndex)) | ||
480 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
481 | + input.toString(), input, "3")); | ||
390 | } | 482 | } |
391 | - | ||
392 | - for(Element select : this.getDocument().getAllElements("select")){ | ||
393 | - | 483 | + |
484 | + for (Element select : this.getDocument().getAllElements("select")) { | ||
485 | + | ||
394 | Attribute tabIndex = select.getAttributes().get("tabindex"); | 486 | Attribute tabIndex = select.getAttributes().get("tabindex"); |
395 | - if(tabIndex!=null) | ||
396 | - occurrences.add(this.buildOccurrence("1.4", false, select.toString(), select, "2")); | ||
397 | - | ||
398 | - if(rangeIncorretoTabeIndex(tabIndex)) | ||
399 | - occurrences.add(this.buildOccurrence("1.4", false,select.toString(), select, "3")); | 487 | + if (tabIndex != null) |
488 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
489 | + select.toString(), select, "2")); | ||
490 | + | ||
491 | + if (rangeIncorretoTabeIndex(tabIndex)) | ||
492 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
493 | + select.toString(), select, "3")); | ||
400 | } | 494 | } |
401 | - | ||
402 | - for(Element textarea : this.getDocument().getAllElements("textarea")){ | ||
403 | - | 495 | + |
496 | + for (Element textarea : this.getDocument().getAllElements("textarea")) { | ||
497 | + | ||
404 | Attribute tabIndex = textarea.getAttributes().get("tabindex"); | 498 | Attribute tabIndex = textarea.getAttributes().get("tabindex"); |
405 | - if(tabIndex!=null) | ||
406 | - occurrences.add(this.buildOccurrence("1.4", false, textarea.toString(), textarea, "2")); | ||
407 | - | ||
408 | - if(rangeIncorretoTabeIndex(tabIndex)) | ||
409 | - occurrences.add(this.buildOccurrence("1.4", false,textarea.toString(), textarea, "3")); | ||
410 | - } | ||
411 | - | ||
412 | - /*Element section = this.getDocument().getFirstElement("section"); | ||
413 | - | ||
414 | - if(section !=null){ | ||
415 | - | ||
416 | - int firstSectionRow = this.getRow(section); | ||
417 | - for(Element nav : this.getDocument().getAllElements("nav")){ | ||
418 | - if(this.getRow(nav) < firstSectionRow) | ||
419 | - occurrences.add(this.buildOccurrence("1.4", false,nav.toString(), nav, "1")); | ||
420 | - } | ||
421 | - }*/ | ||
422 | - | ||
423 | - | 499 | + if (tabIndex != null) |
500 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
501 | + textarea.toString(), textarea, "2")); | ||
502 | + | ||
503 | + if (rangeIncorretoTabeIndex(tabIndex)) | ||
504 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
505 | + textarea.toString(), textarea, "3")); | ||
506 | + } | ||
507 | + | ||
508 | + /* | ||
509 | + * Element section = this.getDocument().getFirstElement("section"); | ||
510 | + * | ||
511 | + * if(section !=null){ | ||
512 | + * | ||
513 | + * int firstSectionRow = this.getRow(section); for(Element nav : | ||
514 | + * this.getDocument().getAllElements("nav")){ if(this.getRow(nav) < | ||
515 | + * firstSectionRow) occurrences.add(this.buildOccurrence("1.4", | ||
516 | + * false,nav.toString(), nav, "1")); } } | ||
517 | + */ | ||
518 | + | ||
424 | List<Integer> verificadsos = new ArrayList<Integer>(); | 519 | List<Integer> verificadsos = new ArrayList<Integer>(); |
425 | - for(Element nav : this.getDocument().getAllElements("nav")){ | ||
426 | - if(nav !=null){ | ||
427 | - int firstNavRow = this.getRow(nav); | ||
428 | - | ||
429 | - for(Element section : this.getDocument().getAllElements("section")){ | ||
430 | - | ||
431 | - if(firstNavRow < this.getRow(section)){ | ||
432 | - if(!verificadsos.contains(this.getRow(section))){ | ||
433 | - occurrences.add(this.buildOccurrence("1.4", false,section.getStartTag().toString(), section, "1")); | 520 | + for (Element nav : this.getDocument().getAllElements("nav")) { |
521 | + if (nav != null) { | ||
522 | + int firstNavRow = this.getRow(nav); | ||
523 | + | ||
524 | + for (Element section : this.getDocument().getAllElements( | ||
525 | + "section")) { | ||
526 | + | ||
527 | + if (firstNavRow < this.getRow(section)) { | ||
528 | + if (!verificadsos.contains(this.getRow(section))) { | ||
529 | + occurrences.add(this.buildOccurrence("1.4", false, | ||
530 | + section.getStartTag().toString(), section, | ||
531 | + "1")); | ||
434 | verificadsos.add(this.getRow(section)); | 532 | verificadsos.add(this.getRow(section)); |
435 | - } | ||
436 | - | ||
437 | - } | 533 | + } |
534 | + | ||
535 | + } | ||
438 | } | 536 | } |
439 | } | 537 | } |
440 | } | 538 | } |
441 | - | ||
442 | - | ||
443 | - | ||
444 | - | 539 | + |
445 | return occurrences; | 540 | return occurrences; |
446 | } | 541 | } |
447 | - | 542 | + |
448 | private boolean rangeIncorretoTabeIndex(Attribute tabIndex) { | 543 | private boolean rangeIncorretoTabeIndex(Attribute tabIndex) { |
449 | - try{ | ||
450 | - Integer value = Integer.valueOf(tabIndex.getValue() ); | ||
451 | - if(value <0 || value > 32767) | 544 | + try { |
545 | + Integer value = Integer.valueOf(tabIndex.getValue()); | ||
546 | + if (value < 0 || value > 32767) | ||
452 | return true; | 547 | return true; |
453 | - }catch(Exception e){ | 548 | + } catch (Exception e) { |
454 | return false; | 549 | return false; |
455 | } | 550 | } |
456 | - return false ; | 551 | + return false; |
457 | } | 552 | } |
458 | - | 553 | + |
459 | private List<Occurrence> checkRecommendation5() { | 554 | private List<Occurrence> checkRecommendation5() { |
460 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 555 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
461 | - | ||
462 | - /*Element firstLink = getDocument().getFirstElement("href", Pattern.compile("#.*")); | ||
463 | - | ||
464 | - if(firstLink != null) | ||
465 | - occurrences.add(this.buildOccurrence("1.5", false, firstLink.toString(), firstLink, "4"));*/ | ||
466 | - | 556 | + |
557 | + /* | ||
558 | + * Element firstLink = getDocument().getFirstElement("href", | ||
559 | + * Pattern.compile("#.*")); | ||
560 | + * | ||
561 | + * if(firstLink != null) occurrences.add(this.buildOccurrence("1.5", | ||
562 | + * false, firstLink.toString(), firstLink, "4")); | ||
563 | + */ | ||
564 | + | ||
467 | for (Element link : getDocument().getAllElements("a")) { | 565 | for (Element link : getDocument().getAllElements("a")) { |
468 | String contLink = link.getAttributeValue("href"); | 566 | String contLink = link.getAttributeValue("href"); |
469 | - if(contLink != null && contLink.length() > 1 && contLink.substring(0,1).equals("#")){ | ||
470 | - occurrences.add(this.buildOccurrence("1.5", false, link.toString(), link, "4")); break; | ||
471 | - } | ||
472 | - | 567 | + if (contLink != null && contLink.length() > 1 |
568 | + && contLink.substring(0, 1).equals("#")) { | ||
569 | + occurrences.add(this.buildOccurrence("1.5", false, | ||
570 | + link.toString(), link, "4")); | ||
571 | + break; | ||
572 | + } | ||
573 | + | ||
473 | } | 574 | } |
474 | - | ||
475 | - | ||
476 | - | ||
477 | - | ||
478 | - /*if(firstLink == null){ | ||
479 | - occurrences.add(this.buildOccurrence("1.5", false, getDocument().getFirstElement().toString(), getDocument().getFirstElement(), "4")); | ||
480 | - } | ||
481 | - else if(firstLink.getAttributeValue("href") == null || !firstLink.getAttributeValue("href").contains("#")){ | ||
482 | - occurrences.add(this.buildOccurrence("1.5", false, firstLink.toString(), firstLink, "4")); | ||
483 | - }*/ | ||
484 | - | ||
485 | - | 575 | + |
576 | + /* | ||
577 | + * if(firstLink == null){ occurrences.add(this.buildOccurrence("1.5", | ||
578 | + * false, getDocument().getFirstElement().toString(), | ||
579 | + * getDocument().getFirstElement(), "4")); } else | ||
580 | + * if(firstLink.getAttributeValue("href") == null || | ||
581 | + * !firstLink.getAttributeValue("href").contains("#")){ | ||
582 | + * occurrences.add(this.buildOccurrence("1.5", false, | ||
583 | + * firstLink.toString(), firstLink, "4")); } | ||
584 | + */ | ||
585 | + | ||
486 | boolean existAcessKey = false; | 586 | boolean existAcessKey = false; |
487 | - | 587 | + |
488 | for (Element area : getDocument().getAllElements("area")) { | 588 | for (Element area : getDocument().getAllElements("area")) { |
489 | - if(hasAcessKey(area)) | ||
490 | - existAcessKey = true; | ||
491 | - /*if(!hasAcessKey(area)) | ||
492 | - occurrences.add(this.buildOccurrence("1.5", true, area.toString(), area, "3"));*/ | ||
493 | - } | ||
494 | - | ||
495 | - if(!existAcessKey) | ||
496 | - for (Element button : getDocument().getAllElements("button")) { | ||
497 | - if(hasAcessKey(button)) | ||
498 | - existAcessKey = true; | ||
499 | - /*if(!hasAcessKey(button)) | ||
500 | - occurrences.add(this.buildOccurrence("1.5", true, button.toString(), button, "3"));*/ | ||
501 | - } | ||
502 | - | ||
503 | - if(!existAcessKey) | ||
504 | - for (Element input : getDocument().getAllElements("input")) { | ||
505 | - if(hasAcessKey(input)) | ||
506 | - existAcessKey = true; | ||
507 | - /*if(!hasAcessKey(input)) | ||
508 | - occurrences.add(this.buildOccurrence("1.5", true, input.toString(), input, "3"));*/ | ||
509 | - } | ||
510 | - | ||
511 | - if(!existAcessKey) | ||
512 | - for (Element label : getDocument().getAllElements("label")) { | ||
513 | - if(hasAcessKey(label)) | ||
514 | - existAcessKey = true; | ||
515 | - /*if(!hasAcessKey(label)) | ||
516 | - occurrences.add(this.buildOccurrence("1.5", true, label.toString(), label, "3"));*/ | ||
517 | - } | ||
518 | - | ||
519 | - if(!existAcessKey) | ||
520 | - for (Element legend : getDocument().getAllElements("legend")) { | ||
521 | - if(hasAcessKey(legend)) | ||
522 | - existAcessKey = true; | ||
523 | - /*if(!hasAcessKey(legend)) | ||
524 | - occurrences.add(this.buildOccurrence("1.5", true, legend.toString(), legend, "3"));*/ | ||
525 | - } | ||
526 | - | ||
527 | - if(!existAcessKey) | ||
528 | - for (Element textarea : getDocument().getAllElements("textarea")) { | ||
529 | - if(hasAcessKey(textarea)) | 589 | + if (hasAcessKey(area)) |
530 | existAcessKey = true; | 590 | existAcessKey = true; |
531 | - /*if(!hasAcessKey(textarea)) | ||
532 | - occurrences.add(this.buildOccurrence("1.5", true, textarea.toString(), textarea, "3"));*/ | 591 | + /* |
592 | + * if(!hasAcessKey(area)) | ||
593 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
594 | + * area.toString(), area, "3")); | ||
595 | + */ | ||
533 | } | 596 | } |
534 | - | 597 | + |
598 | + if (!existAcessKey) | ||
599 | + for (Element button : getDocument().getAllElements("button")) { | ||
600 | + if (hasAcessKey(button)) | ||
601 | + existAcessKey = true; | ||
602 | + /* | ||
603 | + * if(!hasAcessKey(button)) | ||
604 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
605 | + * button.toString(), button, "3")); | ||
606 | + */ | ||
607 | + } | ||
608 | + | ||
609 | + if (!existAcessKey) | ||
610 | + for (Element input : getDocument().getAllElements("input")) { | ||
611 | + if (hasAcessKey(input)) | ||
612 | + existAcessKey = true; | ||
613 | + /* | ||
614 | + * if(!hasAcessKey(input)) | ||
615 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
616 | + * input.toString(), input, "3")); | ||
617 | + */ | ||
618 | + } | ||
619 | + | ||
620 | + if (!existAcessKey) | ||
621 | + for (Element label : getDocument().getAllElements("label")) { | ||
622 | + if (hasAcessKey(label)) | ||
623 | + existAcessKey = true; | ||
624 | + /* | ||
625 | + * if(!hasAcessKey(label)) | ||
626 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
627 | + * label.toString(), label, "3")); | ||
628 | + */ | ||
629 | + } | ||
630 | + | ||
631 | + if (!existAcessKey) | ||
632 | + for (Element legend : getDocument().getAllElements("legend")) { | ||
633 | + if (hasAcessKey(legend)) | ||
634 | + existAcessKey = true; | ||
635 | + /* | ||
636 | + * if(!hasAcessKey(legend)) | ||
637 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
638 | + * legend.toString(), legend, "3")); | ||
639 | + */ | ||
640 | + } | ||
641 | + | ||
642 | + if (!existAcessKey) | ||
643 | + for (Element textarea : getDocument().getAllElements("textarea")) { | ||
644 | + if (hasAcessKey(textarea)) | ||
645 | + existAcessKey = true; | ||
646 | + /* | ||
647 | + * if(!hasAcessKey(textarea)) | ||
648 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
649 | + * textarea.toString(), textarea, "3")); | ||
650 | + */ | ||
651 | + } | ||
652 | + | ||
535 | String href; | 653 | String href; |
536 | boolean existAnchor = false; | 654 | boolean existAnchor = false; |
537 | - | ||
538 | - | 655 | + |
539 | for (Element link : getDocument().getAllElements("a")) { | 656 | for (Element link : getDocument().getAllElements("a")) { |
540 | href = link.getAttributeValue("href"); | 657 | href = link.getAttributeValue("href"); |
541 | - | ||
542 | - /*if(href != null && (href.length() > 1 && !href.substring(0,2).equals("?#"))){ | ||
543 | - ///occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "2")); | ||
544 | - if(!(href.length()==1 && href.substring(1).equals("#"))) | ||
545 | - if(href.substring(1).equals("#") && !this.hasLinkSemAncora(href)) | ||
546 | - occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "2")); | ||
547 | - }*/ | ||
548 | - | ||
549 | - if(href != null && href.length() > 1 && !href.substring(0,2).equals("?#")){ | ||
550 | - if(href.substring(0,1).equals("#")) | ||
551 | - if(!this.hasLinkRefAncora(link)) | ||
552 | - occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "2")); | 658 | + |
659 | + /* | ||
660 | + * if(href != null && (href.length() > 1 && | ||
661 | + * !href.substring(0,2).equals("?#"))){ | ||
662 | + * ///occurrences.add(this.buildOccurrence("1.5", true, | ||
663 | + * link.toString(), link, "2")); if(!(href.length()==1 && | ||
664 | + * href.substring(1).equals("#"))) if(href.substring(1).equals("#") | ||
665 | + * && !this.hasLinkSemAncora(href)) | ||
666 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
667 | + * link.toString(), link, "2")); } | ||
668 | + */ | ||
669 | + | ||
670 | + if (href != null && href.length() > 1 | ||
671 | + && !href.substring(0, 2).equals("?#")) { | ||
672 | + if (href.substring(0, 1).equals("#")) | ||
673 | + if (!this.hasLinkRefAncora(link)) | ||
674 | + occurrences.add(this.buildOccurrence("1.5", true, | ||
675 | + link.toString(), link, "2")); | ||
553 | } | 676 | } |
554 | - | ||
555 | - | ||
556 | - | ||
557 | - /*if(href != null && href.contains("#")) | ||
558 | - if(!hasAnchor(href.substring(1))) | ||
559 | - occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "2"));*/ | ||
560 | - /*}else{ | ||
561 | - occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "1")); | ||
562 | - }*/ | ||
563 | - | ||
564 | - //if(href != null && href.contains("#")) | ||
565 | - | ||
566 | - /*if(href != null && href.length() == 1 && href.toString().equals("#")) | ||
567 | - existAnchor = true;*/ | ||
568 | - if(href != null && href.contains("#")) | ||
569 | - existAnchor = true; | ||
570 | - | ||
571 | - if(hasAcessKey(link)) | 677 | + |
678 | + /* | ||
679 | + * if(href != null && href.contains("#")) | ||
680 | + * if(!hasAnchor(href.substring(1))) | ||
681 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
682 | + * link.toString(), link, "2")); | ||
683 | + */ | ||
684 | + /* | ||
685 | + * }else{ occurrences.add(this.buildOccurrence("1.5", true, | ||
686 | + * link.toString(), link, "1")); } | ||
687 | + */ | ||
688 | + | ||
689 | + // if(href != null && href.contains("#")) | ||
690 | + | ||
691 | + /* | ||
692 | + * if(href != null && href.length() == 1 && | ||
693 | + * href.toString().equals("#")) existAnchor = true; | ||
694 | + */ | ||
695 | + if (href != null && href.contains("#")) | ||
696 | + existAnchor = true; | ||
697 | + | ||
698 | + if (hasAcessKey(link)) | ||
572 | existAcessKey = true; | 699 | existAcessKey = true; |
573 | - | ||
574 | - /*if(!hasAcessKey(link)) | ||
575 | - occurrences.add(this.buildOccurrence("1.5", true, link.toString(), link, "3"));*/ | ||
576 | - } | ||
577 | - | ||
578 | - if(!existAnchor) | ||
579 | - occurrences.add(this.buildOccurrence("1.5", true, "Observação - Sem fonte (não foram encontrados âncoras que permitam saltar pelas diferentes seções da página)", getDocument().getFirstElement(), "1")); | ||
580 | - | ||
581 | - if(!existAcessKey) | ||
582 | - occurrences.add(this.buildOccurrence("1.5", true, "Observação - Sem fonte ( não existe(m) accesskey(s) na página)", getDocument().getFirstElement(), "3")); | ||
583 | - | ||
584 | - for (Element elemento : getDocument().getAllElements("accesskey", Pattern.compile(".*"))) { | ||
585 | - if(duplicatedAcessKey(elemento)) | ||
586 | - occurrences.add(this.buildOccurrence("1.5", false, elemento.toString(), elemento,"5")); | ||
587 | - } | ||
588 | - | 700 | + |
701 | + /* | ||
702 | + * if(!hasAcessKey(link)) | ||
703 | + * occurrences.add(this.buildOccurrence("1.5", true, | ||
704 | + * link.toString(), link, "3")); | ||
705 | + */ | ||
706 | + } | ||
707 | + | ||
708 | + if (!existAnchor) | ||
709 | + occurrences | ||
710 | + .add(this | ||
711 | + .buildOccurrence( | ||
712 | + "1.5", | ||
713 | + true, | ||
714 | + "Observação - Sem fonte (não foram encontrados âncoras que permitam saltar pelas diferentes seções da página)", | ||
715 | + getDocument().getFirstElement(), "1")); | ||
716 | + | ||
717 | + if (!existAcessKey) | ||
718 | + occurrences | ||
719 | + .add(this | ||
720 | + .buildOccurrence( | ||
721 | + "1.5", | ||
722 | + true, | ||
723 | + "Observação - Sem fonte ( não existe(m) accesskey(s) na página)", | ||
724 | + getDocument().getFirstElement(), "3")); | ||
725 | + | ||
726 | + for (Element elemento : getDocument().getAllElements("accesskey", | ||
727 | + Pattern.compile(".*"))) { | ||
728 | + if (duplicatedAcessKey(elemento)) | ||
729 | + occurrences.add(this.buildOccurrence("1.5", false, | ||
730 | + elemento.toString(), elemento, "5")); | ||
731 | + } | ||
732 | + | ||
589 | this.oder(occurrences); | 733 | this.oder(occurrences); |
590 | - | 734 | + |
591 | return occurrences; | 735 | return occurrences; |
592 | } | 736 | } |
593 | - | 737 | + |
594 | private boolean hasLinkRefAncora(Element link) { | 738 | private boolean hasLinkRefAncora(Element link) { |
595 | boolean existeAncora = false; | 739 | boolean existeAncora = false; |
596 | String href = link.getAttributeValue("href"); | 740 | String href = link.getAttributeValue("href"); |
597 | String ancora = href.substring(1, href.length()); | 741 | String ancora = href.substring(1, href.length()); |
598 | - | ||
599 | - for (Element a : getDocument().getAllElements("a")){ | ||
600 | - if(a.getAttributeValue("name") != null && a.getAttributeValue("name").equals(ancora)){ | ||
601 | - existeAncora = true; | ||
602 | - } | ||
603 | - } | ||
604 | - | 742 | + |
743 | + for (Element a : getDocument().getAllElements()) { | ||
744 | + if (a.getAttributeValue("id") != null | ||
745 | + && a.getAttributeValue("id").equals(ancora)) { | ||
746 | + existeAncora = true; | ||
747 | + } | ||
748 | + if (a.getAttributeValue("name") != null | ||
749 | + && a.getAttributeValue("name").equals(ancora)) { | ||
750 | + existeAncora = true; | ||
751 | + } | ||
752 | + } | ||
753 | + | ||
605 | return existeAncora; | 754 | return existeAncora; |
606 | } | 755 | } |
607 | - | 756 | + |
608 | private boolean hasAcessKey(Element element) { | 757 | private boolean hasAcessKey(Element element) { |
609 | String acessKey = element.getAttributeValue("accesskey"); | 758 | String acessKey = element.getAttributeValue("accesskey"); |
610 | - | 759 | + |
611 | return StringUtils.isNotBlank(acessKey); | 760 | return StringUtils.isNotBlank(acessKey); |
612 | } | 761 | } |
762 | + | ||
613 | private boolean hasAnchor(String href) { | 763 | private boolean hasAnchor(String href) { |
614 | - | ||
615 | - String id,name; | ||
616 | - | 764 | + |
765 | + String id, name; | ||
766 | + | ||
617 | for (Element element : getDocument().getAllElements()) { | 767 | for (Element element : getDocument().getAllElements()) { |
618 | id = element.getAttributeValue("id"); | 768 | id = element.getAttributeValue("id"); |
619 | name = element.getAttributeValue("name"); | 769 | name = element.getAttributeValue("name"); |
620 | - | ||
621 | - if(href.equals(id) || href.equals(name)) | 770 | + |
771 | + if (href.equals(id) || href.equals(name)) | ||
622 | return true; | 772 | return true; |
623 | } | 773 | } |
624 | - | 774 | + |
625 | return false; | 775 | return false; |
626 | } | 776 | } |
627 | - | ||
628 | - private boolean duplicatedAcessKey(Element element){ | 777 | + |
778 | + private boolean duplicatedAcessKey(Element element) { | ||
629 | String value = element.getAttributeValue("accesskey"); | 779 | String value = element.getAttributeValue("accesskey"); |
630 | - | ||
631 | - for (Element elementToCompare : getDocument().getAllElements("accesskey", Pattern.compile(".*"))) { | 780 | + |
781 | + for (Element elementToCompare : getDocument().getAllElements( | ||
782 | + "accesskey", Pattern.compile(".*"))) { | ||
632 | String acessKey = elementToCompare.getAttributeValue("accesskey"); | 783 | String acessKey = elementToCompare.getAttributeValue("accesskey"); |
633 | - if(acessKey.equals(value) && elementToCompare.getBegin() != element.getBegin()) | 784 | + if (acessKey.equals(value) |
785 | + && elementToCompare.getBegin() != element.getBegin()) | ||
634 | return true; | 786 | return true; |
635 | - | 787 | + |
636 | } | 788 | } |
637 | - | 789 | + |
638 | return false; | 790 | return false; |
639 | } | 791 | } |
640 | - | 792 | + |
641 | public List<Occurrence> checkRecommendation6() { | 793 | public List<Occurrence> checkRecommendation6() { |
642 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 794 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
643 | - | 795 | + |
644 | for (Element table : getDocument().getAllElements("table")) | 796 | for (Element table : getDocument().getAllElements("table")) |
645 | - occurrences.add(this.buildOccurrence("1.6", false, table.getStartTag().toString(), table, "1")); | ||
646 | - | ||
647 | - | 797 | + occurrences.add(this.buildOccurrence("1.6", false, table |
798 | + .getStartTag().toString(), table, "1")); | ||
799 | + | ||
648 | int firstFormRow = 0; | 800 | int firstFormRow = 0; |
649 | - | 801 | + |
650 | List<Integer> linhasOcorrForm = new ArrayList<Integer>(); | 802 | List<Integer> linhasOcorrForm = new ArrayList<Integer>(); |
651 | - | ||
652 | - for (Element table : getDocument().getAllElements("table")){ | ||
653 | - //Element tagsForm = table.getFirstElement("form"); | ||
654 | - | 803 | + |
804 | + for (Element table : getDocument().getAllElements("table")) { | ||
805 | + // Element tagsForm = table.getFirstElement("form"); | ||
806 | + | ||
655 | Element form = table.getContent().getFirstElement("form"); | 807 | Element form = table.getContent().getFirstElement("form"); |
656 | - | ||
657 | - if(form != null){ | ||
658 | - firstFormRow = this.getRow(form); | ||
659 | - if(!linhasOcorrForm.contains(firstFormRow)){ | ||
660 | - occurrences.add(this.buildOccurrence("1.6", true, form.getStartTag().toString(), form, "2")); | ||
661 | - linhasOcorrForm.add(firstFormRow); | ||
662 | - } | 808 | + |
809 | + if (form != null) { | ||
810 | + firstFormRow = this.getRow(form); | ||
811 | + if (!linhasOcorrForm.contains(firstFormRow)) { | ||
812 | + occurrences.add(this.buildOccurrence("1.6", true, form | ||
813 | + .getStartTag().toString(), form, "2")); | ||
814 | + linhasOcorrForm.add(firstFormRow); | ||
815 | + } | ||
663 | } | 816 | } |
664 | - | 817 | + |
665 | } | 818 | } |
666 | - | 819 | + |
667 | return occurrences; | 820 | return occurrences; |
668 | } | 821 | } |
669 | - | ||
670 | - | 822 | + |
671 | public List<Occurrence> checkRecommendation7() { | 823 | public List<Occurrence> checkRecommendation7() { |
672 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 824 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
673 | List<Element> element = getDocument().getAllElements(); | 825 | List<Element> element = getDocument().getAllElements(); |
674 | - | 826 | + |
675 | int pos = 1; | 827 | int pos = 1; |
676 | int end = 0; | 828 | int end = 0; |
677 | int begin = 0; | 829 | int begin = 0; |
678 | Element firstElement = null; | 830 | Element firstElement = null; |
679 | Element secondElement = null; | 831 | Element secondElement = null; |
680 | - for (int i = 0; i < element.size() -1 ; i++) { | 832 | + for (int i = 0; i < element.size() - 1; i++) { |
681 | firstElement = element.get(i); | 833 | firstElement = element.get(i); |
682 | secondElement = element.get(pos); | 834 | secondElement = element.get(pos); |
683 | - if(firstElement.getEndTag() != null && firstElement.getName().equals("a")) | ||
684 | - end = firstElement.getEndTag().getEnd(); | ||
685 | - begin = secondElement.getStartTag().getBegin(); | ||
686 | - if(element.get(i).getName().equals(element.get(pos).getName()) && (end == begin) ){ | ||
687 | - occurrences.add(this.buildOccurrence("1.7", true, element.get(i).toString()+" "+element.get(pos).toString(), element.get(i), "1")); | ||
688 | - } | 835 | + if (firstElement.getEndTag() != null |
836 | + && firstElement.getName().equals("a")) | ||
837 | + end = firstElement.getEndTag().getEnd(); | ||
838 | + begin = secondElement.getStartTag().getBegin(); | ||
839 | + if (element.get(i).getName().equals(element.get(pos).getName()) | ||
840 | + && (end == begin)) { | ||
841 | + occurrences.add(this.buildOccurrence("1.7", true, element | ||
842 | + .get(i).toString() + " " + element.get(pos).toString(), | ||
843 | + element.get(i), "1")); | ||
844 | + } | ||
689 | pos++; | 845 | pos++; |
690 | } | 846 | } |
691 | - | 847 | + |
692 | return occurrences; | 848 | return occurrences; |
693 | } | 849 | } |
694 | - | 850 | + |
695 | public List<Occurrence> checkRecommendation8() { | 851 | public List<Occurrence> checkRecommendation8() { |
696 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 852 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
697 | Element firstElement = this.getDocument().getFirstElement(); | 853 | Element firstElement = this.getDocument().getFirstElement(); |
698 | - | ||
699 | - if(firstElement.toString().equals("<!DOCTYPE html>")){ | ||
700 | - | 854 | + |
855 | + if (firstElement.toString().equals("<!DOCTYPE html>")) { | ||
856 | + | ||
701 | Element header = getDocument().getFirstElement("header"); | 857 | Element header = getDocument().getFirstElement("header"); |
702 | Element nav = getDocument().getFirstElement("nav"); | 858 | Element nav = getDocument().getFirstElement("nav"); |
703 | Element section = getDocument().getFirstElement("section"); | 859 | Element section = getDocument().getFirstElement("section"); |
704 | Element footer = getDocument().getFirstElement("footer"); | 860 | Element footer = getDocument().getFirstElement("footer"); |
705 | - | ||
706 | - if(header == null) | ||
707 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag <HEADER>)", getDocument().getFirstElement(),"1")); | ||
708 | - | ||
709 | - if(nav == null) | ||
710 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag <NAV>)", getDocument().getFirstElement(),"1")); | ||
711 | - | ||
712 | - if(section == null) | ||
713 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag <SECTION>)", getDocument().getFirstElement(),"1")); | ||
714 | - | ||
715 | - if(footer == null) | ||
716 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag <FOOTER>)", getDocument().getFirstElement(),"1")); | ||
717 | - | ||
718 | - }else{ | ||
719 | - | 861 | + |
862 | + if (header == null) | ||
863 | + occurrences | ||
864 | + .add(this | ||
865 | + .buildOccurrence( | ||
866 | + "1.8", | ||
867 | + false, | ||
868 | + "Observação - Sem fonte (Não existe tag <HEADER>)", | ||
869 | + getDocument().getFirstElement(), "1")); | ||
870 | + | ||
871 | + if (nav == null) | ||
872 | + occurrences | ||
873 | + .add(this | ||
874 | + .buildOccurrence( | ||
875 | + "1.8", | ||
876 | + false, | ||
877 | + "Observação - Sem fonte (Não existe tag <NAV>)", | ||
878 | + getDocument().getFirstElement(), "1")); | ||
879 | + | ||
880 | + if (section == null) | ||
881 | + occurrences | ||
882 | + .add(this | ||
883 | + .buildOccurrence( | ||
884 | + "1.8", | ||
885 | + false, | ||
886 | + "Observação - Sem fonte (Não existe tag <SECTION>)", | ||
887 | + getDocument().getFirstElement(), "1")); | ||
888 | + | ||
889 | + if (footer == null) | ||
890 | + occurrences | ||
891 | + .add(this | ||
892 | + .buildOccurrence( | ||
893 | + "1.8", | ||
894 | + false, | ||
895 | + "Observação - Sem fonte (Não existe tag <FOOTER>)", | ||
896 | + getDocument().getFirstElement(), "1")); | ||
897 | + | ||
898 | + } else { | ||
899 | + | ||
720 | boolean hasBanner = false; | 900 | boolean hasBanner = false; |
721 | boolean hasNavigation = false; | 901 | boolean hasNavigation = false; |
722 | boolean hasMain = false; | 902 | boolean hasMain = false; |
723 | - for (Element element : getDocument().getAllElements()){ | 903 | + for (Element element : getDocument().getAllElements()) { |
724 | String role = element.getAttributeValue("role"); | 904 | String role = element.getAttributeValue("role"); |
725 | - | ||
726 | - if(role!=null && "banner".equals(role.toLowerCase())) | 905 | + |
906 | + if (role != null && "banner".equals(role.toLowerCase())) | ||
727 | hasBanner = true; | 907 | hasBanner = true; |
728 | - | ||
729 | - if(role!=null && "navigation".equals(role.toLowerCase())) | 908 | + |
909 | + if (role != null && "navigation".equals(role.toLowerCase())) | ||
730 | hasNavigation = true; | 910 | hasNavigation = true; |
731 | - | ||
732 | - if(role!=null && "main".equals(role.toLowerCase())) | 911 | + |
912 | + if (role != null && "main".equals(role.toLowerCase())) | ||
733 | hasMain = true; | 913 | hasMain = true; |
734 | - | ||
735 | - if(hasBanner && hasNavigation && hasMain) | 914 | + |
915 | + if (hasBanner && hasNavigation && hasMain) | ||
736 | break; | 916 | break; |
737 | } | 917 | } |
738 | - | ||
739 | - if(!hasBanner) | ||
740 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo BANNER)", getDocument().getFirstElement(),"2")); | ||
741 | - | ||
742 | - if(!hasNavigation) | ||
743 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo NAVIGATION)", getDocument().getFirstElement(),"2")); | ||
744 | - | ||
745 | - if(!hasMain) | ||
746 | - occurrences.add(this.buildOccurrence("1.8", false, "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo MAIN)", getDocument().getFirstElement(),"2")); | ||
747 | - | 918 | + |
919 | + if (!hasBanner) | ||
920 | + occurrences | ||
921 | + .add(this | ||
922 | + .buildOccurrence( | ||
923 | + "1.8", | ||
924 | + false, | ||
925 | + "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo BANNER)", | ||
926 | + getDocument().getFirstElement(), "2")); | ||
927 | + | ||
928 | + if (!hasNavigation) | ||
929 | + occurrences | ||
930 | + .add(this | ||
931 | + .buildOccurrence( | ||
932 | + "1.8", | ||
933 | + false, | ||
934 | + "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo NAVIGATION)", | ||
935 | + getDocument().getFirstElement(), "2")); | ||
936 | + | ||
937 | + if (!hasMain) | ||
938 | + occurrences | ||
939 | + .add(this | ||
940 | + .buildOccurrence( | ||
941 | + "1.8", | ||
942 | + false, | ||
943 | + "Observação - Sem fonte (Não existe tag com atributo ROLE e conteúdo MAIN)", | ||
944 | + getDocument().getFirstElement(), "2")); | ||
945 | + | ||
748 | } | 946 | } |
749 | - | 947 | + |
750 | return occurrences; | 948 | return occurrences; |
751 | } | 949 | } |
752 | - | 950 | + |
753 | public List<Occurrence> checkRecommendation9() { | 951 | public List<Occurrence> checkRecommendation9() { |
754 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); | 952 | List<Occurrence> occurrences = new ArrayList<Occurrence>(); |
755 | boolean hasBlankLink = false; | 953 | boolean hasBlankLink = false; |
756 | - | 954 | + |
757 | for (Element link : getDocument().getAllElements("a")) { | 955 | for (Element link : getDocument().getAllElements("a")) { |
758 | - | ||
759 | - if(link.toString().contains("_blank")){ | 956 | + |
957 | + if (link.toString().contains("_blank")) { | ||
760 | hasBlankLink = true; | 958 | hasBlankLink = true; |
761 | - occurrences.add(this.buildOccurrence("1.9", false, link.toString(), link, "1")); | 959 | + occurrences.add(this.buildOccurrence("1.9", false, |
960 | + link.toString(), link, "1")); | ||
762 | } | 961 | } |
763 | } | 962 | } |
764 | - | ||
765 | - /*if(!hasBlankLink) | ||
766 | - occurrences.add(new Occurrence("1.9", false,this.getDocument().getFirstElement().toString(),OccurrenceClassification.MARK));*/ | ||
767 | - | 963 | + |
964 | + /* | ||
965 | + * if(!hasBlankLink) occurrences.add(new Occurrence("1.9", | ||
966 | + * false,this.getDocument | ||
967 | + * ().getFirstElement().toString(),OccurrenceClassification.MARK)); | ||
968 | + */ | ||
969 | + | ||
768 | return occurrences; | 970 | return occurrences; |
769 | } | 971 | } |
770 | - | ||
771 | - private List<Occurrence> oder(List occurrences){ | ||
772 | - //Sorting | 972 | + |
973 | + private List<Occurrence> oder(List occurrences) { | ||
974 | + // Sorting | ||
773 | Collections.sort(occurrences, new Comparator<Occurrence>() { | 975 | Collections.sort(occurrences, new Comparator<Occurrence>() { |
774 | - public int compare(Occurrence occurrence1, Occurrence occurrence2){ | ||
775 | - return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
776 | - } | ||
777 | - }); | 976 | + public int compare(Occurrence occurrence1, Occurrence occurrence2) { |
977 | + return occurrence1.getLine().compareTo(occurrence2.getLine()); | ||
978 | + } | ||
979 | + }); | ||
778 | return occurrences; | 980 | return occurrences; |
779 | } | 981 | } |
780 | - | ||
781 | - private Occurrence buildOccurrence(String code, boolean error, | ||
782 | - String tag, Element element, | ||
783 | - String criterio) { | ||
784 | - return super.buildOccurrence(code, error, tag, element, OccurrenceClassification.MARK,criterio); | 982 | + |
983 | + private Occurrence buildOccurrence(String code, boolean error, String tag, | ||
984 | + Element element, String criterio) { | ||
985 | + return super.buildOccurrence(code, error, tag, element, | ||
986 | + OccurrenceClassification.MARK, criterio); | ||
785 | } | 987 | } |
786 | - | ||
787 | - public int[] getErrorCount(boolean isCss,String url){ | 988 | + |
989 | + public int[] getErrorCount(boolean isCss, String url) { | ||
788 | int errors = 0; | 990 | int errors = 0; |
789 | int warnings = 0; | 991 | int warnings = 0; |
790 | - | ||
791 | - try{ | ||
792 | - if(isCss){ | ||
793 | - String content = WebAgent.from(CSS_VALIDATOR_URL.replace("#{url}", url)).withGetRequest().execute().getContent(); | ||
794 | - Matcher m = Pattern.compile("<m:errorcount>(\\d)*</m:errorcount>",Pattern.MULTILINE).matcher(content); | ||
795 | - if(m.find()) | ||
796 | - errors = Integer.valueOf(m.group(0).replace("<m:errorcount>", "").replace("</m:errorcount>", "")); | ||
797 | - | ||
798 | - m = Pattern.compile("<m:warningcount>(\\d)*</m:warningcount>",Pattern.MULTILINE).matcher(content); | ||
799 | - | ||
800 | - if(m.find()) | ||
801 | - warnings = Integer.valueOf(m.group(0).replace("<m:warningcount>", "").replace("</m:warningcount>", "")); | ||
802 | - | ||
803 | - }else{ | ||
804 | - | ||
805 | - String content = WebAgent.from(HTML_VALIDATOR_URL.replace("#{url}", url)).withGetRequest().execute().getContent(); | 992 | + |
993 | + try { | ||
994 | + if (isCss) { | ||
995 | + String content = WebAgent | ||
996 | + .from(CSS_VALIDATOR_URL.replace("#{url}", url)) | ||
997 | + .withGetRequest().execute().getContent(); | ||
998 | + Matcher m = Pattern.compile( | ||
999 | + "<m:errorcount>(\\d)*</m:errorcount>", | ||
1000 | + Pattern.MULTILINE).matcher(content); | ||
1001 | + if (m.find()) | ||
1002 | + errors = Integer.valueOf(m.group(0) | ||
1003 | + .replace("<m:errorcount>", "") | ||
1004 | + .replace("</m:errorcount>", "")); | ||
1005 | + | ||
1006 | + m = Pattern.compile("<m:warningcount>(\\d)*</m:warningcount>", | ||
1007 | + Pattern.MULTILINE).matcher(content); | ||
1008 | + | ||
1009 | + if (m.find()) | ||
1010 | + warnings = Integer.valueOf(m.group(0) | ||
1011 | + .replace("<m:warningcount>", "") | ||
1012 | + .replace("</m:warningcount>", "")); | ||
1013 | + | ||
1014 | + } else { | ||
1015 | + | ||
1016 | + String content = WebAgent | ||
1017 | + .from(HTML_VALIDATOR_URL.replace("#{url}", url)) | ||
1018 | + .withGetRequest().execute().getContent(); | ||
806 | Gson g = new GsonBuilder().create(); | 1019 | Gson g = new GsonBuilder().create(); |
807 | - HtmlValidation a = g.fromJson(content, HtmlValidation.class); | 1020 | + HtmlValidation a = g.fromJson(content, HtmlValidation.class); |
808 | int[] errorsWarnings = a.getQtdWarningsErros(); | 1021 | int[] errorsWarnings = a.getQtdWarningsErros(); |
809 | errors = errorsWarnings[1]; | 1022 | errors = errorsWarnings[1]; |
810 | warnings = errorsWarnings[0]; | 1023 | warnings = errorsWarnings[0]; |
811 | - | 1024 | + |
812 | } | 1025 | } |
813 | - }catch(Exception e){ | 1026 | + } catch (Exception e) { |
814 | e.printStackTrace(); | 1027 | e.printStackTrace(); |
815 | } | 1028 | } |
816 | - | ||
817 | - return new int[]{errors,warnings}; | 1029 | + |
1030 | + return new int[] { errors, warnings }; | ||
818 | } | 1031 | } |
819 | - | ||
820 | - public OccurrenceClassification type () { return OccurrenceClassification.MARK;} | ||
821 | - | 1032 | + |
1033 | + public OccurrenceClassification type() { | ||
1034 | + return OccurrenceClassification.MARK; | ||
1035 | + } | ||
1036 | + | ||
822 | public class HtmlValidation { | 1037 | public class HtmlValidation { |
823 | 1038 | ||
824 | List<Message> messages = new ArrayList<HtmlValidation.Message>(); | 1039 | List<Message> messages = new ArrayList<HtmlValidation.Message>(); |
825 | - | ||
826 | - | 1040 | + |
827 | public List<Message> getMessages() { | 1041 | public List<Message> getMessages() { |
828 | return messages; | 1042 | return messages; |
829 | } | 1043 | } |
830 | - | 1044 | + |
831 | public void setMessages(List<Message> messages) { | 1045 | public void setMessages(List<Message> messages) { |
832 | this.messages = messages; | 1046 | this.messages = messages; |
833 | } | 1047 | } |
834 | - | ||
835 | - public int[] getQtdWarningsErros(){ | ||
836 | - int warnings=0; | 1048 | + |
1049 | + public int[] getQtdWarningsErros() { | ||
1050 | + int warnings = 0; | ||
837 | int erros = 0; | 1051 | int erros = 0; |
838 | - for(Message message: this.messages ){ | ||
839 | - if(message.isError()) | 1052 | + for (Message message : this.messages) { |
1053 | + if (message.isError()) | ||
840 | erros++; | 1054 | erros++; |
841 | else if (message.isWarning()) | 1055 | else if (message.isWarning()) |
842 | warnings++; | 1056 | warnings++; |
843 | } | 1057 | } |
844 | - | ||
845 | - return new int[]{warnings,erros}; | 1058 | + |
1059 | + return new int[] { warnings, erros }; | ||
846 | } | 1060 | } |
847 | - | ||
848 | - public HtmlValidation(){} | ||
849 | - | ||
850 | - public class Message{ | ||
851 | - | 1061 | + |
1062 | + public HtmlValidation() { | ||
1063 | + } | ||
1064 | + | ||
1065 | + public class Message { | ||
1066 | + | ||
852 | private String type; | 1067 | private String type; |
853 | - | 1068 | + |
854 | private String subType; | 1069 | private String subType; |
855 | - | ||
856 | - public String getType() { return type; } | ||
857 | - | ||
858 | - public void setType(String type) { this.type = type; } | ||
859 | - | ||
860 | - public String getSubType() { return subType; } | ||
861 | - | ||
862 | - public void setSubType(String subType) { this.subType = subType; } | ||
863 | - | ||
864 | - public boolean isWarning(){ return "info".equals(type) && "warning".equals(this.subType); } | ||
865 | - | ||
866 | - public boolean isError(){ return "error".equals(this.type);} | ||
867 | - | 1070 | + |
1071 | + public String getType() { | ||
1072 | + return type; | ||
1073 | + } | ||
1074 | + | ||
1075 | + public void setType(String type) { | ||
1076 | + this.type = type; | ||
1077 | + } | ||
1078 | + | ||
1079 | + public String getSubType() { | ||
1080 | + return subType; | ||
1081 | + } | ||
1082 | + | ||
1083 | + public void setSubType(String subType) { | ||
1084 | + this.subType = subType; | ||
1085 | + } | ||
1086 | + | ||
1087 | + public boolean isWarning() { | ||
1088 | + return "info".equals(type) && "warning".equals(this.subType); | ||
1089 | + } | ||
1090 | + | ||
1091 | + public boolean isError() { | ||
1092 | + return "error".equals(this.type); | ||
1093 | + } | ||
1094 | + | ||
868 | } | 1095 | } |
869 | } | 1096 | } |
870 | - | 1097 | + |
871 | } | 1098 | } |
target/classes/br/com/checker/emag/Occurrence.class
No preview for this file type
target/classes/br/com/checker/emag/OccurrenceClassification.class
No preview for this file type
target/classes/br/com/checker/emag/SummarizedOccurrence$Builder.class
No preview for this file type
target/classes/br/com/checker/emag/SummarizedOccurrence.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$BehaviorEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation10.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation11.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation12.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation13.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation14.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation$EvaluationRecommendation15.class
No preview for this file type
target/classes/br/com/checker/emag/core/BehaviorEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/Checker$OccurrenceKey.class
No preview for this file type
target/classes/br/com/checker/emag/core/Checker.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$ContentEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation16.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation17.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation18.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation19.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation20.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation21.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation22.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation23.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation24.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation25.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation26.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation$EvaluationRecommendation27.class
No preview for this file type
target/classes/br/com/checker/emag/core/ContentEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/Evaluation$EvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/Evaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation38.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation39.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation40.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation41.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation42.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation43.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation44.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$EvaluationRecommendation45.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation$FormEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/FormEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation1.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation2.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation3.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation4.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation5.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation6.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation7.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation8.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$EvaluationRecommendation9.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation$MarkEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/MarkEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$EvaluationRecommendation33.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$EvaluationRecommendation34.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$EvaluationRecommendation35.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$EvaluationRecommendation36.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$EvaluationRecommendation37.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation$MultimediaEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/MultimediaEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$EvaluationRecommendation28.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$EvaluationRecommendation29.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$EvaluationRecommendation30.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$EvaluationRecommendation31.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$EvaluationRecommendation32.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation$PresentationEvaluationBuilder.class
No preview for this file type
target/classes/br/com/checker/emag/core/PresentationEvaluation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$BehaviorRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$ContentRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$FormRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$MarkRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$MultimediaRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation$PresentationRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/core/SpecificRecommendation.class
No preview for this file type
target/classes/br/com/checker/emag/xml/AvaliationReport.class
No preview for this file type
target/classes/br/com/checker/emag/xml/CheckPoint.class
No preview for this file type
target/classes/br/com/checker/emag/xml/Result.class
No preview for this file type
target/test-classes/br/com/checker/emag/BehaviorEvaluationTest.class
No preview for this file type
target/test-classes/br/com/checker/emag/ContentEvaluationTest.class
No preview for this file type
target/test-classes/br/com/checker/emag/FormEvaluationTest.class
No preview for this file type
target/test-classes/br/com/checker/emag/MarkEvaluationTest.class
No preview for this file type
target/test-classes/br/com/checker/emag/MultimediaEvaluationTest.class
No preview for this file type
target/test-classes/br/com/checker/emag/PresentationEvaluationTest.class
No preview for this file type