Commit 3f73b7a09e90c52dced54d376585d89b5bdea7fe

Authored by 96409975520
1 parent dbc1f32c
Exists in master

WebService para avaliação de url a consimir pelo eselo.

src/main/java/br/com/ases/business/AvaliacaoBusiness.java
... ... @@ -17,6 +17,7 @@ import br.com.checker.emag.SummarizedOccurrence;
17 17 public interface AvaliacaoBusiness {
18 18 Nota obterNota(List<SummarizedOccurrence> occurrences,String url, List<Entry<OccurrenceKey,List<Occurrence>>> mapaListaOcorrencias);
19 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 21 Map<OccurrenceKey,Map<String,List<Occurrence>>> retornarCriterios(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao);
21 22 List<Entry<OccurrenceKey,List<Occurrence>>> retornarCriteriosTeste(Map<OccurrenceClassification,List<Occurrence>> resultadoAvaliacao);
22 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 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 375 public Nota obterNotaEselo(Source documento, String url, List<Entry<OccurrenceKey, List<Occurrence>>> mapaListaOcorrencias) {
148 376 Nota nota = null;
... ...
src/main/java/br/com/ases/controller/AvaliacaoController.java
... ... @@ -958,7 +958,94 @@ public class AvaliacaoController {
958 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 1050 @Get("/servico-avaliacao-acessibilidade")
964 1051 @Post("/servico-avaliacao-acessibilidade")
... ...
src/main/webapp/WEB-INF/eselo.properties
1 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 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 8 #Esconde a nota caso não esteja usando o ESELO
8 9 #Se atribuir o valor "sem_nota" na chave 'sem_nota', não exibirá a nota
... ...