From 3f73b7a09e90c52dced54d376585d89b5bdea7fe Mon Sep 17 00:00:00 2001 From: 96409975520 <96409975520@10.209.112.105> Date: Mon, 6 Mar 2017 16:11:07 -0300 Subject: [PATCH] WebService para avaliação de url a consimir pelo eselo. --- src/main/java/br/com/ases/business/AvaliacaoBusiness.java | 1 + src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/br/com/ases/controller/AvaliacaoController.java | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/webapp/WEB-INF/eselo.properties | 7 ++++--- 4 files changed, 320 insertions(+), 3 deletions(-) diff --git a/src/main/java/br/com/ases/business/AvaliacaoBusiness.java b/src/main/java/br/com/ases/business/AvaliacaoBusiness.java index 307229f..f6a2557 100644 --- a/src/main/java/br/com/ases/business/AvaliacaoBusiness.java +++ b/src/main/java/br/com/ases/business/AvaliacaoBusiness.java @@ -17,6 +17,7 @@ import br.com.checker.emag.SummarizedOccurrence; public interface AvaliacaoBusiness { Nota obterNota(List occurrences,String url, List>> mapaListaOcorrencias); Nota obterNotaEselo(Source html, String url, List>> mapaListaOcorrencias); + Nota obterNotaEseloSalvandoAvaliacao(Source html, String url, List>> mapaListaOcorrencias); Map>> retornarCriterios(Map> resultadoAvaliacao); List>> retornarCriteriosTeste(Map> resultadoAvaliacao); void initEseloProperties(ServletContext servletContext); diff --git a/src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java b/src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java index 1896edc..803db00 100644 --- a/src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java +++ b/src/main/java/br/com/ases/business/impl/AvaliacaoBusinessImpl.java @@ -143,6 +143,234 @@ public class AvaliacaoBusinessImpl implements AvaliacaoBusiness { } + public Nota obterNotaEseloSalvandoAvaliacao(Source documento, String url, List>> mapaListaOcorrencias) { + Nota nota = null; + + List elementosBuscar; + List atributosBuscar; + + List lsRecomendacaoCriterios = new ArrayList(); + RecomendacaoCriterios recomendacaoAdd; + + BufferedReader reader = testeEseloProperties.getListaTesteEselo(); + String linha = ""; + String[] chaveValor; + String recomendacaoProperties = ""; + String recomendacaoAntiga = ""; // Serve identificar a mudan�a de recomenda��o + //String recomendacao = ""; + String criterioProperties = ""; + //String criterio = ""; + //String criterioAntido = ""; + String recomendacaoCriterio[]; + String tipoTeste = ""; + String tipoBusca = ""; + Integer totalLinhas = (documento != null? documento.toString().split("\n").length: 0); + Integer qtdErrosAvisos = 0; + Integer countReq = 0; + Integer countCriterio = 0; + Integer countChave = 0; + Integer qtdItens = 0; + Integer totalErros = 0; + Integer totalAvisos = 0; + Boolean isErro; + //Boolean recomendacaoTemCriterio = false; + + try { + + WebChecker.PostParams postParams = WebChecker.from(this.eseloProperties.getUrl("urlServicoSalvandoAvaliacao")).withPostRequest(); + + // Relatorio de Avaliacao + postParams.addParam("relatorioAvaliacao.date", new Date().toString()).addParam("relatorioAvaliacao.url", url); + + while ((linha = reader.readLine()) != null) { + + elementosBuscar = new ArrayList(); + atributosBuscar = new ArrayList(); + + + //Separa a chave do valor (tipo de teste) + chaveValor = linha.split("\\="); + + //chave do arquivo testeEselo.properties sendo (x.y.z) + recomendacaoCriterio = chaveValor[0].split("\\."); + + //Separa a recomenda��o do crit�rio sendo (x.y) de (x.y.z) + recomendacaoProperties = recomendacaoCriterio[0].toString() + "." + recomendacaoCriterio[1].toString(); + + //Separa a crit�rio da recomenda��o sendo (z) de (x.y.z) + criterioProperties = recomendacaoCriterio[2]; + + + if (!recomendacaoProperties.equalsIgnoreCase(recomendacaoAntiga) || recomendacaoAntiga.equalsIgnoreCase("")) { + + if(lsRecomendacaoCriterios.size() > 0) + { + countReq++; + countCriterio = 0; + postParams.addParam("relatorioAvaliacao.recomendacoes["+ countReq + "].idRecomendacao", retornaRecomendacaoEselo(recomendacaoAntiga)); + + for (RecomendacaoCriterios recCriterio : lsRecomendacaoCriterios) { + countCriterio++; + postParams.addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].idCriterio",recCriterio.criterio) + .addParam("relatorioAvaliacao.recomendacoes["+ countReq +"].criterios["+countCriterio+"].qtdeErros", Integer.toString(recCriterio.qtdErros)) + .addParam("relatorioAvaliacao.recomendacoes["+ countReq +"].criterios["+countCriterio+"].qtdeItens",Integer.toString(recCriterio.qtdItens)); + } + + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq + "].totalErros", Integer.toString(totalErros)); + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq + "].totalAvisos", Integer.toString(totalAvisos)); + + totalAvisos = 0; + totalErros = 0; + lsRecomendacaoCriterios = new ArrayList(); + } + else + { + totalAvisos = 0; + totalErros = 0; + } + + + + recomendacaoAntiga = recomendacaoProperties; + + } + + // Fim adiciona a recomenda��o da lista do properties + + + //Cria lista a ser pesquisada e retorna a quantidade de itens + tipoTeste = chaveValor[1].toString(); + tipoBusca = chaveValor[3].toString(); + isErro = Boolean.parseBoolean(chaveValor[2]); + + if(!tipoTeste.equalsIgnoreCase("proporcional")) + { + tipoBusca = "startTag"; + } + else + { + + if(tipoBusca.equalsIgnoreCase("e")) + { + countChave= 0; + + for (String chave : chaveValor) { + if(countChave >= 3) + { + elementosBuscar.add(chave); + } + countChave++; + } + }else if(tipoBusca.equalsIgnoreCase("a")) + { + countChave= 0; + for (String chave : chaveValor) { + if(countChave >= 3) + { + atributosBuscar.add(chave); + } + countChave++; + } + }else if(tipoBusca.equalsIgnoreCase("ea")) + { + countChave= 0; + for (String chave : chaveValor) { + if(countChave >= 3) + { + if(chave.substring(0,1).equalsIgnoreCase("e")) + { + elementosBuscar.add(chave.substring(1,(chave.length()))); + } + else if(chave.substring(0,1).equalsIgnoreCase("a")) + { + atributosBuscar.add(chave.substring(1,(chave.length()))); + } + } + + countChave++; + } + } + } + //Fim Cria lista a ser pesquisada e retorna a quantidade de itens + + if(!tipoBusca.equalsIgnoreCase("1") && !tipoTeste.equalsIgnoreCase("decrescente")) + { + qtdItens = retornarQuantidadeItens(documento, elementosBuscar, atributosBuscar,tipoBusca); + }else if(!tipoBusca.equalsIgnoreCase("1") && tipoTeste.equalsIgnoreCase("decrescente")) + { + qtdItens = totalLinhas; + } + else + { + qtdItens = 1; + } + + + + qtdErrosAvisos = retornaQuantidadeErrosAvisos(mapaListaOcorrencias, recomendacaoProperties, criterioProperties); + + + if(isErro) + { + totalErros = totalErros + qtdErrosAvisos; + } + else + { + totalAvisos = totalAvisos + qtdErrosAvisos; + } + + recomendacaoAdd = new RecomendacaoCriterios(); + + if(qtdItens > 0 || !tipoTeste.equalsIgnoreCase("proporcional")) + { + + recomendacaoAdd.setCriterio(criterioProperties); + recomendacaoAdd.setQtdErros(qtdErrosAvisos); + recomendacaoAdd.setQtdItens(qtdItens); + lsRecomendacaoCriterios.add(recomendacaoAdd); + } + + } + + if(lsRecomendacaoCriterios.size() > 0) + { + countReq++; + countCriterio = 0; + postParams.addParam("relatorioAvaliacao.recomendacoes["+ countReq + "].idRecomendacao", retornaRecomendacaoEselo(recomendacaoAntiga)); + + for (RecomendacaoCriterios recCriterio : lsRecomendacaoCriterios) { + countCriterio++; + postParams.addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].idCriterio",recCriterio.criterio) + .addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].qtdeErros", Integer.toString(recCriterio.qtdErros)) + .addParam("relatorioAvaliacao.recomendacoes["+countReq+"].criterios["+countCriterio+"].qtdeItens",Integer.toString(recCriterio.qtdItens)); + + } + + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalErros", Integer.toString(totalErros)); + postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalAvisos", Integer.toString(totalAvisos)); + + totalAvisos = 0; + totalErros = 0; + lsRecomendacaoCriterios = new ArrayList(); + + } + //postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalErros", Integer.toString(totalErros)); + //postParams.addParam("relatorioAvaliacao.recomendacoes[" + countReq+ "].totalAvisos", Integer.toString(totalAvisos)); + postParams.addParam("relatorioAvaliacao.qtdeLinhas", Integer.toString(totalLinhas)); + + Gson g = new GsonBuilder().create(); + nota = g.fromJson(postParams.execute().getContent(), Nota.class); + + + } catch (IOException e) { + + e.printStackTrace(); + } + + return nota; + + } + public Nota obterNotaEselo(Source documento, String url, List>> mapaListaOcorrencias) { Nota nota = null; diff --git a/src/main/java/br/com/ases/controller/AvaliacaoController.java b/src/main/java/br/com/ases/controller/AvaliacaoController.java index 7ebc835..0464c01 100644 --- a/src/main/java/br/com/ases/controller/AvaliacaoController.java +++ b/src/main/java/br/com/ases/controller/AvaliacaoController.java @@ -958,7 +958,94 @@ public class AvaliacaoController { .setAttribute("mensagem_avaliacao", mensagem_avaliacao); } + @Get("/servico-avaliacao-acessibilidade-salvando") + @Post("/servico-avaliacao-acessibilidade-salvando") + public void servicoAvaliacaoAcessibilidadeSalvando(@QueryParam("url") String url, + String codigoHash) { + + Boolean retornoNota = false; + ErroWs erroWs = new ErroWs(); + this.dataHoraAvaliacao = (String) DateUtil.dataHoraAtual(); + + /* + WebChecker.PostParams postParams = + WebChecker.from(this.eseloProperties.getUrl("urlAutenticacaoServico")).withPostRequest(); + postParams.addParam("codigoHash", codigoHash); + + Gson g = new GsonBuilder().create(); + + Boolean usuarioAutorizado = g.fromJson(postParams.execute().getContent(), Boolean.class); +*/ + try { + + Validate validate = new Validate(this.validator); + + if (validate.url(url)) { + + if (url.startsWith("www")) { + url = "http://" + url; + } + + + WebChecker pagina = WebChecker.from(url).withGetRequest().execute(); + + int[] errorsWarningsCss = avaliacaoBusiness.getErrorCount(true, url); + int[] errorsWarningsHtml = avaliacaoBusiness.getErrorCount(false, url); + + Checker checker = from(pagina.getContent(), url); + + checker.with(marking()); + checker.with(content()); + checker.with(presentation()); + checker.with(multimedia()); + checker.with(form()); + checker.with(behavior()); + Pattern pp = Pattern.compile("(http://www.)?([a-z]*)(.)?"); + Matcher mm = pp.matcher(url.toLowerCase().replace("https", "http")); + + if (mm.find()) { + this.tituloSite = ""; + } + + ContentEvaluation conteudo = new ContentEvaluation(checker.getDocument()); + + this.tituloSite = conteudo.retornarTituloSiteAvaliado(); + + Nota nota = null; + + List>> mapaListaOcorrencias = + avaliacaoBusiness.retornarCriteriosTeste(checker.check()); + + nota = + avaliacaoBusiness.obterNotaEseloSalvandoAvaliacao(checker.getDocument(), url, mapaListaOcorrencias); + + + + if(nota != null) + { + retornoNota = true; + } + + + + } + + } catch (Exception e) { + + e.printStackTrace(); + + erroWs.setUrl(url); + erroWs.setDataHora(this.dataHoraAvaliacao); + + List mensagensErros = new ArrayList(); + + mensagensErros.add(e.getMessage()); + erroWs.setMensagem(mensagensErros); + + } + result.use(Results.json()).withoutRoot().from(retornoNota).serialize(); + } @Get("/servico-avaliacao-acessibilidade") @Post("/servico-avaliacao-acessibilidade") diff --git a/src/main/webapp/WEB-INF/eselo.properties b/src/main/webapp/WEB-INF/eselo.properties index e711644..e8c6ed3 100644 --- a/src/main/webapp/WEB-INF/eselo.properties +++ b/src/main/webapp/WEB-INF/eselo.properties @@ -1,8 +1,9 @@ #url=https://sistemas-treinamento.ifbaiano.edu.br/intg_ases_selo/calcular-nota -url=http://189.9.137.162:8080/eselo/calcular-nota -#urlAutenticacaoServico=http://189.9.137.162:8080/eselo//existe_usuario_servico_web +#url=http://189.9.137.162:8080/eselo/calcular-nota +url=http://localhost:18080/eselo/calcular-nota +urlServicoSalvandoAvaliacao=http://localhost:18080/eselo/calcular-nota-salvando-avaliacao urlAutenticacaoServico=http://localhost:18080/eselo/existe_usuario_servico_web -#url=http://localhost:18080/eselo/calcular-nota +#urlAutenticacaoServico=http://localhost:18080/eselo/existe_usuario_servico_web #Esconde a nota caso não esteja usando o ESELO #Se atribuir o valor "sem_nota" na chave 'sem_nota', não exibirá a nota -- libgit2 0.21.2