Commit c5904152b8ea52377213c275c4ed95948396992c

Authored by magno.oliveira
1 parent fed71cc3
Exists in master

Alterações para novo calculo.

git-svn-id: https://svn.bento.ifrs.edu.br/default/ASES/e-selo@9549 c2178572-b5ca-4887-91d2-9e3a90c7d55b
Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/avaliacao/resultado.jsp
... ... @@ -5,9 +5,6 @@
5 5  
6 6 <tiles:insertTemplate template="/WEB-INF/jsp/template/template.jsp">
7 7 <tiles:putAttribute name="body">
8   - <a href="<c:url value="/avaliacoes" />"><strong><span class="glyphicon glyphicon-check"></span> Avaliações</strong></a>
9   -
10   - <a href="<c:url value="/avaliacao/form" />" class="btn btn-default pull-right"><span class="glyphicon glyphicon-plus"></span> Incluir Avaliação</a>
11 8  
12 9 <br />
13 10  
... ... @@ -20,40 +17,31 @@
20 17 </div>
21 18 </c:if>
22 19  
23   -
24   -
25   -
26 20 <div class="row">
27 21 <div class="col-md-12">
28   - <label for="inputNome">Id Avaliação: </label>${idAval}<br>
29 22 <label for="inputNome">Url Avaliada: </label>${nomeUrl}<br>
30 23 <label for="inputNome">Data da Avaliação: </label>${dataAval}<br>
31 24 </div>
32 25 </div>
33 26  
34   -
35   -
36   -
37 27 <div class="row">
38 28 <div class="col-md-12">
39 29 <div class="table-responsive">
40 30 <table id="usuariosTable" pagesize="10" class="table table-striped table-bordered table-hover table-condensed">
41 31 <thead>
42 32 <tr>
43   - <th>Id Avaliação</th>
44   - <th>Diretriz</th>
45   - <th>Erros Obitidos</th>
46   - <th>Avisos Obitidos</th>
  33 + <th>Número da Recomendação</th>
  34 + <th>Total de Avisos</th>
  35 + <th>Total de Erros</th>
47 36 </tr>
48 37 </thead>
49 38 <tbody>
50 39  
51   - <c:forEach items="${resultadoList}" var="resultado">
  40 + <c:forEach items="${recomendacoesList}" var="recomendacao">
52 41 <tr>
53   - <td>${resultado.avaliacao.id}</td>
54   - <td>${resultado.numDiretriz}</td>
55   - <td>${resultado.numErros}</td>
56   - <td>${resultado.numAvisos}</td>
  42 + <td>${recomendacao.idRecomendacao}</td>
  43 + <td>${recomendacao.totalAvisos}</td>
  44 + <td>${recomendacao.totalErros}</td>
57 45 </tr>
58 46 </c:forEach>
59 47  
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/LeitorXML.java
1 1 package br.com.eselo.component;
2 2  
3   -import java.util.ArrayList;
4   -import java.util.List;
5   -
6 3 import br.com.eselo.integracao.CriterioAvaliavel;
7 4 import br.com.eselo.integracao.RecomendacaoAvaliavel;
8 5 import br.com.eselo.integracao.RelatorioAvaliacao;
9   -import br.com.eselo.model.Avaliacao;
10   -import br.com.eselo.model.Resultado;
11 6  
12 7 import com.google.gson.Gson;
13 8 import com.thoughtworks.xstream.XStream;
  9 +import com.thoughtworks.xstream.converters.basic.DateConverter;
