Commit 3f73b7a09e90c52dced54d376585d89b5bdea7fe
1 parent
dbc1f32c
Exists in
master
WebService para avaliação de url a consimir pelo eselo.
Showing
4 changed files
with
320 additions
and
3 deletions
Show diff stats
src/main/java/br/com/ases/business/AvaliacaoBusiness.java
@@ -17,6 +17,7 @@ import br.com.checker.emag.SummarizedOccurrence; | @@ -17,6 +17,7 @@ import br.com.checker.emag.SummarizedOccurrence; | ||
17 | public interface AvaliacaoBusiness { | 17 | public interface AvaliacaoBusiness { |
18 | Nota obterNota(List<SummarizedOccurrence> occurrences,String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias); | 18 | Nota obterNota(List<SummarizedOccurrence> occurrences,String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias); |
19 | Nota obterNotaEselo(Source html, String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias); | 19 | Nota obterNotaEselo(Source html, String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias); |
20 | + Nota obterNotaEseloSalvandoAvaliacao(Source html, String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias); | ||
20 | Map<OccurrenceKey,Map<String,List<Occurrence>>> retornarCriterios(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao); | 21 | Map<OccurrenceKey,Map<String,List<Occurrence>>> retornarCriterios(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao); |
21 | List<Entry<OccurrenceKey,List<Occurrence>>> retornarCriteriosTeste(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao); | 22 | List<Entry<OccurrenceKey,List<Occurrence>>> retornarCriteriosTeste(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao); |
22 | void initEseloProperties(ServletContext servletContext); | 23 | void initEseloProperties(ServletContext servletContext); |
src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java
@@ -143,6 +143,234 @@ public class AvaliacaoBusinessImpl implements AvaliacaoBusiness { | @@ -143,6 +143,234 @@ public class AvaliacaoBusinessImpl implements AvaliacaoBusiness { | ||
143 | } | 143 | } |
144 | 144 | ||
145 | 145 | ||
146 | + public Nota obterNotaEseloSalvandoAvaliacao(Source documento, String url, List<Entry<OccurrenceKey, List<Occurrence>>> mapaListaOcorrencias) { | ||
147 | + Nota nota = null; | ||
148 | + | ||
149 | + List<String> elementosBuscar; | ||
150 | + List<String> atributosBuscar; | ||
151 | + | ||
152 | + List<RecomendacaoCriterios> lsRecomendacaoCriterios = new ArrayList<RecomendacaoCriterios>(); | ||
153 | + RecomendacaoCriterios recomendacaoAdd; | ||
154 | + | ||
155 | + BufferedReader reader = testeEseloProperties.getListaTesteEselo(); | ||
156 | + String linha = ""; | ||
157 | + String[] chaveValor; | ||
158 | + String recomendacaoProperties = ""; | ||
159 | + String recomendacaoAntiga = ""; // Serve identificar a mudan�a de recomenda��o | ||
160 | + //String recomendacao = ""; | ||
161 | + String criterioProperties = ""; | ||
162 | + //String criterio = ""; | ||
163 | + //String criterioAntido = ""; | ||
164 | + String recomendacaoCriterio[]; | ||
165 | + String tipoTeste = ""; | ||
166 | + String tipoBusca = ""; | ||
167 | + Integer totalLinhas = (documento != null? documento.toString().split("\n").length: 0); | ||
168 | + Integer qtdErrosAvisos = 0; | ||
169 | + Integer countReq = 0; | ||
170 | + Integer countCriterio = 0; | ||
171 | + Integer countChave = 0; | ||
172 | + Integer qtdItens = 0; | ||
173 | + Integer totalErros = 0; | ||
174 | + Integer totalAvisos = 0; | ||
175 | + Boolean isErro; | ||
176 | + //Boolean recomendacaoTemCriterio = false; | ||
177 | + | ||
178 | + try { | ||
179 | + | ||
180 | + WebChecker.PostParams postParams = WebChecker.from(this.eseloProperties.getUrl("urlServicoSalvandoAvaliacao")).withPostRequest(); | ||
181 | + | ||
182 | + // Relatorio de Avaliacao | ||
183 | + postParams.addParam("relatorioAvaliacao.date", new Date().toString()).addParam("relatorioAvaliacao.url", url); | ||
184 | + | ||
185 | + while ((linha = reader.readLine()) != null) { | ||
186 | + | ||
187 | + elementosBuscar = new ArrayList<String>(); | ||
188 | + atributosBuscar = new ArrayList<String>(); | ||
189 | + | ||
190 | + | ||
191 | + //Separa a chave do valor (tipo de teste) | ||
192 | + chaveValor = linha.split("\\="); | ||
193 | + | ||
194 | + //chave do arquivo testeEselo.properties sendo (x.y.z) | ||
195 | + recomendacaoCriterio = chaveValor[0].split("\\."); | ||
196 | + | ||
197 | + //Separa a recomenda��o do crit�rio sendo (x.y) de (x.y.z) | ||
198 | + recomendacaoProperties = recomendacaoCriterio[0].toString() + "." + recomendacaoCriterio[1].toString(); | ||
199 | + | ||
200 | + //Separa a crit�rio da recomenda��o sendo (z) de (x.y.z) | ||
201 | + criterioProperties = recomendacaoCriterio[2]; | ||
202 | + | ||
203 | + | ||
204 | + if (!recomendacaoProperties.equalsIgnoreCase(recomendacaoAntiga) || recomendacaoAntiga.equalsIgnoreCase("")) { | ||
205 | + | ||
206 | + if(lsRecomendacaoCriterios.size() > 0) | ||
207 | + { | ||
208 | + countReq++; | ||
209 | + countCriterio = 0; | ||
210 | + postParams.addParam("relatorioAvaliacao.recomendacoes["+ countReq + "].idRecomendacao", retornaRecomendacaoEselo(recomendacaoAntiga)); | ||
211 | + | ||
212 | + for (RecomendacaoCriterios recCriterio : lsRecomendacaoCriterios) { | ||
213 | + countCriterio++; | ||
214 | + postParams.addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].idCriterio",recCriterio.criterio) | ||
215 | + .addParam("relatorioAvaliacao.recomendacoes["+ countReq +"].criterios["+countCriterio+"].qtdeErros", Integer.toString(recCriterio.qtdErros)) | ||
216 | + .addParam("relatorioAvaliacao.recomendacoes["+ countReq +"].criterios["+countCriterio+"].qtdeItens",Integer.toString(recCriterio.qtdItens)); | ||
217 | + } | ||
218 | + | ||
219 | + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq + "].totalErros", Integer.toString(totalErros)); | ||
220 | + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq + "].totalAvisos", Integer.toString(totalAvisos)); | ||
221 | + | ||
222 | + totalAvisos = 0; | ||
223 | + totalErros = 0; | ||
224 | + lsRecomendacaoCriterios = new ArrayList<RecomendacaoCriterios>(); | ||
225 | + } | ||
226 | + else | ||
227 | + { | ||
228 | + totalAvisos = 0; | ||
229 | + totalErros = 0; | ||
230 | + } | ||
231 | + | ||
232 | + | ||
233 | + | ||
234 | + recomendacaoAntiga = recomendacaoProperties; | ||
235 | + | ||
236 | + } | ||
237 | + | ||
238 | + // Fim adiciona a recomenda��o da lista do properties | ||
239 | + | ||
240 | + | ||
241 | + //Cria lista a ser pesquisada e retorna a quantidade de itens | ||
242 | + tipoTeste = chaveValor[1].toString(); | ||
243 | + tipoBusca = chaveValor[3].toString(); | ||
244 | + isErro = Boolean.parseBoolean(chaveValor[2]); | ||
245 | + | ||
246 | + if(!tipoTeste.equalsIgnoreCase("proporcional")) | ||
247 | + { | ||
248 | + tipoBusca = "startTag"; | ||
249 | + } | ||
250 | + else | ||
251 | + { | ||
252 | + | ||
253 | + if(tipoBusca.equalsIgnoreCase("e")) | ||
254 | + { | ||
255 | + countChave= 0; | ||
256 | + | ||
257 | + for (String chave : chaveValor) { | ||
258 | + if(countChave >= 3) | ||
259 | + { | ||
260 | + elementosBuscar.add(chave); | ||
261 | + } | ||
262 | + countChave++; | ||
263 | + } | ||
264 | + }else if(tipoBusca.equalsIgnoreCase("a")) | ||
265 | + { | ||
266 | + countChave= 0; | ||
267 | + for (String chave : chaveValor) { | ||
268 | + if(countChave >= 3) | ||
269 | + { | ||
270 | + atributosBuscar.add(chave); | ||
271 | + } | ||
272 | + countChave++; | ||
273 | + } | ||
274 | + }else if(tipoBusca.equalsIgnoreCase("ea")) | ||
275 | + { | ||
276 | + countChave= 0; | ||
277 | + for (String chave : chaveValor) { | ||
278 | + if(countChave >= 3) | ||
279 | + { | ||
280 | + if(chave.substring(0,1).equalsIgnoreCase("e")) | ||
281 | + { | ||
282 | + elementosBuscar.add(chave.substring(1,(chave.length()))); | ||
283 | + } | ||
284 | + else if(chave.substring(0,1).equalsIgnoreCase("a")) | ||
285 | + { | ||
286 | + atributosBuscar.add(chave.substring(1,(chave.length()))); | ||
287 | + } | ||
288 | + } | ||
289 | + | ||
290 | + countChave++; | ||
291 | + } | ||
292 | + } | ||
293 | + } | ||
294 | + //Fim Cria lista a ser pesquisada e retorna a quantidade de itens | ||
295 | + | ||
296 | + if(!tipoBusca.equalsIgnoreCase("1") && !tipoTeste.equalsIgnoreCase("decrescente")) | ||
297 | + { | ||
298 | + qtdItens = retornarQuantidadeItens(documento, elementosBuscar, atributosBuscar,tipoBusca); | ||
299 | + }else if(!tipoBusca.equalsIgnoreCase("1") && tipoTeste.equalsIgnoreCase("decrescente")) | ||
300 | + { | ||
301 | + qtdItens = totalLinhas; | ||
302 | + } | ||
303 | + else | ||
304 | + { | ||
305 | + qtdItens = 1; | ||
306 | + } | ||
307 | + | ||
308 | + | ||
309 | + | ||
310 | + qtdErrosAvisos = retornaQuantidadeErrosAvisos(mapaListaOcorrencias, recomendacaoProperties, criterioProperties); | ||
311 | + | ||
312 | + | ||
313 | + if(isErro) | ||
314 | + { | ||
315 | + totalErros = totalErros + qtdErrosAvisos; | ||
316 | + } | ||
317 | + else | ||
318 | + { | ||
319 | + totalAvisos = totalAvisos + qtdErrosAvisos; | ||
320 | + } | ||
321 | + | ||
322 | + recomendacaoAdd = new RecomendacaoCriterios(); | ||
323 | + | ||
324 | + if(qtdItens > 0 || !tipoTeste.equalsIgnoreCase("proporcional")) | ||
325 | + { | ||
326 | + | ||
327 | + recomendacaoAdd.setCriterio(criterioProperties); | ||
328 | + recomendacaoAdd.setQtdErros(qtdErrosAvisos); | ||
329 | + recomendacaoAdd.setQtdItens(qtdItens); | ||
330 | + lsRecomendacaoCriterios.add(recomendacaoAdd); | ||
331 | + } | ||
332 | + | ||
333 | + } | ||
334 | + | ||
335 | + if(lsRecomendacaoCriterios.size() > 0) | ||
336 | + { | ||
337 | + countReq++; | ||
338 | + countCriterio = 0; | ||
339 | + postParams.addParam("relatorioAvaliacao.recomendacoes["+ countReq + "].idRecomendacao", retornaRecomendacaoEselo(recomendacaoAntiga)); | ||
340 | + | ||
341 | + for (RecomendacaoCriterios recCriterio : lsRecomendacaoCriterios) { | ||
342 | + countCriterio++; | ||
343 | + postParams.addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].idCriterio",recCriterio.criterio) | ||
344 | + .addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].qtdeErros", Integer.toString(recCriterio.qtdErros)) | ||
345 | + .addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].qtdeItens",Integer.toString(recCriterio.qtdItens)); | ||
346 | + | ||
347 | + } | ||
348 | + | ||
349 | + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalErros", Integer.toString(totalErros)); | ||
350 | + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalAvisos", Integer.toString(totalAvisos)); | ||
351 | + | ||
352 | + totalAvisos = 0; | ||
353 | + totalErros = 0; | ||
354 | + lsRecomendacaoCriterios = new ArrayList<RecomendacaoCriterios>(); | ||
355 | + | ||
356 | + } | ||
357 | + //postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalErros", Integer.toString(totalErros)); | ||
358 | + //postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalAvisos", Integer.toString(totalAvisos)); | ||
359 | + postParams.addParam("relatorioAvaliacao.qtdeLinhas", Integer.toString(totalLinhas)); | ||
360 | + | ||
361 | + Gson g = new GsonBuilder().create(); | ||
362 | + nota = g.fromJson(postParams.execute().getContent(), Nota.class); | ||
363 | + | ||
364 | + | ||
365 | + } catch (IOException e) { | ||
366 | + | ||
367 | + e.printStackTrace(); | ||
368 | + } | ||
369 | + | ||
370 | + return nota; | ||
371 | + | ||
372 | + } | ||
373 | + | ||
146 | 374 | ||
147 | public Nota obterNotaEselo(Source documento, String url, List<Entry<OccurrenceKey, List<Occurrence>>> mapaListaOcorrencias) { | 375 | public Nota obterNotaEselo(Source documento, String url, List<Entry<OccurrenceKey, List<Occurrence>>> mapaListaOcorrencias) { |
148 | Nota nota = null; | 376 | Nota nota = null; |
src/main/java/br/com/ases/controller/AvaliacaoController.java
@@ -958,7 +958,94 @@ public class AvaliacaoController { | @@ -958,7 +958,94 @@ public class AvaliacaoController { | ||
958 | .setAttribute("mensagem_avaliacao", mensagem_avaliacao); | 958 | .setAttribute("mensagem_avaliacao", mensagem_avaliacao); |
959 | } | 959 | } |
960 | 960 | ||
961 | + @Get("/servico-avaliacao-acessibilidade-salvando") | ||
962 | + @Post("/servico-avaliacao-acessibilidade-salvando") | ||
963 | + public void servicoAvaliacaoAcessibilidadeSalvando(@QueryParam("url") String url, | ||
964 | + String codigoHash) { | ||
965 | + | ||
966 | + Boolean retornoNota = false; | ||
967 | + ErroWs erroWs = new ErroWs(); | ||
968 | + this.dataHoraAvaliacao = (String) DateUtil.dataHoraAtual(); | ||
969 | + | ||
970 | + /* | ||
971 | + WebChecker.PostParams postParams = | ||
972 | + WebChecker.from(this.eseloProperties.getUrl("urlAutenticacaoServico")).withPostRequest(); | ||
973 | + postParams.addParam("codigoHash", codigoHash); | ||
974 | + | ||
975 | + Gson g = new GsonBuilder().create(); | ||
976 | + | ||
977 | + Boolean usuarioAutorizado = g.fromJson(postParams.execute().getContent(), Boolean.class); | ||
978 | +*/ | ||
979 | + try { | ||
980 | + | ||
981 | + Validate validate = new Validate(this.validator); | ||
982 | + | ||
983 | + if (validate.url(url)) { | ||
984 | + | ||
985 | + if (url.startsWith("www")) { | ||
986 | + url = "http://" + url; | ||
987 | + } | ||
988 | + | ||
989 | + | ||
990 | + WebChecker pagina = WebChecker.from(url).withGetRequest().execute(); | ||
991 | + | ||
992 | + int[] errorsWarningsCss = avaliacaoBusiness.getErrorCount(true, url); | ||
993 | + int[] errorsWarningsHtml = avaliacaoBusiness.getErrorCount(false, url); | ||
994 | + | ||
995 | + Checker checker = from(pagina.getContent(), url); | ||
996 | + | ||
997 | + checker.with(marking()); | ||
998 | + checker.with(content()); | ||
999 | + checker.with(presentation()); | ||
1000 | + checker.with(multimedia()); | ||
1001 | + checker.with(form()); | ||
1002 | + checker.with(behavior()); | ||
961 | 1003 | ||
1004 | + Pattern pp = Pattern.compile("(http://www.)?([a-z]*)(.)?"); | ||
1005 | + Matcher mm = pp.matcher(url.toLowerCase().replace("https", "http")); | ||
1006 | + | ||
1007 | + if (mm.find()) { | ||
1008 | + this.tituloSite = ""; | ||
1009 | + } | ||
1010 | + | ||
1011 | + ContentEvaluation conteudo = new ContentEvaluation(checker.getDocument()); | ||
1012 | + | ||
1013 | + this.tituloSite = conteudo.retornarTituloSiteAvaliado(); | ||
1014 | + | ||
1015 | + Nota nota = null; | ||
1016 | + | ||
1017 | + List<Entry<OccurrenceKey, List<Occurrence>>> mapaListaOcorrencias = | ||
1018 | + avaliacaoBusiness.retornarCriteriosTeste(checker.check()); | ||
1019 | + | ||
1020 | + nota = | ||
1021 | + avaliacaoBusiness.obterNotaEseloSalvandoAvaliacao(checker.getDocument(), url, mapaListaOcorrencias); | ||
1022 | + | ||
1023 | + | ||
1024 | + | ||
1025 | + if(nota != null) | ||
1026 | + { | ||
1027 | + retornoNota = true; | ||
1028 | + } | ||
1029 | + | ||
1030 | + | ||
1031 | + | ||
1032 | + } | ||
1033 | + | ||
1034 | + } catch (Exception e) { | ||
1035 | + | ||
1036 | + e.printStackTrace(); | ||
1037 | + | ||
1038 | + erroWs.setUrl(url); | ||
1039 | + erroWs.setDataHora(this.dataHoraAvaliacao); | ||
1040 | + | ||
1041 | + List<String> mensagensErros = new ArrayList<String>(); | ||
1042 | + | ||
1043 | + mensagensErros.add(e.getMessage()); | ||
1044 | + erroWs.setMensagem(mensagensErros); | ||
1045 | + | ||
1046 | + } | ||
1047 | + result.use(Results.json()).withoutRoot().from(retornoNota).serialize(); | ||
1048 | + } | ||
962 | 1049 | ||
963 | @Get("/servico-avaliacao-acessibilidade") | 1050 | @Get("/servico-avaliacao-acessibilidade") |
964 | @Post("/servico-avaliacao-acessibilidade") | 1051 | @Post("/servico-avaliacao-acessibilidade") |
src/main/webapp/WEB-INF/eselo.properties
1 | #url=https://sistemas-treinamento.ifbaiano.edu.br/intg_ases_selo/calcular-nota | 1 | #url=https://sistemas-treinamento.ifbaiano.edu.br/intg_ases_selo/calcular-nota |
2 | -url=http://189.9.137.162:8080/eselo/calcular-nota | ||
3 | -#urlAutenticacaoServico=http://189.9.137.162:8080/eselo//existe_usuario_servico_web | 2 | +#url=http://189.9.137.162:8080/eselo/calcular-nota |
3 | +url=http://localhost:18080/eselo/calcular-nota | ||
4 | +urlServicoSalvandoAvaliacao=http://localhost:18080/eselo/calcular-nota-salvando-avaliacao | ||
4 | urlAutenticacaoServico=http://localhost:18080/eselo/existe_usuario_servico_web | 5 | urlAutenticacaoServico=http://localhost:18080/eselo/existe_usuario_servico_web |
5 | -#url=http://localhost:18080/eselo/calcular-nota | 6 | +#urlAutenticacaoServico=http://localhost:18080/eselo/existe_usuario_servico_web |
6 | 7 | ||
7 | #Esconde a nota caso não esteja usando o ESELO | 8 | #Esconde a nota caso não esteja usando o ESELO |
8 | #Se atribuir o valor "sem_nota" na chave 'sem_nota', não exibirá a nota | 9 | #Se atribuir o valor "sem_nota" na chave 'sem_nota', não exibirá a nota |