From de1c54ffefdc3234fa0af75b6fee38b7982582f1 Mon Sep 17 00:00:00 2001 From: 96409975520 <96409975520@10.209.112.105> Date: Fri, 10 Mar 2017 15:37:44 -0300 Subject: [PATCH] WS para salvar os resultados das avaliações em file system. --- Desenvolvimento/Codificacao/e-Selo/WebContent/static/css/painelAcessibilidade.css | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/Util.java | 8 ++++++++ Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java | 203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliado.java | 34 ++++++++++++++++++++++++++++++++++ Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliada.java | 11 +++++++++++ Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResultadoCriterio.java | 7 ++++--- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResumoAvaliacao.java | 38 ++++++++++++++++++++++++++++++++++++++ Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Sitio.java | 9 --------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Url.java | 20 +++++++------------- 9 files changed, 387 insertions(+), 45 deletions(-) create mode 100644 Desenvolvimento/Codificacao/e-Selo/WebContent/static/css/painelAcessibilidade.css create mode 100644 Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResumoAvaliacao.java diff --git a/Desenvolvimento/Codificacao/e-Selo/WebContent/static/css/painelAcessibilidade.css b/Desenvolvimento/Codificacao/e-Selo/WebContent/static/css/painelAcessibilidade.css new file mode 100644 index 0000000..16c3c43 --- /dev/null +++ b/Desenvolvimento/Codificacao/e-Selo/WebContent/static/css/painelAcessibilidade.css @@ -0,0 +1,102 @@ +body{ + margin: 0; + background: #ebf4f5; + color: #000000; + font-size: 14px; + font-weight: normal; + font-family: "Open Sans", Arial, Helvetica, sans-serif; +} + +.contanner{ + width: 840px; + margin: auto; + border: 0; +} + +#logo{ + margin-top:10%; + font-size: 46px; + font-family: "Open Sans", Arial, Helvetica, sans-serif; +} + +#contato{ + background: #d0e6e8; + height: 25px; + padding-top: 3px; + +} + +#contato a{ + margin-left: 17%; +} + +#emag +{ + width: 150px; + height: 200px; + background: #92d68f; + text-align: center; + float: left; +} + +#testesAutomaticos +{ + width: 150px; + height: 200px; + border-left: 1px solid #000000; + border-right: 1px solid #000000; + background: #97aeec; + text-align: center; + float: left; +} + +#grafico +{ + width: 532px; + height: 200px; + text-align: center; + float: left; +} + +.logoAvaliacao{ + margin-top: 10px; + width: 840px; + height:200px; + background: #ffffff; + border-style: solid; + border-color: #000000; + border-width: 1px; +} +.logoAvaliacao label{ + position: relative; + top: 45%; + + } + +.avaliacao{ + margin-top: 10px; + width: 840px; + background: #ffffff; + border-style: solid; + border-color: #000000; + border-width: 1px; +} + +table { + margin-left: 10px; + border-collapse: collapse; +} + +.table, th, td { +border: 2px solid #000000; +} + +.avaliacao label { + margin-left: 10px; +} + +.avaliacao hr { + + margin-left: 10px; + margin-right: 10px; +} \ No newline at end of file diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/Util.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/Util.java index c696837..386cc31 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/Util.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/Util.java @@ -1,8 +1,11 @@ package br.com.eselo.component; +import java.text.DateFormat; import java.text.Normalizer; +import java.text.SimpleDateFormat; import java.text.Normalizer.Form; import java.text.ParseException; +import java.util.Date; import java.util.Locale; import java.util.regex.Pattern; @@ -31,5 +34,10 @@ public class Util { String slug = NONLATIN.matcher(normalized).replaceAll("_"); return slug.toLowerCase(Locale.ENGLISH); } + + public static String dataHoraAtual() { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return dateFormat.format(new Date()); + } } diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java index 70c4fa8..8d92525 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java @@ -4,9 +4,14 @@ import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; +import java.io.BufferedReader; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.io.PrintWriter; import java.net.MalformedURLException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -15,16 +20,15 @@ import java.util.List; import java.util.Properties; import javax.imageio.ImageIO; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.swing.text.html.HTML; import javax.ws.rs.QueryParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import br.com.eselo.component.WebChecker; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Resource; @@ -35,8 +39,9 @@ import br.com.eselo.component.LeitorXML; import br.com.eselo.component.Mailer; import br.com.eselo.component.URLNormalizer; import br.com.eselo.component.UsuarioWeb; +import br.com.eselo.component.Util; +import br.com.eselo.component.WebChecker; import br.com.eselo.dao.AvaliacaoDAO; -import br.com.eselo.dao.CriterioDAO; import br.com.eselo.dao.ParametroCalculoDAO; import br.com.eselo.dao.ResultadoCriterioDao; import br.com.eselo.dao.UrlDAO; @@ -49,9 +54,12 @@ import br.com.eselo.model.Criterio; import br.com.eselo.model.ParametroCalculo; import br.com.eselo.model.Recomendacao; import br.com.eselo.model.ResultadoCriterio; -import br.com.eselo.model.ResultadoRecomendacao; +import br.com.eselo.model.ResumoAvaliacao; import br.com.eselo.model.Url; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + @Resource public class AvaliacaoController { @@ -63,14 +71,15 @@ public class AvaliacaoController { private final AvaliacaoDAO dao; private final ResultadoCriterioDao daoCriterio;//gibran private final HttpServletRequest request; - + private ServletContext application; + private static final String CAMINHO_SELOS = "eselo.config.avaliacao.caminhoSelos"; private final Properties properties = new Properties(); public AvaliacaoController(Result _result, UrlDAO _daoUrl, ParametroCalculoDAO _paramDao, UsuarioWeb _usuarioWeb, - Validator _validator, HttpServletRequest _request, AvaliacaoDAO _dao, ResultadoCriterioDao _resultadoCriterioDao)//gibran ResultadoCriterioDao _resultadoCriterioDao + Validator _validator, HttpServletRequest _request, AvaliacaoDAO _dao, ResultadoCriterioDao _resultadoCriterioDao, ServletContext application)//gibran ResultadoCriterioDao _resultadoCriterioDao throws IOException { daoUrl = _daoUrl; dao = _dao; @@ -78,7 +87,8 @@ public class AvaliacaoController { result = _result; paramDao = _paramDao; request = _request; - + this.application = application; + String fileName = "config.properties"; InputStream stream = Mailer.class.getResourceAsStream("/" + fileName); Properties propertiesFile = new Properties(); @@ -315,7 +325,7 @@ System.out.println(relatorioAvaliacao); double notaRecomendacao = 0.0; double somatorioNotaTeste = 0.0; double somatorioPesosCriterios = 0.0; -System.out.println(relatorioAvaliacao); + System.out.println(relatorioAvaliacao); /* * Nota da Recomendação = Nota da Avaliação * Peso da Recomendação Nota * da Recomendação = 0,61785 * 3 Nota da Recomendação = 1,8535 @@ -454,7 +464,18 @@ System.out.println(relatorioAvaliacao); } } - + + + + ResumoAvaliacao resumoAvaliacao = new ResumoAvaliacao(); + + resumoAvaliacao.setValor(conformidadeAcessibilidade); + resumoAvaliacao.setUrl(url.getUrl()); + resumoAvaliacao.setDataAvaliacao(Util.dataHoraAtual()); + + salvarhtml(resumoAvaliacao); + + gerarSelo(url, conformidadeAcessibilidade); return conformidadeAcessibilidade; @@ -471,7 +492,7 @@ System.out.println(relatorioAvaliacao); //System.out.println(relatorioAvaliacao); ResultadoAvaliacao resultadoAvaliacao = new ResultadoAvaliacao(); String observacao = "Foi impossivel realizar a avaliação."; - + String urlComProtocolo = relatorioAvaliacao.getUrl(); ParametroCalculo parametroCalculo = paramDao.getLastParametrosCalculoAtivo(); if(parametroCalculo != null){ @@ -494,9 +515,10 @@ System.out.println(relatorioAvaliacao); if (url == null) { url = new Url(); url.setUrl(relatorioAvaliacao.getUrl()); - //daoUrl.save(url); + daoUrl.save(url); } - + url.setUrl(urlComProtocolo); + resultadoAvaliacao.setPath(fullContextPath + "/" + properties.getProperty(CAMINHO_SELOS) + "/" + url.getId().toString() + "/selo.png"); @@ -540,7 +562,7 @@ System.out.println(relatorioAvaliacao); //System.out.println(relatorioAvaliacao); ResultadoAvaliacao resultadoAvaliacao = new ResultadoAvaliacao(); String observacao = "Foi impossivel realizar a avaliação."; - + String urlComProtocolo = relatorioAvaliacao.getUrl(); ParametroCalculo parametroCalculo = paramDao.getLastParametrosCalculoAtivo(); if(parametroCalculo != null){ @@ -563,9 +585,10 @@ System.out.println(relatorioAvaliacao); if (url == null) { url = new Url(); url.setUrl(relatorioAvaliacao.getUrl()); - //daoUrl.save(url); + daoUrl.save(url); } - + url.setUrl(urlComProtocolo); + resultadoAvaliacao.setPath(fullContextPath + "/" + properties.getProperty(CAMINHO_SELOS) + "/" + url.getId().toString() + "/selo.png"); @@ -618,9 +641,10 @@ System.out.println(relatorioAvaliacao); if (url == null) { url = new Url(); url.setUrl(relatorioAvaliacao.getUrl()); - //daoUrl.save(url); + daoUrl.save(url); } - + url.setUrl(relatorioAvaliacao.getUrl()); + avaliacao.setUrl(url); avaliacao = new LeitorXML().lerResultadosXML(relatorioAvaliacao, avaliacao); dao.save(avaliacao); @@ -682,7 +706,7 @@ System.out.println(relatorioAvaliacao); public void avaliarUrl(@QueryParam("url") String url) { WebChecker.PostParams postParams = - WebChecker.from("http://localhost:18080/ases/servico-avaliacao-acessibilidade-salvando").withPostRequest(); + WebChecker.from("http://189.9.137.162:8080/ases/servico-avaliacao-acessibilidade-salvando").withPostRequest(); postParams.addParam("url", url); Gson g = new GsonBuilder().create(); @@ -692,5 +716,144 @@ System.out.println(relatorioAvaliacao); } + @Get("/buscar-avaliacao") + @Post("/buscar-avaliacao") + public void buscarAvaliacao(@QueryParam("url") String url) throws FileNotFoundException + { + + File diretorioJson = new File(this.application.getRealPath("") + "/WEB-INF/arquivosJson/" + url.replace("/", "").replace(".", "") + ".json"); + + + BufferedReader br = new BufferedReader(new FileReader(diretorioJson.toString())); + Gson gson = new Gson(); + + ResumoAvaliacao resumoAvaliacao = gson.fromJson(br, ResumoAvaliacao.class); + + result.use(Results.json()).withoutRoot().from(resumoAvaliacao).recursive().serialize(); + } + + public void salvarAvaliacao(ResumoAvaliacao resumoAvaliacao) + { + File diretorioJson = new File(this.application.getRealPath("") + "/WEB-INF/arquivosJson"); + diretorioJson.mkdir(); + + String nomeArquivo = ""; + + try { + nomeArquivo = URLNormalizer + .normalize(resumoAvaliacao.getUrl()).replace("/", "").replace(".", ""); + } catch (MalformedURLException e1) { + e1.printStackTrace(); + } + + resumoAvaliacao.setUrlResultado(diretorioJson.toString() + "/" + nomeArquivo + ".html"); + + + String json; + Gson gson = new Gson(); + + json = gson.toJson(resumoAvaliacao); + + + FileWriter arq; + PrintWriter gravarArq; + try { + arq = new FileWriter(diretorioJson.toString() + "/" + nomeArquivo + ".json"); + gravarArq = new PrintWriter(arq); + gravarArq.printf(json); + + arq.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + public void salvarhtml(ResumoAvaliacao resumoAvaliacao) + { + + //File diretorioHtml = new File("arquivosHtml"); + File diretorioHtml = new File(this.application.getRealPath("") + "/WEB-INF/arquivosHtml"); + diretorioHtml.mkdir(); + String nomeArquivo; + StringBuffer html = new StringBuffer(); + + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + + html.append("Painel de Acessibilidade Digital do Governo"); + + html.append(""); + + html.append(""); + html.append(""); + + html.append("
"); + html.append("
"); + html.append("Painel de Acessibilidade Digital do Governo"); + html.append("
"); + html.append("
"); + + html.append("
"); + html.append(" Ministério do Planejamento - http://www.planejamento.gov.br (link para um novo sítio)"); + html.append("
"); + + html.append("
"); + html.append("
"); + html.append("
"); + html.append(" "); + html.append("
"); + html.append("
"); + html.append("
"); + + html.append("
"); + html.append(" Gráfico "); + html.append("
"); + html.append("
"); + html.append("
"); + + html.append("

"); + html.append("
"); + html.append("
"); + html.append("
"); + html.append("
"); + html.append("
"); + + + + html.append("
"); + html.append("
"); + html.append(""); + html.append(""); + + + + FileWriter arq; + PrintWriter gravarArq; + try { + nomeArquivo = URLNormalizer + .normalize(resumoAvaliacao.getUrl()).replace("/", "").replace(".", "") + ".html"; + arq = new FileWriter(diretorioHtml + "/"+ nomeArquivo); + gravarArq = new PrintWriter(arq); + gravarArq.printf(html.toString()); + + arq.close(); + + if(diretorioHtml.exists()) + { + salvarAvaliacao(resumoAvaliacao); + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliado.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliado.java index 764f348..6967f50 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliado.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliado.java @@ -1,10 +1,15 @@ package br.com.eselo.integracao; +import br.com.eselo.model.Criterio; + public class CriterioAvaliado { private long idCriterio; private long qtdeErros; private long qtdeItens; + private Criterio criterio; + private Double nu_nota; + public static final int TIPO_VERDADEIRO = 1; public static final int TIPO_FALSO = 2; @@ -35,6 +40,35 @@ public class CriterioAvaliado { this.idCriterio = idCriterio; } + + public Criterio getCriterio() { + return criterio; + } + + public void setCriterio(Criterio criterio) { + this.criterio = criterio; + } + + public void setIdCriterio(long idCriterio) { + this.idCriterio = idCriterio; + } + + public void setQtdeErros(long qtdeErros) { + this.qtdeErros = qtdeErros; + } + + public void setQtdeItens(long qtdeItens) { + this.qtdeItens = qtdeItens; + } + + public Double getNu_nota() { + return nu_nota; + } + + public void setNu_nota(Double nu_nota) { + this.nu_nota = nu_nota; + } + public Double getPercentualErros(){ double resultado; if(this.qtdeItens > 1){ diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliada.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliada.java index bf2d0f5..0dddd03 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliada.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliada.java @@ -9,6 +9,7 @@ public class RecomendacaoAvaliada { private List criterios; private Long totalErros; private Long totalAvisos; + private Double nuNota; public RecomendacaoAvaliada() { this.setCriterios(new ArrayList()); @@ -49,5 +50,15 @@ public class RecomendacaoAvaliada { public void setIdRecomendacao(Long idRecomendacao) { this.idRecomendacao = idRecomendacao; } + + public Double getNuNota() { + return nuNota; + } + + public void setNuNota(Double nuNota) { + this.nuNota = nuNota; + } + + } diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResultadoCriterio.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResultadoCriterio.java index e7a993b..f68c0f6 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResultadoCriterio.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResultadoCriterio.java @@ -8,6 +8,7 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; +import javax.persistence.Transient; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; @@ -21,8 +22,8 @@ public class ResultadoCriterio { @GeneratedValue @Column(name = "id_resultado_criterio", columnDefinition = "serial", unique = true, nullable = false) private Long id; - - @OneToOne(fetch = FetchType.EAGER) + + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="id_criterio") @ForeignKey(name = "sel_result_crit_id_crit_fk") @Fetch(FetchMode.SELECT) @@ -37,7 +38,7 @@ public class ResultadoCriterio { @Column(name = "nu_nota",nullable = false) private Double notaCriterio; - @OneToOne(fetch = FetchType.EAGER) + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="id_resultado_rescomendacao", insertable=true, updatable=true) @ForeignKey(name = "fk_sel_resultado_sel_avaliacao") @Fetch(FetchMode.SELECT) diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResumoAvaliacao.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResumoAvaliacao.java new file mode 100644 index 0000000..2d2b89e --- /dev/null +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ResumoAvaliacao.java @@ -0,0 +1,38 @@ +package br.com.eselo.model; + +import java.sql.Date; + +public class ResumoAvaliacao { + + private Double valor; + private String url; + private String urlResultado; + private String dataAvaliacao; + + public Double getValor() { + return valor; + } + public void setValor(Double valor) { + this.valor = valor; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getUrlResultado() { + return urlResultado; + } + public void setUrlResultado(String urlResultado) { + this.urlResultado = urlResultado; + } + public String getDataAvaliacao() { + return dataAvaliacao; + } + public void setDataAvaliacao(String dataAvaliacao) { + this.dataAvaliacao = dataAvaliacao; + } + + +} diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Sitio.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Sitio.java index 6cf10a1..581baa4 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Sitio.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Sitio.java @@ -30,8 +30,6 @@ public class Sitio { @Column(name = "sitio", nullable = false) private String sitio; - @OneToMany(mappedBy = "sitio", targetEntity = br.com.eselo.model.Url.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private List urls; @Transient @ManyToOne(fetch = FetchType.EAGER) @@ -56,13 +54,6 @@ public class Sitio { this.sitio = sitio; } - public List getUrls() { - return urls; - } - - public void setUrls(List urls) { - this.urls = urls; - } public Dominio getDominio() { return dominio; diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Url.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Url.java index 4a042af..2321821 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Url.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Url.java @@ -26,12 +26,9 @@ public class Url { @Column(name = "url", nullable = false) private String url; - @Transient - @ManyToOne(fetch = FetchType.EAGER) - @JoinColumn(name="id_sitio") - @ForeignKey(name = "fk_sel_url_sel_sitio") - @Fetch(FetchMode.SELECT) - private Sitio sitio; + + @Column(name="id_sitio") + private Integer idSitio; public Long getId() { return id; @@ -49,15 +46,12 @@ public class Url { this.url = url; } - public Sitio getSitio() { - return sitio; + public Integer getIdSitio() { + return idSitio; } - public void setSitio(Sitio sitio) { - this.sitio = sitio; + public void setIdSitio(Integer idSitio) { + this.idSitio = idSitio; } - - - } -- libgit2 0.21.2