14 10 import com.thoughtworks.xstream.io.xml.DomDriver;
15 11 import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
16 12  
... ... @@ -20,6 +16,9 @@ public class LeitorXML {
20 16  
21 17 XStream xstream = new XStream(new DomDriver("UTF-8", new XmlFriendlyReplacer("__", "_")));
22 18  
  19 + xstream.registerConverter(new DateConverter( "EEE MMM dd HH:mm:ss zzz yyyy", new String[0] ));
  20 +
  21 +
23 22 xstream.alias("relatorio_de_avaliacao", RelatorioAvaliacao.class);
24 23 xstream.alias("recomendacao", RecomendacaoAvaliavel.class);
25 24 xstream.alias("criterio", CriterioAvaliavel.class);
... ... @@ -29,11 +28,11 @@ public class LeitorXML {
29 28 xstream.addImplicitCollection(RelatorioAvaliacao.class, "recomendacoes");
30 29  
31 30 xstream.aliasField("criterio", RecomendacaoAvaliavel.class, "criterio");
32   - xstream.aliasField("identificador", CriterioAvaliavel.class, "identificador");
  31 + xstream.aliasField("id_criterio", CriterioAvaliavel.class, "idCriterio");
33 32 xstream.aliasField("itens_criterio", CriterioAvaliavel.class, "qtdeItens");
34 33 xstream.aliasField("erros_criterio", CriterioAvaliavel.class, "qtdeErros");
35 34  
36   - xstream.aliasField("identificador", RecomendacaoAvaliavel.class, "identificador");
  35 + xstream.aliasField("id_recomendacao", RecomendacaoAvaliavel.class, "idRecomendacao");
37 36 xstream.aliasField("total_erros", RecomendacaoAvaliavel.class, "totalErros");
38 37 xstream.aliasField("total_avisos", RecomendacaoAvaliavel.class, "totalAvisos");
39 38 xstream.aliasField("qtde_linhas", RelatorioAvaliacao.class, "qtdeLinhas");
... ... @@ -41,29 +40,6 @@ public class LeitorXML {
41 40 return (RelatorioAvaliacao) xstream.fromXML(fonte);
42 41 }
43 42  
44   - public List<Resultado> lerResultadosXML(String xml, Avaliacao avaliacao){
45   - List<RecomendacaoAvaliavel> cps = ((RelatorioAvaliacao)lerAvaliacaoXML(xml)).getRecomendacoes();
46   - return lerResultadosXML(cps, avaliacao);
47   - }
48   -
49   - public List<Resultado> lerResultadosXML(List<RecomendacaoAvaliavel> recomendacoes, Avaliacao avaliacao){
50   -
51   - Resultado r;
52   - List<Resultado> resultados = new ArrayList<Resultado>();
53   -
54   - for(RecomendacaoAvaliavel recomendacaoAvaliavel:recomendacoes){
55   - r = new Resultado();
56   - r.setAvaliacao(avaliacao);
57   - //r.setNumDiretriz(recomendacaoAvaliavel.getIdRecomendacao());
58   - //r.setNumAvisos(recomendacaoAvaliavel.getTotalAvisos());
59   - r.setNumErros(recomendacaoAvaliavel.getTotalErros());
60   -
61   - resultados.add(r);
62   - }
63   -
64   - return resultados;
65   - }
66   -
67 43 public String toJson(RelatorioAvaliacao ar){
68 44 return new Gson().toJson(ar);
69 45 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/AvaliacaoController.java
... ... @@ -7,7 +7,6 @@ import java.awt.image.BufferedImage;
7 7 import java.io.File;
8 8 import java.io.IOException;
9 9 import java.text.SimpleDateFormat;
10   -import java.util.ArrayList;
11 10 import java.util.Date;
12 11 import java.util.List;
13 12  
... ... @@ -20,299 +19,190 @@ import br.com.caelum.vraptor.Resource;
20 19 import br.com.caelum.vraptor.Result;
21 20 import br.com.caelum.vraptor.Validator;
22 21 import br.com.caelum.vraptor.view.Results;
23   -import br.com.eselo.annotations.Restrito;
24 22 import br.com.eselo.component.LeitorXML;
25 23 import br.com.eselo.component.UsuarioWeb;
26   -import br.com.eselo.dao.AvaliacaoDAO;
27 24 import br.com.eselo.dao.ParametroAvaliacaoDAO;
28   -import br.com.eselo.dao.ResultadoDAO;
29 25 import br.com.eselo.dao.UrlDAO;
30 26 import br.com.eselo.integracao.RecomendacaoAvaliavel;
31 27 import br.com.eselo.integracao.RelatorioAvaliacao;
32 28 import br.com.eselo.integracao.ResultadoAvaliacao;
33   -import br.com.eselo.model.Avaliacao;
  29 +import br.com.eselo.model.Criterio;
  30 +import br.com.eselo.model.Faixa;
34 31 import br.com.eselo.model.ParametroAvaliacao;
35   -import br.com.eselo.model.Resultado;
  32 +import br.com.eselo.model.Recomendacao;
36 33 import br.com.eselo.model.Url;
37 34  
38 35 @Resource
39 36 public class AvaliacaoController {
40 37  
41   - private final AvaliacaoDAO dao;
42   - private final Avaliacao avaliacao;
43 38 private final Result result;
44 39 private final UrlDAO daoUrl;
45   - private final ResultadoDAO resultDao;
46 40 private final ParametroAvaliacaoDAO paramDao;
47   - private final UsuarioWeb usuarioWeb;
  41 + //private final UsuarioWeb usuarioWeb;
48 42 private final HttpServletRequest request;
49 43  
50   - public AvaliacaoController(AvaliacaoDAO _dao, Avaliacao _avaliacao,
51   - Result _result, UrlDAO _daoUrl, ResultadoDAO _resultDao, ParametroAvaliacaoDAO _paramDao,
  44 + public AvaliacaoController(Result _result, UrlDAO _daoUrl, ParametroAvaliacaoDAO _paramDao,
52 45 UsuarioWeb _usuarioWeb,Validator _validator, HttpServletRequest _request) {
53   - dao = _dao;
54   - avaliacao = _avaliacao;
55 46 daoUrl = _daoUrl;
56 47 result = _result;
57   - resultDao = _resultDao;
58 48 paramDao = _paramDao;
59   - usuarioWeb = _usuarioWeb;
  49 + //usuarioWeb = _usuarioWeb;
60 50 request = _request;
61 51 }
62 52  
63   - @Get("/avaliacoes")
64   - @Restrito(descricao = "AVALIACOES_LISTA")
65   - public List<Avaliacao> index() {
66   - return this.index(1);
67   - }
68   -
69   - @Get("/avaliacoes/{pagina}")
70   - @Restrito(descricao = "AVALIACOES_LISTA")
71   - public List<Avaliacao> index(int pagina) {
72   - List<Avaliacao> resultado = dao.listAll();
73   -
74   - // Paginação
75   - // quantidade de registros por pagina
76   - int exibi = 7;
77   - // Informa a quantidade de registros
78   - int registros = resultado.size();
79   - // Quantidade de paginas na paginação
80   - int totalPag = registros / exibi;
81   - // se houver resto na divisao acima acrescenta uma pagina na paginação
82   - if ((registros - (totalPag * exibi)) > 0)
83   - totalPag++;
84   -
85   - // Calculo do registro inicial e final
86   - int regIni = ((exibi * pagina) - exibi);
87   - int regFim = (regIni + exibi);
88   -
89   - if (regFim > registros)
90   - regFim = registros;
91   -
92   - // fim paginação
93   -
94   - List<Avaliacao> paginacao = new ArrayList<Avaliacao>();
95   -
96   - for (int i = regIni; i < regFim; i++) {
97   - paginacao.add(resultado.get(i));
98   - }
99   -
100   - result.include("paginas", totalPag);
101   - result.include("registros", registros);
102   - result.include("regInic", ++regIni);
103   - result.include("regFim", regFim);
104   -
105   - return paginacao;
106   - }
107   -
108   - @Post("/avaliacoes/pesquisa")
109   - @Restrito(descricao = "AVALIACOES_LISTA")
110   - public List<Avaliacao> lista(String nUrl, int paginacao) {
111   - result.include("paginacao", paginacao);
112   - result.include("nUrl", nUrl);
113   - return dao.listFiltro(nUrl, usuarioWeb.getUsuario().getId());
114   - }
115   -
116 53 public void form() {
117 54  
118 55 }
119 56  
120   - @Get("/avaliacoes/avalia/{idUrl}")
121   - @Restrito(descricao = "AVALIACOES_AVALIACAO")
122   - public void avaliacao(Long idUrl){
123   -
124   - java.sql.Timestamp data = new java.sql.Timestamp(new java.util.Date().getTime());
125   -
126   - Url dadosUrl = (Url) this.daoUrl.load(idUrl);
127   -
128   - Long idParametro = this.paramDao.getMaxId();
129   -
130   - ParametroAvaliacao dadosParam = this.paramDao.load(idParametro);
131   - dadosParam.setId(idParametro);
132   -
133   - dadosUrl.setId(idUrl);
134   -
135   - this.avaliacao.setUrl(dadosUrl);
136   - this.avaliacao.setParametroAvaliacao(dadosParam);
137   - this.avaliacao.setDataAvaliacao(data);
138   - dao.save(this.avaliacao);
139   - Long idAvaliacao = this.avaliacao.getId();
140   -
141   - result.redirectTo(AvaliacaoController.class).resultado(idAvaliacao);
142   - }
143   -
144   - @Get("/avaliacoes/resultado/{idAval}")
145   - public List<Resultado> resultado(Long idAval) {
146   -
147   - Avaliacao aval = dao.getAvaliacao(idAval);
  57 + @Get("/avaliar/{url}")
  58 + public ResultadoAvaliacao resultado(String url) {
148 59  
149 60 //Obtendo um xml de teste
150   - String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
151   - "<relatorio_de_avaliacao>"+
152   - " <url>www.bol.com.br</url>"+
153   - " <data>2014-04-24 10:07:02.447 GMT-03:00</data>"+
154   - " <recomendacao>"+
155   - " <criterio>"+
156   - " <descricao>51</descricao>"+
157   - " <qtde_erros>1</qtde_erros>"+
158   - " </criterio>"+
159   - " <identificador>1</identificador>"+
160   - " <total_erros>11</total_erros>"+
161   - " <total_avisos>50</total_avisos>"+
162   - " </recomendacao>" +
163   - " <recomendacao>"+
164   - " <criterio>"+
165   - " <descricao>31</descricao>"+
166   - " <qtde_erros>2</qtde_erros>"+
167   - " </criterio>"+
168   - " <identificador>2</identificador>"+
169   - " <total_erros>13</total_erros>"+
170   - " <total_avisos>30</total_avisos>"+
171   - " </recomendacao>" +
172   - "</relatorio_de_avaliacao>";
  61 + String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
  62 + "<relatorio_de_avaliacao>"+
  63 + " <url>www.teste.com.br</url>"+
  64 + " <data>Sun Jun 29 11:17:22 GMT-03:00 2014</data>"+
  65 + " <recomendacao>"+
  66 + " <id_recomendacao>1</id_recomendacao>"+
  67 + " <criterio>"+
  68 + " <id_criterio>1</id_criterio>"+
  69 + " <erros_criterio>13</erros_criterio>"+
  70 + " <itens_criterio>100</itens_criterio>"+
  71 + " </criterio>"+
  72 + " <total_erros>12</total_erros>"+
  73 + " <total_avisos>10</total_avisos>"+
  74 + " </recomendacao>"+
  75 + " <qtde_linhas>1000</qtde_linhas>"+
  76 + "</relatorio_de_avaliacao>";
173 77  
174 78 //Receber o xml
175   - List<Resultado> resultadosXML = new LeitorXML().lerResultadosXML(xml, aval);
176   -
177   - //obter os resultados
178   - List<Resultado> resultadosBD;
179   - ResultadoDAO rdao = new ResultadoDAO(dao.getSession());
180   - resultadosBD = rdao.listResultado(idAval);
181   -
182   - for(Resultado rxml:resultadosXML){
183   - int check=0;
184   - for(Resultado rbd:resultadosBD){
185   - if(rxml.getCriterio().equals(rbd.getCriterio()) && rxml.getAvaliacao().getId().equals(idAval)){
186   - check = check+1;
187   - }
188   - }
189   - if(check ==0 ){
190   - rdao.save(rxml);
191   - System.out.println("Salvei resultado da Diretriz "+rxml.getCriterio());
192   - }else{
193   - System.err.println("Nada salvo para Diretriz "+rxml.getCriterio());
194   - }
195   - }
  79 + RelatorioAvaliacao relatorioAvaliacao = new LeitorXML().lerAvaliacaoXML(xml);
196 80  
197 81 //Avaliar
198   - String mensagem ="Avaliação realizada com sucesso. [Nota "+avaliar(idAval)+"]";
199   - java.util.Date dataAval = aval.getDataAvaliacao();
  82 + String mensagem ="Avaliação realizada com sucesso. [Nota "+avaliar(relatorioAvaliacao)+"]";
200 83 result.include("mensagem", mensagem);
201   - result.include("idAval", aval.getId());
202   - result.include("nomeUrl", aval.getUrl().getUrl());
203   - result.include("dataAval", dataAval);
204   - return resultDao.listResultado(idAval);
  84 + //result.include("nomeUrl", relatorioAvaliacao.getUrl());
  85 + //result.include("dataAval", relatorioAvaliacao.getDate());
  86 +
  87 + //teste
  88 + result.include("recomendacoesList", relatorioAvaliacao.getRecomendacoes());
  89 + result.include("dataAval", new Date().toString());
  90 + result.include("nomeUrl", url);
  91 +
  92 + return new ResultadoAvaliacao();
205 93 }
206 94  
207   - private Double avaliar(long idAvaliacao){
208   - Double nota=0.0;
209   - Avaliacao avaliacao = new AvaliacaoDAO(dao.getSession()).getAvaliacao(idAvaliacao);
210   - List<RecomendacaoAvaliavel> recomendacoesValidas;
211   - List<Resultado> resultadosObtidos;
212   - int somaDosPesos=0;
  95 + private Double avaliar(RelatorioAvaliacao relatorioAvaliacao){
  96 +
  97 + List<Recomendacao> recomendacoesValidas;
  98 + List<RecomendacaoAvaliavel> recomendacoesAvaliadas;
  99 + double somaPesosRecomendacoes=0.0;
  100 + double somatorioPesosCriterios=0.0;
  101 +
  102 + /*
  103 + Nota da Avaliação = (somatório da Nota Teste / somatório do peso)
  104 + Nota da Avaliação = 2,025 + 2,3 / 3 + 4
  105 + Nota da Avaliação = 4,325 / 7
  106 + Nota da Avaliação = 0,61785
  107 + */
  108 + double somatorioNotaTeste=0.0;
  109 +
  110 + /*Nota da Recomendação = Nota da Avaliação * Peso da Recomendação
  111 + Nota da Recomendação = 0,61785 * 3
  112 + Nota da Recomendação = 1,8535
  113 + */
  114 + double somatorioNotaRecomendacoes=0.0;
  115 +
  116 + /*Calculo da Conformidade Acessibilidade
  117 + Conformidade Acessibilidade = somatório das notas das recomendações (NR) / somatório dos pesos das recomendações (PR)
  118 + Conformidade Acessibilidade = NR1 + NR2 + NR3 + NR22 / PR1 + PR2 + PR3 + PR22
  119 + Conformidade Acessibilidade = 1,10625 + 0,5 + 0,8 + 1,8535 / 3 + 1 + 2 + 3
  120 + Conformidade Acessibilidade = 4,25975 / 9
  121 + Conformidade Acessibilidade = 0,4733 ==> 47,33 %
  122 + */
  123 + double conformidadeAcessibilidade=0.0;
213 124  
214 125  
215 126 //obter os resultados
216   - resultadosObtidos = new ResultadoDAO(dao.getSession()).listResultado(idAvaliacao);
217   -/*
218   - //obter as diretrizes e níveis de conformidade
219   - recomendacoesValidas = new RecomendacaoDAO(dao.getSession()).getByParametroAvaliacao(avaliacao.getParametroAvaliacao());
  127 + recomendacoesAvaliadas = relatorioAvaliacao.getRecomendacoes();
220 128  
221   - //Comparando
222   - /*
223   - for (Recomendacao recomendacao: recomendacoesValidas){
224   - for (Resultado resultado : resultadosObtidos) {
225   - if(resultado.getNumDiretriz().equals(recomendacao.getIdentificador())){
226   - List<Faixa> conformidades = new FaixaDAO(dao.getSession()).getByDiretriz(recomendacao);
227   - for (Faixa conformidade: conformidades){
228   - if (resultado.getNumErros() >= conformidade.getFaixaInicio() && resultado.getNumErros() <= conformidade.getFaixaFim()){
229   - nota = nota+(conformidade.getPercentualConformidade()*recomendacao.getPeso());
230   - somaDosPesos = somaDosPesos+recomendacao.getPeso();
  129 +
  130 + ParametroAvaliacao parametroAvaliacao = paramDao.getLastParametrosAvaliacao();
  131 +
  132 + //obter as diretrizes e níveis de conformidade
  133 + recomendacoesValidas = parametroAvaliacao.getRecomendacoes();
  134 +
  135 + //Lendo e Comparando os resultados com o Parametro de Avaliacao
  136 + for(RecomendacaoAvaliavel recomendacaoAvaliavel: recomendacoesAvaliadas){
  137 + for (Recomendacao recomendacao: recomendacoesValidas){
  138 + if(recomendacaoAvaliavel.getIdRecomendacao().equals(recomendacao.getNumeroRecomendacao())){
  139 + somaPesosRecomendacoes = somaPesosRecomendacoes + recomendacao.getPeso();
  140 + for(Criterio criterio: recomendacao.getCriterios()){
  141 + if(recomendacaoAvaliavel.getCriterio().getIdCriterio().equals(criterio.getNumeroCriterio())){
  142 + for(Faixa faixa: criterio.getFaixas()){
  143 + if(
  144 + (recomendacaoAvaliavel.getCriterio().getPercentualErros() >=faixa.getFaixaInicio())
  145 + &&
  146 + (recomendacaoAvaliavel.getCriterio().getPercentualErros() >=faixa.getFaixaFim())
  147 + ){
  148 + somatorioNotaTeste = (criterio.getPeso() * faixa.getPercentualConformidade())+somatorioNotaTeste;
  149 + somatorioPesosCriterios = criterio.getPeso() + somatorioPesosCriterios;
  150 + }
  151 + }
231 152 }
232 153 }
233 154 }
234 155 }
235 156 }
236   - */
  157 +
237 158  
238 159  
239   - nota = 100*(nota/somaDosPesos);
  160 + conformidadeAcessibilidade = 100*(somatorioNotaRecomendacoes/somaPesosRecomendacoes);
240 161  
241   - ResultadoAvaliacao ra = new ResultadoAvaliacao();
242   - ra.setData(new Date());
243   - ra.setUrl(avaliacao.getUrl().getUrl());
244   - ra.setNota(nota);
  162 + ResultadoAvaliacao resultadoAvaliacao = new ResultadoAvaliacao();
  163 + resultadoAvaliacao.setDataSolicitacao(relatorioAvaliacao.getDate());
  164 + resultadoAvaliacao.setDataResultado(new Date());
  165 + resultadoAvaliacao.setUrl(relatorioAvaliacao.getUrl());
  166 + resultadoAvaliacao.setNota(conformidadeAcessibilidade);
245 167  
246   - return nota;
  168 + return conformidadeAcessibilidade;
247 169 }
248 170  
249   - @Get("/avaliar")
250   - public void avaliarURL(String url){
251   -
252   - Url site = new UrlDAO(dao.getSession()).getStringUrl(url);
253   - Long idAval = dao.getAvaliacaoByURL(site);
254   -
255   - result.redirectTo(AvaliacaoController.class).resultado(idAval);
256   - }
257   -
258 171 @Post("/calcular-nota")
259   - public void calcularNota(RelatorioAvaliacao avaliationReport) {
260   - ResultadoAvaliacao ra = new ResultadoAvaliacao();
261   -
262   - Long idAval=null;
263   - Url url = new Url();
264   - List<RecomendacaoAvaliavel> recomendacoes;
  172 + public void calcularNota(RelatorioAvaliacao relatorioAvaliacao) {
  173 + ResultadoAvaliacao resultadoAvaliacao = new ResultadoAvaliacao();
265 174  
266   - if (avaliationReport.getRecomendacoes() != null && avaliationReport.getDate() != null && avaliationReport.getUrl() != null) {
267   - url.setUrl(avaliationReport.getUrl());
268   - daoUrl.save(url);
269   -
270   - recomendacoes = avaliationReport.getRecomendacoes();
271   -
272   - ParametroAvaliacao parametroAvaliacao = new ParametroAvaliacaoDAO(dao.getSession()).getLastParametrosAvaliacao();
273   -
274   - Avaliacao avaliacao = new Avaliacao();
275   - avaliacao.setDataAvaliacao(avaliationReport.getDate());
276   - avaliacao.setUrl(url);
277   - avaliacao.setParametroAvaliacao(parametroAvaliacao);
278   -
279   - dao.save(avaliacao);
280   - idAval =avaliacao.getId();
281   -
282   - LeitorXML leitor = new LeitorXML();
283   - List<Resultado> resultadosNovaAvaliacao = leitor.lerResultadosXML(recomendacoes, avaliacao);
284   -
285   - ResultadoDAO rdao = new ResultadoDAO(dao.getSession());
286   - List<Resultado> resultadosCadastrados = rdao.listResultado(idAval);
287   -
288   - for(Resultado rNovaAvaliacao:resultadosNovaAvaliacao) {
289   - int check=0;
290   - for(Resultado rbd:resultadosCadastrados) {
291   - if(rNovaAvaliacao.getCriterio().equals(rbd.getCriterio()) && rNovaAvaliacao.getAvaliacao().getId().equals(idAval)) {
292   - check = check+1;
293   - }
294   - }
295   - if (check ==0 ) {
296   - rdao.save(rNovaAvaliacao);
297   - System.out.println("Salvei resultado da Diretriz "+rNovaAvaliacao.getCriterio());
298   - } else {
299   - System.err.println("Nada salvo para Diretriz "+rNovaAvaliacao.getCriterio());
300   - }
  175 + if (relatorioAvaliacao.getRecomendacoes().size() > 0 && relatorioAvaliacao.getDate() != null && relatorioAvaliacao.getUrl() != null) {
  176 +
  177 + Url url = daoUrl.getStringUrl(relatorioAvaliacao.getUrl());
  178 + if(url.getUrl()==null){
  179 + url = new Url();
  180 + url.setUrl(relatorioAvaliacao.getUrl());
  181 + daoUrl.save(url);
301 182 }
302 183  
303   - ra.setNota(avaliar(idAval));
304   - ra.setUrl(url.getUrl());
305   - ra.setData(new Date());
306   - ra.setObservacoes("Avaliação realizada com sucesso!");
307   -
  184 + resultadoAvaliacao.setUrl(url.getUrl());
  185 + resultadoAvaliacao.setDataResultado(new Date());
  186 + resultadoAvaliacao.setDataSolicitacao(relatorioAvaliacao.getDate());
  187 +
  188 + double nota = avaliar(relatorioAvaliacao);
  189 + if(nota>0){
  190 + resultadoAvaliacao.setNota(nota);
  191 + resultadoAvaliacao.setObservacoes("Avaliação realizada com sucesso!");
  192 + } else {
  193 + resultadoAvaliacao.setNota(null);
  194 + resultadoAvaliacao.setObservacoes("Foi impossivel realizar a avaliação.");
  195 + }
  196 +
308 197 } else {
309   - ra.setNota(null);
310   - ra.setUrl(url.getUrl());
311   - ra.setData(avaliationReport.getDate());
312   - ra.setObservacoes("Foi impossivel realizar a avaliação.");
  198 + resultadoAvaliacao.setNota(null);
  199 + resultadoAvaliacao.setUrl(relatorioAvaliacao.getUrl());
  200 + resultadoAvaliacao.setDataResultado(new Date());
  201 + resultadoAvaliacao.setDataSolicitacao(relatorioAvaliacao.getDate());
  202 + resultadoAvaliacao.setObservacoes("Foi impossivel realizar a avaliação.");
313 203 }
314 204  
315   - result.use(Results.json()).withoutRoot().from(ra).serialize();
  205 + result.use(Results.json()).withoutRoot().from(resultadoAvaliacao).serialize();
316 206 }
317 207  
318 208 @Get("/avaliacoes/selo.png")
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java
... ... @@ -104,8 +104,8 @@ public class FaixaController {
104 104  
105 105 result.include("mensagem",
106 106 Messages.getString("conformidades.mensagem.salva"));
107   - result.redirectTo(CriteriosController.class).form(
108   - criterio.getRecomendacao().getParametroAvaliacao().getId(), criterio.getId());
  107 + //TODO
  108 + //result.redirectTo(CriteriosController.class).form(criterio.getRecomendacao().getParametroAvaliacao().getId(), criterio.getId());
109 109 }
110 110  
111 111 @Put("/conformidades")
... ... @@ -236,7 +236,7 @@ public class FaixaController {
236 236 faixa.setCriterio(novaRecomendacao);
237 237 dao.save(faixa);
238 238 }
239   -*/
  239 +
240 240  
241 241 for (Faixa conformidadeSalva : recomendacaoCadastrada
242 242 .getConformidades()) {
... ... @@ -247,7 +247,7 @@ public class FaixaController {
247 247 novaFaixa.setFaixaFim(conformidadeSalva.getFaixaFim());
248 248 dao.save(novaFaixa);
249 249 }
250   - */
  250 +*/
251 251 }
252 252 }
253 253  
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroAvaliacaoController.java
... ... @@ -253,6 +253,7 @@ public class ParametroAvaliacaoController {
253 253 // Salva as diretrizes para nova avaliação
254 254 Recomendacao novaRecomendacao;
255 255 Faixa conformidade;
  256 + //TODO
256 257 /*
257 258 for (Recomendacao recomendacaoCadastrada : listaCadastrada) {
258 259 novaRecomendacao = new Recomendacao();
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/CriterioAvaliavel.java
... ... @@ -6,7 +6,6 @@ public class CriterioAvaliavel {
6 6 private Long qtdeErros;
7 7 private Long qtdeItens;
8 8  
9   -
10 9 public Long getQtdeErros() {
11 10 return qtdeErros;
12 11 }
... ... @@ -23,14 +22,15 @@ public class CriterioAvaliavel {
23 22 this.qtdeItens = qtdeItens;
24 23 }
25 24  
26   -
27 25 public Long getIdCriterio() {
28 26 return idCriterio;
29 27 }
30 28  
31   -
32 29 public void setIdCriterio(Long idCriterio) {
33 30 this.idCriterio = idCriterio;
34 31 }
35 32  
  33 + public double getPercentualErros(){
  34 + return qtdeErros/qtdeItens;
  35 + }
36 36 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RecomendacaoAvaliavel.java
... ... @@ -3,20 +3,20 @@ package br.com.eselo.integracao;
3 3 public class RecomendacaoAvaliavel {
4 4  
5 5 private Long idRecomendacao;
6   - private CriterioAvaliavel criterioAvaliavel;
  6 + private CriterioAvaliavel criterio;
7 7 private Long totalErros;
8 8 private Long totalAvisos;
9 9  
10 10 public RecomendacaoAvaliavel() {
11   - this.criterioAvaliavel = new CriterioAvaliavel();
  11 + this.criterio = new CriterioAvaliavel();
12 12 }
13 13  
14 14 public CriterioAvaliavel getCriterio() {
15   - return criterioAvaliavel;
  15 + return criterio;
16 16 }
17 17  
18 18 public void setCriterio(CriterioAvaliavel criterioAvaliavel) {
19   - this.criterioAvaliavel = criterioAvaliavel;
  19 + this.criterio = criterioAvaliavel;
20 20 }
21 21  
22 22 public Long getTotalErros() {
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/RelatorioAvaliacao.java
... ... @@ -5,6 +5,7 @@ import java.util.Date;
5 5 import java.util.List;
6 6  
7 7 import com.thoughtworks.xstream.XStream;
  8 +import com.thoughtworks.xstream.converters.basic.DateConverter;
8 9 import com.thoughtworks.xstream.io.xml.DomDriver;
9 10 import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
10 11  
... ... @@ -61,6 +62,9 @@ public class RelatorioAvaliacao {
61 62 public String toString() {
62 63 XStream xstream = new XStream(new DomDriver("UTF-8", new XmlFriendlyReplacer("__", "_")));
63 64  
  65 + xstream.registerConverter(new DateConverter( "EEE MMM dd HH:mm:ss zzz yyyy", new String[0] ));
  66 +
  67 +
64 68 xstream.alias("relatorio_de_avaliacao", RelatorioAvaliacao.class);
65 69 xstream.alias("recomendacao", RecomendacaoAvaliavel.class);
66 70 xstream.alias("criterio", CriterioAvaliavel.class);
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/integracao/ResultadoAvaliacao.java
... ... @@ -3,13 +3,15 @@ package br.com.eselo.integracao;
3 3 import java.util.Date;
4 4  
5 5 import com.thoughtworks.xstream.XStream;
  6 +import com.thoughtworks.xstream.converters.basic.DateConverter;
6 7 import com.thoughtworks.xstream.io.xml.DomDriver;
7 8 import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
8 9  
9 10 public class ResultadoAvaliacao {
10 11  
11 12 private String url;
12   - private Date data;
  13 + private Date dataSolicitacao;
  14 + private Date dataResultado;
13 15 private Double nota;
14 16 private String observacoes;
15 17  
... ... @@ -21,14 +23,22 @@ public class ResultadoAvaliacao {
21 23 this.url = url;
22 24 }
23 25  
24   - public Date getData() {
25   - return data;
  26 + public Date getDataSolicitacao() {
  27 + return dataSolicitacao;
26 28 }
27 29  
28   - public void setData(Date data) {
29   - this.data = data;
  30 + public void setDataSolicitacao(Date data) {
  31 + this.dataSolicitacao = data;
30 32 }
31 33  
  34 + public Date getDataResultado() {
  35 + return dataResultado;
  36 + }
  37 +
  38 + public void setDataResultado(Date dataResultado) {
  39 + this.dataResultado = dataResultado;
  40 + }
  41 +
32 42 public Double getNota() {
33 43 return nota;
34 44 }
... ... @@ -48,10 +58,12 @@ public class ResultadoAvaliacao {
48 58 @Override
49 59 public String toString() {
50 60 XStream xstream = new XStream(new DomDriver("UTF-8", new XmlFriendlyReplacer("__", "_")));
  61 + xstream.registerConverter(new DateConverter( "EEE MMM dd HH:mm:ss zzz yyyy", new String[0] ));
51 62  
52 63 xstream.alias("resultado_da_avaliacao", ResultadoAvaliacao.class);
53 64 xstream.aliasField("url", ResultadoAvaliacao.class, "url");
54   - xstream.aliasField("data", ResultadoAvaliacao.class, "data");
  65 + xstream.aliasField("data_solicitacao", ResultadoAvaliacao.class, "dataSolicitacao");
  66 + xstream.aliasField("data_resultado", ResultadoAvaliacao.class, "dataResultado");
55 67 xstream.aliasField("nota", ResultadoAvaliacao.class, "nota");
56 68 xstream.aliasField("observacoes", ResultadoAvaliacao.class, "observacoes");
57 69  
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Criterio.java
... ... @@ -37,6 +37,14 @@ public class Criterio {
37 37 @Column(name = "nu_criterio", nullable = false)
38 38 private Long numeroCriterio;
39 39  
  40 + public Long getNumeroCriterio() {
  41 + return numeroCriterio;
  42 + }
  43 +
  44 + public void setNumeroCriterio(Long numeroCriterio) {
  45 + this.numeroCriterio = numeroCriterio;
  46 + }
  47 +
40 48 @ManyToOne(fetch = FetchType.LAZY)
41 49 @JoinColumn(name = "id_tipo_teste", columnDefinition = "integer", nullable = false, insertable = true, updatable = true)
42 50 @ForeignKey(name = "fk_sel_criterio_sel_tipo_teste")
... ... @@ -98,7 +106,5 @@ public class Criterio {
98 106 public void setFaixas(List<Faixa> faixas) {
99 107 this.faixas = faixas;
100 108 }
101   -
102   -
103 109  
104 110 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ParametroAvaliacao.java
... ... @@ -49,8 +49,8 @@ public class ParametroAvaliacao {
49 49 @OneToMany(mappedBy = "parametroAvaliacao", targetEntity = br.com.eselo.model.Recomendacao.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
50 50 private List<Recomendacao> recomendacoes;
51 51  
52   - @OneToMany(mappedBy = "parametroAvaliacao", targetEntity = br.com.eselo.model.Avaliacao.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
53   - private List<Avaliacao> avaliacoes;
  52 + //@OneToMany(mappedBy = "parametroAvaliacao", targetEntity = br.com.eselo.model.Avaliacao.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  53 + //private List<Avaliacao> avaliacoes;
54 54  
55 55 public List<Recomendacao> getRecomendacoes() {
56 56 return recomendacoes;
... ... @@ -60,14 +60,6 @@ public class ParametroAvaliacao {
60 60 this.recomendacoes = recomendacoes;
61 61 }
62 62  
63   - public List<Avaliacao> getAvaliacoes() {
64   - return avaliacoes;
65   - }
66   -
67   - public void setAvaliacoes(List<Avaliacao> avaliacoes) {
68   - this.avaliacoes = avaliacoes;
69   - }
70   -
71 63 public Long getId() {
72 64 return id;
73 65 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/Resultado.java
... ... @@ -81,4 +81,7 @@ public class Resultado {
81 81 this.numItens = numItens;
82 82 }
83 83  
  84 + public double getPercentualErros(){
  85 + return numErros/numItens;
  86 + }
84 87 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/main/resources/hibernate.cfg.xml
... ... @@ -21,13 +21,11 @@
21 21 <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
22 22  
23 23 <mapping class="br.com.eselo.model.Usuario" />
24   - <mapping class="br.com.eselo.model.Avaliacao" />
25 24 <mapping class="br.com.eselo.model.ParametroAvaliacao" />
26 25 <mapping class="br.com.eselo.model.Permissao" />
27 26 <mapping class="br.com.eselo.model.Faixa" />
28 27 <mapping class="br.com.eselo.model.Grupo" />
29 28 <mapping class="br.com.eselo.model.Criterio" />
30   - <mapping class="br.com.eselo.model.Resultado" />
31 29 <mapping class="br.com.eselo.model.Recomendacao" />
32 30 <mapping class="br.com.eselo.model.TipoRecomendacao" />
33 31 <mapping class="br.com.eselo.model.TipoTeste" />
... ...
Desenvolvimento/Codificacao/e-Selo/src/test/java/teste/LeitorXMLTest.java
1 1 package teste;
2   -import java.util.List;
  2 +import java.util.Date;
3 3  
4 4 import br.com.eselo.component.LeitorXML;
5 5 import br.com.eselo.integracao.RelatorioAvaliacao;
6   -import br.com.eselo.model.Avaliacao;
7   -import br.com.eselo.model.Resultado;
8 6  
9 7  
10 8 public class LeitorXMLTest {
... ... @@ -17,40 +15,22 @@ public class LeitorXMLTest {
17 15  
18 16 String input = exemploAvaliacao();
19 17  
20   - List<Resultado> resultados = new LeitorXML().lerResultadosXML(input, new Avaliacao());
21   -
22   - String titulo =
23   - "\n\n\n_____________________________________\n"+
24   -
25   - "Resultados obtidos\n"+
26   - "_____________________________________\n";
27   -
28   -
29   - System.out.println(titulo);
30   - //TODO
31   - /*
32   - int i=0;
33   - for(Resultado r:resultados){
34   - System.out.println(" \nResultado "+(i++));
35   - System.out.println("Avaliação: "+r.getAvaliacao().getId());
36   - System.out.println("Identificador: "+r.getNumRecomendacao());
37   - System.out.println("Total de Erros: "+r.getNumErros());
38   - System.out.println("Total de Avisos: "+r.getNumAvisos());
39   -
40   - }
41   - */
  18 + LeitorXML leitor = new LeitorXML();
  19 + System.out.println("\nSaída em JSON:");
  20 + System.out.println(leitor.toJson(leitor.lerAvaliacaoXML(input)));
42 21  
43 22 }
44 23  
45 24 public static String exemploAvaliacao(){
  25 + System.err.println(new Date());
46 26 String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
47 27 "<relatorio_de_avaliacao>"+
48 28 " <url>www.teste.com.br</url>"+
49   - " <data>20141111</data>"+
  29 + " <data>Sun Jun 29 11:17:22 GMT-03:00 2014</data>"+
50 30 " <recomendacao>"+
51   - " <identificador>1</identificador>"+
  31 + " <id_recomendacao>1</id_recomendacao>"+
52 32 " <criterio>"+
53   - " <identificador>1</identificador>"+
  33 + " <id_criterio>1</id_criterio>"+
54 34 " <erros_criterio>13</erros_criterio>"+
55 35 " <itens_criterio>100</itens_criterio>"+
56 36 " </criterio>"+
... ... @@ -61,10 +41,10 @@ public class LeitorXMLTest {
61 41 "</relatorio_de_avaliacao>";
62 42  
63 43 RelatorioAvaliacao ar = new LeitorXML().lerAvaliacaoXML(input);
  44 + System.out.println("Saída em XML:");
64 45 System.out.println(ar.toString());
65 46  
66 47 return ar.toString();
67   -
68 48 }
69 49  
70 50 }
... ...
Desenvolvimento/Codificacao/e-Selo/src/test/java/teste/ResultadoAvaliacaoTest.java
... ... @@ -8,13 +8,14 @@ public class ResultadoAvaliacaoTest {
8 8  
9 9 public static void main(String[] args) {
10 10  
11   - ResultadoAvaliacao ra = new ResultadoAvaliacao();
  11 + ResultadoAvaliacao resultadoAvaliacao = new ResultadoAvaliacao();
12 12  
13   - ra.setData(new Date());
14   - ra.setUrl("www.bol.com.br");
15   - ra.setNota(88.0);
  13 + resultadoAvaliacao.setDataResultado(new Date());
  14 + resultadoAvaliacao.setDataSolicitacao(new Date());
  15 + resultadoAvaliacao.setUrl("www.bol.com.br");
  16 + resultadoAvaliacao.setNota(88.0);
16 17  
17   - System.out.println(ra.toString());
  18 + System.out.println(resultadoAvaliacao.toString());
18 19  
19 20 }
20 21  
... ...
Desenvolvimento/Codificacao/e-Selo/target/classes/hibernate.cfg.xml
... ... @@ -21,13 +21,11 @@
21 21 <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
22 22  
23 23 <mapping class="br.com.eselo.model.Usuario" />
24   - <mapping class="br.com.eselo.model.Avaliacao" />
25 24 <mapping class="br.com.eselo.model.ParametroAvaliacao" />
26 25 <mapping class="br.com.eselo.model.Permissao" />
27 26 <mapping class="br.com.eselo.model.Faixa" />
28 27 <mapping class="br.com.eselo.model.Grupo" />
29 28 <mapping class="br.com.eselo.model.Criterio" />
30   - <mapping class="br.com.eselo.model.Resultado" />
31 29 <mapping class="br.com.eselo.model.Recomendacao" />
32 30 <mapping class="br.com.eselo.model.TipoRecomendacao" />
33 31 <mapping class="br.com.eselo.model.TipoTeste" />
... ...