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 |