From 64530d25e8ca7a47fb902081337bfc7edb9f3e53 Mon Sep 17 00:00:00 2001 From: mp-96409975520 Date: Fri, 12 Aug 2016 16:28:29 -0300 Subject: [PATCH] criação do método para web service (incompleto) --- src/main/java/br/com/ases/controller/AvaliacaoController.java | 346 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 326 insertions(+), 20 deletions(-) diff --git a/src/main/java/br/com/ases/controller/AvaliacaoController.java b/src/main/java/br/com/ases/controller/AvaliacaoController.java index 24542a2..360a0d8 100644 --- a/src/main/java/br/com/ases/controller/AvaliacaoController.java +++ b/src/main/java/br/com/ases/controller/AvaliacaoController.java @@ -13,7 +13,6 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; -import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -28,6 +27,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletContext; +import javax.ws.rs.QueryParam; import net.sf.jasperreports.engine.JRException; import br.com.ases.business.AvaliacaoBusiness; @@ -36,6 +36,7 @@ import br.com.ases.domain.DetalheAvaliacao; import br.com.ases.domain.DetalheAvaliacao.Criterio; import br.com.ases.domain.OccurrenceKey; import br.com.ases.domain.ResumoAvaliacao; +import br.com.ases.infra.CriterioProperties; import br.com.ases.infra.EseloProperties; import br.com.ases.infra.UtilitiesProperties; import br.com.ases.infra.WebChecker; @@ -57,6 +58,7 @@ import br.com.checker.emag.SummarizedOccurrence; import br.com.checker.emag.core.Checker; import br.com.checker.emag.core.ContentEvaluation; + @Resource public class AvaliacaoController { EseloProperties eseloProperties = null; @@ -80,6 +82,8 @@ public class AvaliacaoController { private ServletContext application; private DetalheAvaliacao detalheAvaliacao; private UtilitiesProperties utilitiesProperties; + private StringBuffer xml; + private CriterioProperties criterioProperties; public AvaliacaoController(Result result, Validator validator, AvaliacaoBusiness avaliacaoBusiness, ServletContext application, @@ -91,6 +95,7 @@ public class AvaliacaoController { this.detalheAvaliacao = detalheAvaliacao; this.avaliacaoBusiness.initEseloProperties(application); this.initEseloProperties(application); + this.criterioProperties = new CriterioProperties(application); this.utilitiesProperties = new UtilitiesProperties(application); } @@ -157,7 +162,7 @@ public class AvaliacaoController { ContentEvaluation conteudo = new ContentEvaluation(checker.getDocument()); this.tituloSite = conteudo.retornarTituloSiteAvaliado(); - + result.include("titulosite", tituloSite); Nota nota = null; @@ -188,7 +193,7 @@ public class AvaliacaoController { VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("notaAvaliacao", nota); // Seta o valor do t�tulo no template - tituloPagina = "Resumo de avalia��o por upload de arquivo - ASES"; + tituloPagina = "Resumo de avaliação por upload de arquivo - ASES"; VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("tituloPagina", tituloPagina); VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("titulosite", tituloSite); @@ -300,7 +305,7 @@ public class AvaliacaoController { VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("notaAvaliacao", nota); // Seta o valor do t�tulo no template - tituloPagina = "Resumo de avalia��o por URI - ASES"; + tituloPagina = "Resumo de avaliação por URI - ASES"; VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("tituloPagina", tituloPagina); VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("titulosite", tituloSite); @@ -319,7 +324,7 @@ public class AvaliacaoController { .getServletContext() .setAttribute("avisosFerramentasHtmlCssW3c", avisosFerramentasHtmlCssW3c); - + } else { // Atribui �ncora para as mensagens de erros dos campos vazios ancoraCampoVazio = "url"; @@ -384,7 +389,7 @@ public class AvaliacaoController { } map.put("pPagina", urlAvaliada != "" ? urlAvaliada - : "C�digo Fonte ou Arquivo"); + : "Código Fonte ou Arquivo"); if (urlAvaliada != "") { Pattern pp = Pattern.compile("(http://www.)?([a-z]*)(.)?"); @@ -410,9 +415,8 @@ public class AvaliacaoController { int totalAvisos = 0; for (ResumoAvaliacao resumo : resumoErrosAvisos) { - map.put(resumo.getTipo() + "_A", resumo.getQuantidadeAvisos()); - map.put(resumo.getTipo() + "_E", resumo.getQuantidadeErros()); - + map.put(resumo.getTipo() + "_A", resumo.getQuantidadeAvisos()); + map.put(resumo.getTipo() + "_E", resumo.getQuantidadeErros()); totalErros += resumo.getQuantidadeErros(); totalAvisos += resumo.getQuantidadeAvisos(); } @@ -530,7 +534,7 @@ public class AvaliacaoController { .setAttribute("notaAvaliacao", nota); // Seta o valor do t�tulo no template - tituloPagina = "Resumo de avalia��o por c�digo fonte - ASES"; + tituloPagina = "Resumo de avaliação por código fonte - ASES"; VRaptorRequestHolder.currentRequest().getServletContext() .setAttribute("tituloPagina", tituloPagina); result.of(this).avaliar(null, mark, content, presentation, @@ -629,6 +633,7 @@ public class AvaliacaoController { List listOcorrencias = this.detalheAvaliacao.get(rn, type).getOcorrencias(); + Collections.sort(listOcorrencias, new Comparator() { public int compare(Occurrence occurrence1, Occurrence occurrence2) { return occurrence1.getLine().compareTo(occurrence2.getLine()); @@ -642,20 +647,13 @@ public class AvaliacaoController { @Path("/detalhes-avaliacao/{rn}/{type}") public void detalhesAvaliacao(OccurrenceKey rn, boolean type) { String url = ""; - tituloPagina = "Detalhes da avalia��o - ASES"; + tituloPagina = "Detalhes da avalição - ASES"; VRaptorRequestHolder.currentRequest().getServletContext() .setAttribute("tituloPagina", tituloPagina); List listOcorrencias = this.detalheAvaliacao.get(rn, type).getOcorrencias(); - // Sorting - /* - * Collections.sort(listOcorrencias, new Comparator() { - * public int compare(Occurrence occurrence1, Occurrence occurrence2){ - * return - * occurrence1.getCriterio().compareTo(occurrence2.getCriterio()); } }); - */ - + // Sorting Collections.sort(listOcorrencias, new Comparator() { public int compare(Occurrence occurrence1, Occurrence occurrence2) { @@ -665,6 +663,7 @@ public class AvaliacaoController { result.include("detalhe", this.detalheAvaliacao.get(rn, type)); result.include("listOcorrencia", listOcorrencias); + result.include("isError", type); if (type) { result.include("qtdOcorrenciasCss", @@ -681,8 +680,9 @@ public class AvaliacaoController { List ob = (List) VRaptorRequestHolder.currentRequest().getServletContext().getAttribute("resultadoAvaliacao"); String recomendacao = ""; + for (SummarizedOccurrence occurrence : ob) { - recomendacao = occurrence.getMapDescription().get(rn.getCode()); + recomendacao = occurrence.getMapDescription().get(rn.getCode()); break; } @@ -810,4 +810,310 @@ public class AvaliacaoController { VRaptorRequestHolder.currentRequest().getServletContext() .setAttribute("mensagem_avaliacao", mensagem_avaliacao); } + + @Get("/servico-avaliacao-acessibilidade") + @Post("/servico-avaliacao-acessibilidade") + public void servicoAvaliacaoAcessibilidade(@QueryParam("url") String url) { + + xml = new StringBuffer(); + + + 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.obterNotaEselo(checker.getDocument(),url, mapaListaOcorrencias); + + this.sumarizarResultasNoResponse(checker.checkSumarized(), result); + + this.detalheAvaliacao.inicializar(avaliacaoBusiness.retornarCriterios(checker.check()),errorsWarningsCss, errorsWarningsHtml); + + + this.dataHoraAvaliacao = (String) DateUtil.dataHoraAtual(); + List checkSumarized = checker.checkSumarized(); + + avisosFerramentasHtmlCssW3c = new ArrayList(); + List resumoErrosAvisos = obterResumoAvaliacao(); + + //pegar os dados e montar o xml + //List listOcorrencias; + //Occurrence detalhe; + OccurrenceKey rn = null; + boolean type = false; + //boolean criterioAdicionar = false; + //String criterioAdicionado = ""; + //String idCriterio = null; + int totalErros = 0; + int totalAvisos = 0; + + xml.append("\n"); + xml.append("\n"); + xml.append("\n"); + xml.append("" + this.tituloSite + "\n"); + xml.append("" + pagina.getContentLength() + "\n"); + xml.append("" + this.dataHoraAvaliacao + "\n"); + xml.append("\n"); + xml.append("\n"); + xml.append("" + nota.getValor() + "\n"); + + for (ResumoAvaliacao resumoAvaliacao : resumoErrosAvisos) { + + + xml.append(""); + xml.append("" + resumoAvaliacao.getTipo().getDescription() + "\n"); + xml.append("" + resumoAvaliacao.getQuantidadeErros() + "\n"); + xml.append("" + resumoAvaliacao.getQuantidadeAvisos() + "\n"); + xml.append("\n"); + + totalErros += resumoAvaliacao.getQuantidadeErros(); + totalAvisos += resumoAvaliacao.getQuantidadeAvisos(); + } + + xml.append(""+ totalErros +"\n"); + xml.append(""+ totalAvisos +"\n"); + xml.append("\n"); + + String recomendacaoCompara = ""; + + for (SummarizedOccurrence avaliacao : checkSumarized) + { + rn = OccurrenceKey.valueOf(avaliacao.getCheckPoint()); + type = avaliacao.isError(); + + //if(!recomendacaoCompara.equalsIgnoreCase(avaliacao.getCheckPoint().toString())) + //{ + if(!recomendacaoCompara.equalsIgnoreCase("")) + { + xml.append("\n"); + } + + xml.append("\n"); + xml.append("" + avaliacao.getCheckPoint() + "\n"); + xml.append("" + type + "\n"); + xml.append("" + avaliacao.getDescription() + "\n"); + xml.append("" + avaliacao.getNumberOfOccurrences() + "\n"); + xml.append("" + avaliacao.getStringLines() + "\n"); + //} + + + + //Critérios iniciam aqui + + criarRelatorioCriterios(rn,type); + + //Critérios terminam aqui + + + recomendacaoCompara = avaliacao.getCheckPoint().toString(); + } + + xml.append("\n"); + + xml.append("\n"); + + } else { + System.out.println("Enviar xml de erro"); + } + result.include("testeWeb", xml); + + } + + public void criarRelatorioCriterios(OccurrenceKey rn, boolean isError) { + + boolean recomendacao1_1_1Adicionada = false; + boolean recomendacao1_1_2Adicionada = false; + + /* Cria um Map de parametros */ + //HashMap map = new HashMap(); + + // List list = this.detalheAvaliacao.get(rn,isError).getCriterios(); + + //List aReq = new ArrayList(); + // List index = new ArrayList(); + + //String[] crit = this.utilitiesProperties.get("notExibCrit").split(" "); + + //for (String c : crit) + //{ + // aReq.add(c.trim()); + //} + + //List listCrit = this.detalheAvaliacao.get(rn, isError).getCriterios(); + + //List list = new ArrayList(); + + /*for (Criterio criterio : listCrit) { + if (aReq.contains(rn.getCode() + "." + criterio.getId())) + { + criterio.setLinhas(new ArrayList()); + } + + if (criterio.getId() != null) + { + list.add(criterio); + } + }*/ + + String codigoFonte = ""; + String criterioCompara = ""; + String numeroCriterio = ""; + + + for (Occurrence occurrence : this.detalheAvaliacao.get(rn, isError).getOcorrencias()) + { + + numeroCriterio = occurrence.getCriterio(); + + //if (!aReq.contains(rn.getCode() + "." + numeroCriterio)) + //{ + + if(!rn.getCode().toString().equalsIgnoreCase("1.1") || !isError) + { + if(rn.getCode().toString().equalsIgnoreCase("1.1") && numeroCriterio.equalsIgnoreCase("7")) + { + codigoFonte = "Serviço de validação de HTML do W3C"; + } + else if(rn.getCode().toString().equalsIgnoreCase("1.1") && numeroCriterio.equalsIgnoreCase("8")) + { + codigoFonte = "Serviço de validação de CSS do W3C"; + } + else + { + codigoFonte = occurrence.getTag().replaceAll("<", "<").replaceAll(">", ">").replaceAll(" ", " "); + } + + if(!criterioCompara.equalsIgnoreCase(occurrence.getCriterio().toString())) + { + if(!criterioCompara.equalsIgnoreCase("")) + { + System.out.println("\n"); + xml.append("\n"); + } + + + xml.append("\n"); + xml.append("" + numeroCriterio + "\n"); + xml.append("" + criterioProperties.getDescricao(rn.getCode() + "." + numeroCriterio) + "\n"); + xml.append("" + occurrence.isError() + "\n"); + xml.append("" + verificaQuantidadeCriterio(rn, isError, numeroCriterio) + "\n"); + xml.append("\n"); + xml.append("" + occurrence.getLine() + "\n"); + xml.append("\n"); + xml.append("\n"); + + + criterioCompara = occurrence.getCriterio(); + }else + { + xml.append("\n"); + xml.append("" + occurrence.getLine() + "\n"); + xml.append("").replaceAll(" ", " ") + "]]>\n"); + xml.append("\n"); + } + + } + else + { + if(numeroCriterio.equalsIgnoreCase("1") && !recomendacao1_1_1Adicionada) + { + if(!criterioCompara.equalsIgnoreCase("")) + { + xml.append("\n"); + } + xml.append("\n"); + xml.append("" + numeroCriterio + "\n"); + xml.append("" + criterioProperties.getDescricao(rn.getCode() + "." + numeroCriterio) + "\n"); + xml.append("" + occurrence.isError() + "\n"); + xml.append("" + verificaQuantidadeCriterio(rn, isError, numeroCriterio) + "\n"); + xml.append("\n"); + xml.append("" + occurrence.getLine() + "\n"); + xml.append("Serviço de validação de HTML do W3C\n"); + xml.append("\n"); + + criterioCompara = occurrence.getCriterio(); + recomendacao1_1_1Adicionada = true; + } + + if(numeroCriterio.equalsIgnoreCase("2") && !recomendacao1_1_2Adicionada) + { + if(!criterioCompara.equalsIgnoreCase("")) + { + System.out.println("\n"); + xml.append("\n"); + } + + xml.append("\n"); + xml.append("" + numeroCriterio + "\n"); + xml.append("" + criterioProperties.getDescricao(rn.getCode() + "." + numeroCriterio) + "\n"); + xml.append("" + occurrence.isError() + "\n"); + xml.append("" + verificaQuantidadeCriterio(rn, isError, numeroCriterio) + "\n"); + xml.append("\n"); + xml.append("" + occurrence.getLine() + "\n"); + xml.append("Serviço de validação de CSS do W3C\n"); + xml.append("\n"); + + criterioCompara = occurrence.getCriterio(); + recomendacao1_1_2Adicionada = true; + } + + } + //} + } + + xml.append("\n"); + + } + + private Integer verificaQuantidadeCriterio(OccurrenceKey rn, boolean isError, String numeroCriterio) + { + Integer quantidadeCriterios = 0; + + for (Occurrence occurrence2 : this.detalheAvaliacao.get(rn, isError).getOcorrencias()) + { + if(occurrence2.getCriterio().toString().equalsIgnoreCase(numeroCriterio)) + { + quantidadeCriterios++; + } + } + + return quantidadeCriterios; + } + } \ No newline at end of file -- libgit2 0.21.2