Commit 4ee502daa80f86f7224a1265bfd25356fee01e92

Authored by magno.oliveira
1 parent 9ebced99
Exists in master

Correção para cadastro e ativação manual do primeiro parametro de cálculo

git-svn-id: https://svn.bento.ifrs.edu.br/default/ASES/e-selo@10329 c2178572-b5ca-4887-91d2-9e3a90c7d55b
Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java
1   -package br.com.eselo.controller;
2   -
3   -import java.io.File;
4   -import java.io.FileNotFoundException;
5   -import java.io.FileOutputStream;
6   -import java.io.IOException;
7   -import java.util.ArrayList;
8   -import java.util.Date;
9   -import java.util.HashMap;
10   -import java.util.List;
11   -import java.util.Map;
12   -
13   -import org.apache.poi.hssf.usermodel.HSSFWorkbook;
14   -import org.apache.poi.ss.usermodel.Cell;
15   -import org.apache.poi.ss.usermodel.CellStyle;
16   -import org.apache.poi.ss.usermodel.CreationHelper;
17   -import org.apache.poi.ss.usermodel.Font;
18   -import org.apache.poi.ss.usermodel.IndexedColors;
19   -import org.apache.poi.ss.usermodel.Row;
20   -import org.apache.poi.ss.usermodel.Sheet;
21   -import org.apache.poi.ss.usermodel.Workbook;
22   -import org.apache.poi.ss.util.CellRangeAddress;
23   -
24   -import br.com.caelum.vraptor.Get;
25   -import br.com.caelum.vraptor.Path;
26   -import br.com.caelum.vraptor.Post;
27   -import br.com.caelum.vraptor.Put;
28   -import br.com.caelum.vraptor.Resource;
29   -import br.com.caelum.vraptor.Result;
30   -import br.com.caelum.vraptor.Validator;
31   -import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder;
32   -import br.com.caelum.vraptor.validator.ValidationMessage;
33   -import br.com.eselo.annotations.Restrito;
34   -import br.com.eselo.component.CopiadorParametroCalculo;
35   -import br.com.eselo.component.Messages;
36   -import br.com.eselo.component.UsuarioWeb;
37   -import br.com.eselo.dao.AvaliacaoDAO;
38   -import br.com.eselo.dao.ParametroCalculoDAO;
39   -import br.com.eselo.dao.RecomendacaoDAO;
40   -import br.com.eselo.dao.UsuarioDAO;
41   -import br.com.eselo.integracao.CriterioAvaliado;
42   -import br.com.eselo.model.Criterio;
43   -import br.com.eselo.model.Faixa;
44   -import br.com.eselo.model.ParametroCalculo;
45   -import br.com.eselo.model.Recomendacao;
46   -import br.com.eselo.model.Usuario;
47   -
48   -@Resource
49   -public class ParametroCalculoController {
50   -
51   - private final ParametroCalculoDAO dao;
52   - private final Result result;
53   - private final Validator validator;
54   - private final UsuarioWeb usuarioWeb;
55   -
56   - protected static final int MODO_ADD = 1;
57   - protected static final int MODO_EDIT = 2;
58   - protected static final int MODO_DELETE = 3;
59   - protected static final int MODO_IMPORT = 4;
60   -
61   - public ParametroCalculoController(ParametroCalculoDAO _dao,
62   - RecomendacaoDAO _daoRecomendacao, Result _result,
63   - Validator _validator, UsuarioWeb _usuarioWeb) {
64   - dao = _dao;
65   - result = _result;
66   - validator = _validator;
67   - usuarioWeb = _usuarioWeb;
68   - }
69   -
70   - @Get("/parametrosCalculo/novo")
71   - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
72   - public void novo() {
73   - ParametroCalculo parametroCalculo = new ParametroCalculo();
74   - parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId()));
75   - parametroCalculo.setTsInicio(new java.util.Date());
76   - inserirParametroCalculo(parametroCalculo);
77   -
78   - result.redirectTo(ParametroCalculoController.class)
79   - .form(dao.getMaxId());
80   - }
81   -
82   - @Get("/parametrosCalculo/importar/")
83   - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
84   - public void importar(long idParametroCalculo) {
85   -
86   - String acao = VRaptorRequestHolder.currentRequest().getRequest().getParameter("acao");
87   -
88   - String mensagem="";
89   -
90   - if(acao.equals("Importar")){
91   - ParametroCalculo pc = dao.load(idParametroCalculo);
92   - this.criarNovoParametroCalculo(pc, MODO_IMPORT);
93   - mensagem = Messages.getString("parametro_calculo.criado")
94   - + pc.getDescricao() + ".";
95   -
96   - result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
97   -
98   - }else if(acao.equals("Não Importar")){
99   - criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD);
100   - mensagem = Messages.getString("parametro_calculo.criado.limpo");
101   -
102   - result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
103   -
104   - }else if(acao.equals("Cancelar")){
105   - mensagem = Messages.getString("validacao.acao_cancelada");
106   - result.redirectTo(ParametroCalculoController.class).lista();
107   - }
108   -
109   - result.include("mensagem", mensagem);
110   - }
111   -
112   - @Post("/parametrosCalculo")
113   - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
114   - public void adicionar(ParametroCalculo parametroCalculo) {
115   -
116   - inserirParametroCalculo(parametroCalculo);
117   -
118   - result.include("mensagem", "Parâmetro de Cálculo salvo com sucesso.");
119   - result.redirectTo(ParametroCalculoController.class).index(1);
120   - }
121   -
122   - protected void inserirParametroCalculo(ParametroCalculo parametroCalculo) {
123   - if (parametroCalculo.getDescricao() == null) {
124   - validator.add(new ValidationMessage(Messages
125   - .getString("parametro_calculo.validacao.descricao"),
126   - "parametroCalculo.descricao"));
127   - }
128   -
129   - dao.save(parametroCalculo);
130   - }
131   -
132   - @Put("/parametrosCalculo")
133   - @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
134   - public void atualizar(ParametroCalculo parametroCalculo) {
135   -
136   - @SuppressWarnings("unused")
137   - List<Usuario> usuarios = dao.getAllUsuarios();
138   - ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo.getId());
139   -
140   - parametroCalculo.setTsInicio(parametroCalculoCadastrado.getTsInicio());
141   - parametroCalculoCadastrado.setUsuario(new UsuarioDAO(dao.getSession()).load(usuarioWeb.getId()));
142   - parametroCalculo.setUsuario(parametroCalculoCadastrado.getUsuario());
143   - parametroCalculoCadastrado.setDescricao(parametroCalculo.getDescricao());
144   -
145   - result.include("mensagem", "Parâmetro de Cálculo atualizado com sucesso.");
146   - result.redirectTo(ParametroCalculoController.class).form(parametroCalculo.getId());
147   - }
148   -
149   - @Path("/parametrosCalculo/ativar/{id}")
150   - @Restrito(descricao = "PARAMETRO_CALCULO_ATIVAR")
151   - public void ativar(Long id) {
152   -
153   - ParametroCalculo pc = dao.load(id);
154   -
155   - if(validarParametroCalculoAtivacao(pc)){
156   - ativarParametroCalculo(id);
157   - result.redirectTo(ParametroCalculoController.class).lista();
158   - }else{
159   - result.redirectTo(ParametroCalculoController.class).errosAtivacao(id);
160   - }
161   - }
162   -
163   - @Path("/parametrosCalculo/delete/{id}")
164   - @Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR")
165   - public void excluir(Long id) {
166   - if (dao.listAll().size() > 1) {
167   - ParametroCalculo pc = dao.load(id);
168   -
169   - if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){
170   - if ((pc.getTsFim() == null)) {
171   -
172   - if(pc.getTsInicio()!=null){
173   - pc = dao.getLastParametrosCalculoAtivavel(pc);
174   - pc.setTsFim(null);
175   - dao.remove(id);
176   - dao.update(pc);
177   - }else{
178   - dao.remove(id);
179   - }
180   -
181   - result.include("mensagem",
182   - Messages.getString("parametro_calculo.validacao.excluido"));
183   - } else {
184   - result.include("mensagem",
185   - Messages.getString("parametro_calculo.validacao.nao_pode_excluir"));
186   - }
187   - }else{
188   -
189   - result.include("mensagem",
190   - Messages.getString("parametro_calculo.validacao.nao_pode_excluir.em_uso"));
191   - }
192   -
193   - } else {
194   - result.include("mensagem",
195   - Messages.getString("parametro_calculo.validacao.nao_pode_excluir.unico"));
196   - }
197   -
198   - result.redirectTo(ParametroCalculoController.class).lista();
199   - }
200   -
201   - @Get("/parametrosCalculo")
202   - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
203   - public List<ParametroCalculo> lista() {
204   - return this.index(1);
205   - }
206   -
207   - @Get("/parametrosCalculo/{pagina}")
208   - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
209   - public List<ParametroCalculo> index(int pagina) {
210   - ParametroCalculo ultimoParametro = dao.load(dao.getMaxId());
211   -
212   - // Paginação
213   - // quantidade de registros por pagina
214   - int exibi = 7;
215   - // Informa a quantidade de registros
216   - int registros = dao.numLinhas();
217   - // Quantidade de paginas na paginação
218   - int totalPag = registros / exibi;
219   - // se houver resto na divisao acima acrescenta uma pagina na paginação
220   - if ((registros - (totalPag * exibi)) > 0)
221   - totalPag++;
222   -
223   - // Calculo do registro inicial e final
224   - int regIni = ((exibi * pagina) - exibi);
225   - int regFim = (regIni + exibi);
226   -
227   - if (regFim > registros)
228   - regFim = registros;
229   -
230   - // fim paginação
231   -
232   - List<ParametroCalculo> resultado = dao.listAll(regIni, regFim);
233   - List<ParametroCalculo> paginacao = new ArrayList<ParametroCalculo>();
234   -
235   - for (int i = regIni; i < regFim; i++) {
236   - paginacao.add(resultado.get(i));
237   - }
238   -
239   - result.include("paginas", totalPag);
240   - result.include("registros", registros);
241   - result.include("regInic", ++regIni);
242   - result.include("regFim", regFim);
243   - result.include("controle", "parametrosCalculo");
244   - result.include("ultimoParametro", ultimoParametro);
245   -
246   - return paginacao;
247   - }
248   -
249   - @Get("/parametrosCalculo/lista")
250   - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
251   - public List<ParametroCalculo> lista(ParametroCalculo parametroCalculo) {
252   - result.include("parametroCalculo", parametroCalculo);
253   - return dao.listAll(parametroCalculo);
254   - }
255   -
256   - @Get("/parametrosCalculo/atualizar/{id}")
257   - @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
258   - public ParametroCalculo form(Long id) {
259   - ParametroCalculo parametroCalculo = this.dao.load(id);
260   - result.include("usuarioList", dao.getAllUsuarios());
261   - return parametroCalculo;
262   - }
263   -
264   - @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
265   - public void form() {
266   - ParametroCalculo parametroCalculo = new ParametroCalculo();
267   - parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId()));
268   - //parametroCalculo.setTsInicio(new java.util.Date());
269   - result.include("parametroCalculo", parametroCalculo);
270   - }
271   -
272   - private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo,
273   - int tipo) {
274   - boolean ok = false;
275   -
276   - switch (tipo) {
277   - case ParametroCalculoController.MODO_ADD:
278   - parametroCalculo.setId(0L);
279   - ok = true;
280   - break;
281   -
282   - case ParametroCalculoController.MODO_IMPORT:
283   - ok = true;
284   - break;
285   - }
286   -
287   - if (ok) {
288   - new CopiadorParametroCalculo().criarNovoParametroCalculo(
289   - parametroCalculo, usuarioWeb, dao.getSession());
290   - }
291   -
292   - }
293   -
294   - private boolean validarParametroCalculoAtivacao(ParametroCalculo parametroCalculo){
295   - boolean resultado = true;
296   - String mensagem="";
297   - String aviso= " Não foi possível ativar este parâmetro de cálculo!<br/> Antes da ativação será necessário resolver as pendências listadas abaixo.";
298   -
299   - if(parametroCalculo.getRecomendacoes().size()>0){
300   - for(Recomendacao r: parametroCalculo.getRecomendacoes()){
301   - if(r.getCriterios().size()>0){
302   - for(Criterio c: r.getCriterios()){
303   - if((c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE) && (c.getFaixas().size() < 1)){
304   - mensagem = mensagem+" O criterio "+c.getNumeroCriterio()+" da recomendação "+r.getNumeroRecomendacao()+" é do tipo DECRESCENTE e não possui nenhuma faixa cadastrada.<br/>";
305   - resultado = false;
306   - }
307   - }
308   - }else{
309   - mensagem = mensagem+" A recomendação "+r.getNumeroRecomendacao()+" não possui nenhum critério cadastrado.<br/>";
310   - resultado = false;
311   - }
312   - }
313   - }else{
314   - mensagem = "Nenhuma recomendação foi cadastrada.";
315   - resultado = false;
316   - }
317   -
318   - if(resultado){
319   - result.include("mensagem", Messages.getString("parametro_calculo.validacao.ativado"));
320   - }else{
321   - result.include("mensagem",aviso);
322   - System.out.println(mensagem);
323   - }
324   -
325   - return resultado;
326   - }
327   -
328   - private void ativarParametroCalculo(Long id){
329   - ParametroCalculo parametroCalculoelegivel, parametroCalculoAtivo;
330   - parametroCalculoelegivel = dao.load(id);
331   - parametroCalculoAtivo = dao.getLastParametrosCalculoAtivo();
332   -
333   - parametroCalculoelegivel.setTsInicio(new Date());
334   - parametroCalculoAtivo.setTsFim(parametroCalculoelegivel.getTsInicio());
335   -
336   - dao.update(parametroCalculoelegivel);
337   - dao.update(parametroCalculoAtivo);
338   - }
339   -
340   - @Get("/parametrosCalculo/relatorio/{id}")
341   - @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO")
342   - public ParametroCalculo relatorio(Long id) {
343   - ParametroCalculo parametroCalculo = this.dao.load(id);
344   - result.include("usuarioList", dao.getAllUsuarios());
345   - result.include("recomendacaoList",
346   - new RecomendacaoDAO(dao.getSession())
347   - .listAllAtivas(parametroCalculo));
348   -
349   - return parametroCalculo;
350   - }
351   -
352   - @Get("/parametrosCalculo/errosAtivacao/{id}")
353   - @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO")
354   - public ParametroCalculo errosAtivacao(Long id) {
355   - ParametroCalculo parametroCalculo = this.dao.load(id);
356   - result.include("usuarioList", dao.getAllUsuarios());
357   -
358   -
359   - List<Recomendacao> recomendacaoList = parametroCalculo.getRecomendacoes();
360   - List<Recomendacao> recomendacaoListErros = new ArrayList<Recomendacao>();
361   -
362   - for(Recomendacao r: recomendacaoList){
363   - if(r.getCriterios().size()<1){
364   - recomendacaoListErros.add(r);
365   - }else{
366   - boolean add = false;
367   - List<Criterio> criterios = new ArrayList<Criterio>();
368   - for(Criterio c: r.getCriterios()){
369   - if(c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE && c.getFaixas().size()<1){
370   - criterios.add(c);
371   - add = true;
372   - }
373   - }
374   - if(add){
375   - r.setCriterios(criterios);
376   - recomendacaoListErros.add(r);
377   - }
378   - }
379   - }
380   -
381   -
382   - result.include("recomendacaoList", recomendacaoListErros);
383   -
384   - return parametroCalculo;
385   - }
386   -
387   - @Get("/parametroAtivo.xls")
388   - public File exportarAtivo(){
389   - Long id = dao.getLastParametrosCalculoAtivo().getId();
390   - return exportar(id);
391   - }
392   -
393   - @Get("/parametrosCalculo/exportar/{id}/*")
394   - @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
395   - public File exportar(Long id) {
396   - File relatorio = new File("workbook.ods");
397   - ParametroCalculo parametroCalculo = this.dao.load(id);
398   - List<Recomendacao> recomendacaoList = new RecomendacaoDAO(
399   - dao.getSession()).listAllAtivas(parametroCalculo);
400   - String msgAtivacao="";
401   -
402   - if(parametroCalculo.getTsInicio() != null){
403   - msgAtivacao = "Ativado em: "+parametroCalculo.getTsInicio()+".";
404   - }
405   - if(parametroCalculo.getTsFim() != null){
406   - msgAtivacao = msgAtivacao +" Encerrado em: "+parametroCalculo.getTsFim();
407   - }
408   -
409   - Workbook wb = new HSSFWorkbook();
410   - FileOutputStream fileOut;
411   -
412   - Map<String, CellStyle> styles = createStyles(wb);
413   - CreationHelper createHelper = wb.getCreationHelper();
414   - Sheet sheet = wb.createSheet("new sheet");
415   - sheet.setPrintGridlines(false);
416   - sheet.setDisplayGridlines(false);
417   -
418   - short rows = 0;
419   - Row row = sheet.createRow(rows);
420   - Cell cell = row.createCell(0);
421   - cell.setCellValue(createHelper.createRichTextString(parametroCalculo.getDescricao()));
422   - cell.setCellStyle(styles.get("title"));
423   - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
424   - rows++;
425   -
426   - row = sheet.createRow(rows);
427   - cell = row.createCell(0);
428   - cell.setCellValue(createHelper.createRichTextString(msgAtivacao));
429   - CellStyle style = wb.createCellStyle();
430   - style.setAlignment(CellStyle.ALIGN_CENTER);
431   - cell.setCellStyle(style);
432   -
433   - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$2:$L$2"));
434   - rows += 3;
435   -
436   - for (Recomendacao recomendacao : recomendacaoList) {
437   - row = sheet.createRow(rows);
438   - cell = row.createCell(0);
439   - cell.setCellValue(
440   - createHelper.createRichTextString("Recomendação "
441   - + recomendacao.getNumeroRecomendacao())
442   - + ": " + recomendacao.getDescricao()
443   - + " (Peso: "+recomendacao.getPeso()+")"
444   - );
445   - cell.setCellStyle(styles.get("subtitle"));
446   - rows++;
447   - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$"+rows+":$L$"+rows));
448   -
449   - /*
450   - row = sheet.createRow(rows);
451   - cell = row.createCell(1);
452   - cell.setCellValue("Descrição");
453   - cell.setCellStyle(styles.get("label"));
454   - row.createCell(2).setCellValue(recomendacao.getDescricao());
455   - rows++;
456   -
457   - row = sheet.createRow(rows);
458   - cell = row.createCell(1);
459   - cell.setCellValue("Peso");
460   - cell.setCellStyle(styles.get("label"));
461   - cell = row.createCell(2);
462   - cell.setCellValue(recomendacao.getPeso());
463   - cell.setCellStyle(styles.get("numeric"));
464   - rows += 2;
465   - */
466   -
467   - row = sheet.createRow(rows);
468   - cell = row.createCell(1);
469   - cell.setCellValue("Número Critério");
470   - cell.setCellStyle(styles.get("label"));
471   - cell = row.createCell(2);
472   - cell.setCellValue("Peso");
473   - cell.setCellStyle(styles.get("label"));
474   - cell = row.createCell(3);
475   - cell.setCellValue("Descrição");
476   - cell.setCellStyle(styles.get("label"));
477   - cell = row.createCell(4);
478   - cell.setCellValue("Requisito");
479   - cell.setCellStyle(styles.get("label"));
480   - cell = row.createCell(5);
481   - cell.setCellValue("Tipo de Verificação");
482   - cell.setCellStyle(styles.get("label"));
483   - cell = row.createCell(6);
484   - cell.setCellValue("Tipo de Mensagem");
485   - cell.setCellStyle(styles.get("label"));
486   - rows++;
487   -
488   - for (Criterio criterio : recomendacao.getCriterios()) {
489   - row = sheet.createRow(rows);
490   - row.createCell(1).setCellValue(criterio.getNumeroCriterio());
491   - row.createCell(2).setCellValue(criterio.getPeso());
492   - row.createCell(3).setCellValue(criterio.getDescricao());
493   -
494   - row.createCell(4).setCellValue(criterio.getRequisito());
495   -
496   - String tipoVetificacao;
497   - if(criterio.isVerificacaoAutomatica()){
498   - tipoVetificacao = "Automática";
499   - }else if(!criterio.isVerificacaoAutomatica()){
500   - tipoVetificacao="Humana";
501   - }else{
502   - tipoVetificacao="";
503   - }
504   -
505   - String tipoErro;
506   - if(criterio.isErro()){
507   - tipoErro = "Erro";
508   - }else if(!criterio.isErro()){
509   - tipoErro="Aviso";
510   - }else{
511   - tipoErro="";
512   - }
513   -
514   - row.createCell(5).setCellValue(tipoVetificacao);
515   - row.createCell(6).setCellValue(tipoErro);
516   -
517   - if(criterio.getTipoTeste().getId().intValue()==3){
518   - rows++;
519   - row = sheet.createRow(rows);
520   - cell = row.createCell(2);
521   - cell.setCellValue("Faixa");
522   - cell.setCellStyle(styles.get("label"));
523   - cell = row.createCell(3);
524   - cell.setCellValue("Descrição");
525   - cell.setCellStyle(styles.get("label"));
526   - cell = row.createCell(4);
527   - cell.setCellValue("Início");
528   - cell.setCellStyle(styles.get("label"));
529   - cell = row.createCell(5);
530   - cell.setCellValue("Fim");
531   - cell.setCellStyle(styles.get("label"));
532   - cell = row.createCell(6);
533   - cell.setCellValue("%");
534   - cell.setCellStyle(styles.get("label"));
535   - rows++;
536   -
537   - for(Faixa faixa:criterio.getFaixas()){
538   - row = sheet.createRow(rows);
539   - row.createCell(2).setCellValue(faixa.getFaixa());
540   - row.createCell(3).setCellValue(faixa.getDescricao());
541   - row.createCell(4).setCellValue(faixa.getFaixaInicio());
542   - row.createCell(5).setCellValue(faixa.getFaixaFim());
543   - row.createCell(6).setCellValue(faixa.getPercentualConformidade());
544   - rows++;
545   -
546   - }
547   -
548   - }
549   -
550   -
551   - rows++;
552   - }
553   -
554   - rows += 2;
555   - }
556   -
557   - try {
558   - fileOut = new FileOutputStream(relatorio);
559   - wb.write(fileOut);
560   - } catch (FileNotFoundException e) {
561   - e.printStackTrace();
562   - } catch (IOException e) {
563   - e.printStackTrace();
564   - }
565   -
566   - return relatorio;
567   - }
568   -
569   - private static Map<String, CellStyle> createStyles(Workbook wb) {
570   - Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
571   -
572   - CellStyle style;
573   - Font fontLargeBold = wb.createFont();
574   - fontLargeBold.setFontHeightInPoints((short) 12);
575   - fontLargeBold.setFontName("Arial");
576   - fontLargeBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
577   -
578   - Font fontMediumBold = wb.createFont();
579   - fontMediumBold.setFontHeightInPoints((short) 11);
580   - fontMediumBold.setFontName("Arial");
581   - fontMediumBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
582   -
583   - Font fontNormalBold = wb.createFont();
584   - fontNormalBold.setFontHeightInPoints((short) 10);
585   - fontNormalBold.setFontName("Arial");
586   - fontNormalBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
587   -
588   - style = wb.createCellStyle();
589   - style.setAlignment(CellStyle.ALIGN_CENTER);
590   - style.setFont(fontLargeBold);
591   - styles.put("title", style);
592   -
593   - style = wb.createCellStyle();
594   - style.setAlignment(CellStyle.ALIGN_LEFT);
595   - style.setFont(fontMediumBold);
596   - style.setBorderBottom(CellStyle.BORDER_DOTTED);
597   - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
598   - styles.put("subtitle", style);
599   -
600   - style = wb.createCellStyle();
601   - style.setAlignment(CellStyle.ALIGN_LEFT);
602   - style.setFont(fontNormalBold);
603   - styles.put("label", style);
604   -
605   - style = wb.createCellStyle();
606   - style.setAlignment(CellStyle.ALIGN_LEFT);
607   - style.setDataFormat(wb.createDataFormat().getFormat("0"));
608   - styles.put("numeric", style);
609   -
610   - return styles;
611   - }
612   -}
  1 +package br.com.eselo.controller;
  2 +
  3 +import java.io.File;
  4 +import java.io.FileNotFoundException;
  5 +import java.io.FileOutputStream;
  6 +import java.io.IOException;
  7 +import java.util.ArrayList;
  8 +import java.util.Date;
  9 +import java.util.HashMap;
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  14 +import org.apache.poi.ss.usermodel.Cell;
  15 +import org.apache.poi.ss.usermodel.CellStyle;
  16 +import org.apache.poi.ss.usermodel.CreationHelper;
  17 +import org.apache.poi.ss.usermodel.Font;
  18 +import org.apache.poi.ss.usermodel.IndexedColors;
  19 +import org.apache.poi.ss.usermodel.Row;
  20 +import org.apache.poi.ss.usermodel.Sheet;
  21 +import org.apache.poi.ss.usermodel.Workbook;
  22 +import org.apache.poi.ss.util.CellRangeAddress;
  23 +
  24 +import br.com.caelum.vraptor.Get;
  25 +import br.com.caelum.vraptor.Path;
  26 +import br.com.caelum.vraptor.Post;
  27 +import br.com.caelum.vraptor.Put;
  28 +import br.com.caelum.vraptor.Resource;
  29 +import br.com.caelum.vraptor.Result;
  30 +import br.com.caelum.vraptor.Validator;
  31 +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder;
  32 +import br.com.caelum.vraptor.validator.ValidationMessage;
  33 +import br.com.eselo.annotations.Restrito;
  34 +import br.com.eselo.component.CopiadorParametroCalculo;
  35 +import br.com.eselo.component.Messages;
  36 +import br.com.eselo.component.UsuarioWeb;
  37 +import br.com.eselo.dao.AvaliacaoDAO;
  38 +import br.com.eselo.dao.ParametroCalculoDAO;
  39 +import br.com.eselo.dao.RecomendacaoDAO;
  40 +import br.com.eselo.dao.UsuarioDAO;
  41 +import br.com.eselo.integracao.CriterioAvaliado;
  42 +import br.com.eselo.model.Criterio;
  43 +import br.com.eselo.model.Faixa;
  44 +import br.com.eselo.model.ParametroCalculo;
  45 +import br.com.eselo.model.Recomendacao;
  46 +import br.com.eselo.model.Usuario;
  47 +
  48 +@Resource
  49 +public class ParametroCalculoController {
  50 +
  51 + private final ParametroCalculoDAO dao;
  52 + private final Result result;
  53 + private final Validator validator;
  54 + private final UsuarioWeb usuarioWeb;
  55 +
  56 + protected static final int MODO_ADD = 1;
  57 + protected static final int MODO_EDIT = 2;
  58 + protected static final int MODO_DELETE = 3;
  59 + protected static final int MODO_IMPORT = 4;
  60 +
  61 + public ParametroCalculoController(ParametroCalculoDAO _dao,
  62 + RecomendacaoDAO _daoRecomendacao, Result _result,
  63 + Validator _validator, UsuarioWeb _usuarioWeb) {
  64 + dao = _dao;
  65 + result = _result;
  66 + validator = _validator;
  67 + usuarioWeb = _usuarioWeb;
  68 + }
  69 +
  70 + @Get("/parametrosCalculo/novo")
  71 + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
  72 + public void novo() {
  73 + ParametroCalculo parametroCalculo = new ParametroCalculo();
  74 + parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId()));
  75 + parametroCalculo.setTsInicio(new java.util.Date());
  76 + inserirParametroCalculo(parametroCalculo);
  77 +
  78 + result.redirectTo(ParametroCalculoController.class)
  79 + .form(dao.getMaxId());
  80 + }
  81 +
  82 + @Get("/parametrosCalculo/importar/")
  83 + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
  84 + public void importar(long idParametroCalculo) {
  85 +
  86 + String acao = VRaptorRequestHolder.currentRequest().getRequest().getParameter("acao");
  87 +
  88 + String mensagem="";
  89 +
  90 + if(acao.equals("Importar")){
  91 + ParametroCalculo pc = dao.load(idParametroCalculo);
  92 + this.criarNovoParametroCalculo(pc, MODO_IMPORT);
  93 + mensagem = Messages.getString("parametro_calculo.criado")
  94 + + pc.getDescricao() + ".";
  95 +
  96 + result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
  97 +
  98 + }else if(acao.equals("Não Importar")){
  99 + criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD);
  100 + mensagem = Messages.getString("parametro_calculo.criado.limpo");
  101 +
  102 + result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
  103 +
  104 + }else if(acao.equals("Cancelar")){
  105 + mensagem = Messages.getString("validacao.acao_cancelada");
  106 + result.redirectTo(ParametroCalculoController.class).lista();
  107 + }
  108 +
  109 + result.include("mensagem", mensagem);
  110 + }
  111 +
  112 + @Post("/parametrosCalculo")
  113 + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
  114 + public void adicionar(ParametroCalculo parametroCalculo) {
  115 +
  116 + inserirParametroCalculo(parametroCalculo);
  117 +
  118 + result.include("mensagem", "Parâmetro de Cálculo salvo com sucesso.");
  119 + result.redirectTo(ParametroCalculoController.class).index(1);
  120 + }
  121 +
  122 + protected void inserirParametroCalculo(ParametroCalculo parametroCalculo) {
  123 + if (parametroCalculo.getDescricao() == null) {
  124 + validator.add(new ValidationMessage(Messages
  125 + .getString("parametro_calculo.validacao.descricao"),
  126 + "parametroCalculo.descricao"));
  127 + }
  128 +
  129 + dao.save(parametroCalculo);
  130 + }
  131 +
  132 + @Put("/parametrosCalculo")
  133 + @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
  134 + public void atualizar(ParametroCalculo parametroCalculo) {
  135 +
  136 + @SuppressWarnings("unused")
  137 + List<Usuario> usuarios = dao.getAllUsuarios();
  138 + ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo.getId());
  139 +
  140 + parametroCalculo.setTsInicio(parametroCalculoCadastrado.getTsInicio());
  141 + parametroCalculoCadastrado.setUsuario(new UsuarioDAO(dao.getSession()).load(usuarioWeb.getId()));
  142 + parametroCalculo.setUsuario(parametroCalculoCadastrado.getUsuario());
  143 + parametroCalculoCadastrado.setDescricao(parametroCalculo.getDescricao());
  144 +
  145 + result.include("mensagem", "Parâmetro de Cálculo atualizado com sucesso.");
  146 + result.redirectTo(ParametroCalculoController.class).form(parametroCalculo.getId());
  147 + }
  148 +
  149 + @Path("/parametrosCalculo/ativar/{id}")
  150 + @Restrito(descricao = "PARAMETRO_CALCULO_ATIVAR")
  151 + public void ativar(Long id) {
  152 +
  153 + ParametroCalculo pc = dao.load(id);
  154 +
  155 + if(validarParametroCalculoAtivacao(pc)){
  156 + ativarParametroCalculo(id);
  157 + result.redirectTo(ParametroCalculoController.class).lista();
  158 + }else{
  159 + result.redirectTo(ParametroCalculoController.class).errosAtivacao(id);
  160 + }
  161 + }
  162 +
  163 + @Path("/parametrosCalculo/delete/{id}")
  164 + @Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR")
  165 + public void excluir(Long id) {
  166 + if (dao.listAll().size() > 1) {
  167 + ParametroCalculo pc = dao.load(id);
  168 +
  169 + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){
  170 + if ((pc.getTsFim() == null)) {
  171 +
  172 + if(pc.getTsInicio()!=null){
  173 + pc = dao.getLastParametrosCalculoAtivavel(pc);
  174 + pc.setTsFim(null);
  175 + dao.remove(id);
  176 + dao.update(pc);
  177 + }else{
  178 + dao.remove(id);
  179 + }
  180 +
  181 + result.include("mensagem",
  182 + Messages.getString("parametro_calculo.validacao.excluido"));
  183 + } else {
  184 + result.include("mensagem",
  185 + Messages.getString("parametro_calculo.validacao.nao_pode_excluir"));
  186 + }
  187 + }else{
  188 +
  189 + result.include("mensagem",
  190 + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.em_uso"));
  191 + }
  192 +
  193 + } else {
  194 + result.include("mensagem",
  195 + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.unico"));
  196 + }
  197 +
  198 + result.redirectTo(ParametroCalculoController.class).lista();
  199 + }
  200 +
  201 + @Get("/parametrosCalculo")
  202 + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
  203 + public List<ParametroCalculo> lista() {
  204 + return this.index(1);
  205 + }
  206 +
  207 + @Get("/parametrosCalculo/{pagina}")
  208 + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
  209 + public List<ParametroCalculo> index(int pagina) {
  210 + ParametroCalculo ultimoParametro = dao.load(dao.getMaxId());
  211 +
  212 + // Paginação
  213 + // quantidade de registros por pagina
  214 + int exibi = 7;
  215 + // Informa a quantidade de registros
  216 + int registros = dao.numLinhas();
  217 + // Quantidade de paginas na paginação
  218 + int totalPag = registros / exibi;
  219 + // se houver resto na divisao acima acrescenta uma pagina na paginação
  220 + if ((registros - (totalPag * exibi)) > 0)
  221 + totalPag++;
  222 +
  223 + // Calculo do registro inicial e final
  224 + int regIni = ((exibi * pagina) - exibi);
  225 + int regFim = (regIni + exibi);
  226 +
  227 + if (regFim > registros)
  228 + regFim = registros;
  229 +
  230 + // fim paginação
  231 +
  232 + List<ParametroCalculo> resultado = dao.listAll(regIni, regFim);
  233 + List<ParametroCalculo> paginacao = new ArrayList<ParametroCalculo>();
  234 +
  235 + for (int i = regIni; i < regFim; i++) {
  236 + paginacao.add(resultado.get(i));
  237 + }
  238 +
  239 + result.include("paginas", totalPag);
  240 + result.include("registros", registros);
  241 + result.include("regInic", ++regIni);
  242 + result.include("regFim", regFim);
  243 + result.include("controle", "parametrosCalculo");
  244 + result.include("ultimoParametro", ultimoParametro);
  245 +
  246 + return paginacao;
  247 + }
  248 +
  249 + @Get("/parametrosCalculo/lista")
  250 + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
  251 + public List<ParametroCalculo> lista(ParametroCalculo parametroCalculo) {
  252 + result.include("parametroCalculo", parametroCalculo);
  253 + return dao.listAll(parametroCalculo);
  254 + }
  255 +
  256 + @Get("/parametrosCalculo/atualizar/{id}")
  257 + @Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
  258 + public ParametroCalculo form(Long id) {
  259 + ParametroCalculo parametroCalculo = this.dao.load(id);
  260 + result.include("usuarioList", dao.getAllUsuarios());
  261 + return parametroCalculo;
  262 + }
  263 +
  264 + @Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
  265 + public void form() {
  266 + ParametroCalculo parametroCalculo = new ParametroCalculo();
  267 + parametroCalculo.setUsuario(dao.getUsuario(usuarioWeb.getId()));
  268 + //parametroCalculo.setTsInicio(new java.util.Date());
  269 + result.include("parametroCalculo", parametroCalculo);
  270 + }
  271 +
  272 + private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo,
  273 + int tipo) {
  274 + boolean ok = false;
  275 +
  276 + switch (tipo) {
  277 + case ParametroCalculoController.MODO_ADD:
  278 + parametroCalculo.setId(0L);
  279 + ok = true;
  280 + break;
  281 +
  282 + case ParametroCalculoController.MODO_IMPORT:
  283 + ok = true;
  284 + break;
  285 + }
  286 +
  287 + if (ok) {
  288 + new CopiadorParametroCalculo().criarNovoParametroCalculo(
  289 + parametroCalculo, usuarioWeb, dao.getSession());
  290 + }
  291 +
  292 + }
  293 +
  294 + private boolean validarParametroCalculoAtivacao(ParametroCalculo parametroCalculo){
  295 + boolean resultado = true;
  296 + String mensagem="";
  297 + String aviso= " Não foi possível ativar este parâmetro de cálculo!<br/> Antes da ativação será necessário resolver as pendências listadas abaixo.";
  298 +
  299 + if(parametroCalculo.getRecomendacoes().size()>0){
  300 + for(Recomendacao r: parametroCalculo.getRecomendacoes()){
  301 + if(r.getCriterios().size()>0){
  302 + for(Criterio c: r.getCriterios()){
  303 + if((c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE) && (c.getFaixas().size() < 1)){
  304 + mensagem = mensagem+" O criterio "+c.getNumeroCriterio()+" da recomendação "+r.getNumeroRecomendacao()+" é do tipo DECRESCENTE e não possui nenhuma faixa cadastrada.<br/>";
  305 + resultado = false;
  306 + }
  307 + }
  308 + }else{
  309 + mensagem = mensagem+" A recomendação "+r.getNumeroRecomendacao()+" não possui nenhum critério cadastrado.<br/>";
  310 + resultado = false;
  311 + }
  312 + }
  313 + }else{
  314 + mensagem = "Nenhuma recomendação foi cadastrada.";
  315 + resultado = false;
  316 + }
  317 +
  318 + if(resultado){
  319 + result.include("mensagem", Messages.getString("parametro_calculo.validacao.ativado"));
  320 + }else{
  321 + result.include("mensagem",aviso);
  322 + System.out.println(mensagem);
  323 + }
  324 +
  325 + return resultado;
  326 + }
  327 +
  328 + private void ativarParametroCalculo(Long id){
  329 + ParametroCalculo parametroCalculoelegivel, parametroCalculoAtivo;
  330 + parametroCalculoelegivel = dao.load(id);
  331 + parametroCalculoAtivo = dao.getLastParametrosCalculoAtivo();
  332 +
  333 + parametroCalculoelegivel.setTsInicio(new Date());
  334 +
  335 + dao.update(parametroCalculoelegivel);
  336 +
  337 + if(parametroCalculoAtivo!=null){
  338 + parametroCalculoAtivo.setTsFim(parametroCalculoelegivel.getTsInicio());
  339 + dao.update(parametroCalculoAtivo);
  340 + }
  341 + }
  342 +
  343 + @Get("/parametrosCalculo/relatorio/{id}")
  344 + @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO")
  345 + public ParametroCalculo relatorio(Long id) {
  346 + ParametroCalculo parametroCalculo = this.dao.load(id);
  347 + result.include("usuarioList", dao.getAllUsuarios());
  348 + result.include("recomendacaoList",
  349 + new RecomendacaoDAO(dao.getSession())
  350 + .listAllAtivas(parametroCalculo));
  351 +
  352 + return parametroCalculo;
  353 + }
  354 +
  355 + @Get("/parametrosCalculo/errosAtivacao/{id}")
  356 + @Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO")
  357 + public ParametroCalculo errosAtivacao(Long id) {
  358 + ParametroCalculo parametroCalculo = this.dao.load(id);
  359 + result.include("usuarioList", dao.getAllUsuarios());
  360 +
  361 + List<Recomendacao> recomendacaoList = new RecomendacaoDAO(dao.getSession()).listAllAtivas(parametroCalculo);
  362 + List<Recomendacao> recomendacaoListErros = new ArrayList<Recomendacao>();
  363 +
  364 + for(Recomendacao r: recomendacaoList){
  365 + if(r.getCriterios().size()<1){
  366 + recomendacaoListErros.add(r);
  367 + }else{
  368 + List<Criterio> criterios = new ArrayList<Criterio>();
  369 + for(Criterio c: r.getCriterios()){
  370 + if(c.getTipoTeste().getId().intValue()==CriterioAvaliado.TIPO_DESCRESCENTE && c.getFaixas().size()<1){
  371 + criterios.add(c);
  372 + }
  373 + }
  374 + r.setCriterios(criterios);
  375 + recomendacaoListErros.add(r);
  376 + }
  377 + }
  378 +
  379 +
  380 + result.include("recomendacaoList", recomendacaoListErros);
  381 +
  382 + return parametroCalculo;
  383 + }
  384 +
  385 + @Get("/parametroAtivo.xls")
  386 + public File exportarAtivo(){
  387 + Long id = dao.getLastParametrosCalculoAtivo().getId();
  388 + return exportar(id);
  389 + }
  390 +
  391 + @Get("/parametrosCalculo/exportar/{id}/*")
  392 + @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
  393 + public File exportar(Long id) {
  394 + File relatorio = new File("workbook.ods");
  395 + ParametroCalculo parametroCalculo = this.dao.load(id);
  396 + List<Recomendacao> recomendacaoList = new RecomendacaoDAO(
  397 + dao.getSession()).listAllAtivas(parametroCalculo);
  398 + String msgAtivacao="";
  399 +
  400 + if(parametroCalculo.getTsInicio() != null){
  401 + msgAtivacao = "Ativado em: "+parametroCalculo.getTsInicio()+".";
  402 + }
  403 + if(parametroCalculo.getTsFim() != null){
  404 + msgAtivacao = msgAtivacao +" Encerrado em: "+parametroCalculo.getTsFim();
  405 + }
  406 +
  407 + Workbook wb = new HSSFWorkbook();
  408 + FileOutputStream fileOut;
  409 +
  410 + Map<String, CellStyle> styles = createStyles(wb);
  411 + CreationHelper createHelper = wb.getCreationHelper();
  412 + Sheet sheet = wb.createSheet("new sheet");
  413 + sheet.setPrintGridlines(false);
  414 + sheet.setDisplayGridlines(false);
  415 +
  416 + short rows = 0;
  417 + Row row = sheet.createRow(rows);
  418 + Cell cell = row.createCell(0);
  419 + cell.setCellValue(createHelper.createRichTextString(parametroCalculo.getDescricao()));
  420 + cell.setCellStyle(styles.get("title"));
  421 + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
  422 + rows++;
  423 +
  424 + row = sheet.createRow(rows);
  425 + cell = row.createCell(0);
  426 + cell.setCellValue(createHelper.createRichTextString(msgAtivacao));
  427 + CellStyle style = wb.createCellStyle();
  428 + style.setAlignment(CellStyle.ALIGN_CENTER);
  429 + cell.setCellStyle(style);
  430 +
  431 + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$2:$L$2"));
  432 + rows += 3;
  433 +
  434 + for (Recomendacao recomendacao : recomendacaoList) {
  435 + row = sheet.createRow(rows);
  436 + cell = row.createCell(0);
  437 + cell.setCellValue(
  438 + createHelper.createRichTextString("Recomendação "
  439 + + recomendacao.getNumeroRecomendacao())
  440 + + ": " + recomendacao.getDescricao()
  441 + + " (Peso: "+recomendacao.getPeso()+")"
  442 + );
  443 + cell.setCellStyle(styles.get("subtitle"));
  444 + rows++;
  445 + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$"+rows+":$L$"+rows));
  446 +
  447 + /*
  448 + row = sheet.createRow(rows);
  449 + cell = row.createCell(1);
  450 + cell.setCellValue("Descrição");
  451 + cell.setCellStyle(styles.get("label"));
  452 + row.createCell(2).setCellValue(recomendacao.getDescricao());
  453 + rows++;
  454 +
  455 + row = sheet.createRow(rows);
  456 + cell = row.createCell(1);
  457 + cell.setCellValue("Peso");
  458 + cell.setCellStyle(styles.get("label"));
  459 + cell = row.createCell(2);
  460 + cell.setCellValue(recomendacao.getPeso());
  461 + cell.setCellStyle(styles.get("numeric"));
  462 + rows += 2;
  463 + */
  464 +
  465 + row = sheet.createRow(rows);
  466 + cell = row.createCell(1);
  467 + cell.setCellValue("Número Critério");
  468 + cell.setCellStyle(styles.get("label"));
  469 + cell = row.createCell(2);
  470 + cell.setCellValue("Peso");
  471 + cell.setCellStyle(styles.get("label"));
  472 + cell = row.createCell(3);
  473 + cell.setCellValue("Descrição");
  474 + cell.setCellStyle(styles.get("label"));
  475 + cell = row.createCell(4);
  476 + cell.setCellValue("Requisito");
  477 + cell.setCellStyle(styles.get("label"));
  478 + cell = row.createCell(5);
  479 + cell.setCellValue("Tipo de Verificação");
  480 + cell.setCellStyle(styles.get("label"));
  481 + cell = row.createCell(6);
  482 + cell.setCellValue("Tipo de Mensagem");
  483 + cell.setCellStyle(styles.get("label"));
  484 + rows++;
  485 +
  486 + for (Criterio criterio : recomendacao.getCriterios()) {
  487 + row = sheet.createRow(rows);
  488 + row.createCell(1).setCellValue(criterio.getNumeroCriterio());
  489 + row.createCell(2).setCellValue(criterio.getPeso());
  490 + row.createCell(3).setCellValue(criterio.getDescricao());
  491 +
  492 + row.createCell(4).setCellValue(criterio.getRequisito());
  493 +
  494 + String tipoVetificacao;
  495 + if(criterio.isVerificacaoAutomatica()){
  496 + tipoVetificacao = "Automática";
  497 + }else if(!criterio.isVerificacaoAutomatica()){
  498 + tipoVetificacao="Humana";
  499 + }else{
  500 + tipoVetificacao="";
  501 + }
  502 +
  503 + String tipoErro;
  504 + if(criterio.isErro()){
  505 + tipoErro = "Erro";
  506 + }else if(!criterio.isErro()){
  507 + tipoErro="Aviso";
  508 + }else{
  509 + tipoErro="";
  510 + }
  511 +
  512 + row.createCell(5).setCellValue(tipoVetificacao);
  513 + row.createCell(6).setCellValue(tipoErro);
  514 +
  515 + if(criterio.getTipoTeste().getId().intValue()==3){
  516 + rows++;
  517 + row = sheet.createRow(rows);
  518 + cell = row.createCell(2);
  519 + cell.setCellValue("Faixa");
  520 + cell.setCellStyle(styles.get("label"));
  521 + cell = row.createCell(3);
  522 + cell.setCellValue("Descrição");
  523 + cell.setCellStyle(styles.get("label"));
  524 + cell = row.createCell(4);
  525 + cell.setCellValue("Início");
  526 + cell.setCellStyle(styles.get("label"));
  527 + cell = row.createCell(5);
  528 + cell.setCellValue("Fim");
  529 + cell.setCellStyle(styles.get("label"));
  530 + cell = row.createCell(6);
  531 + cell.setCellValue("%");
  532 + cell.setCellStyle(styles.get("label"));
  533 + rows++;
  534 +
  535 + for(Faixa faixa:criterio.getFaixas()){
  536 + row = sheet.createRow(rows);
  537 + row.createCell(2).setCellValue(faixa.getFaixa());
  538 + row.createCell(3).setCellValue(faixa.getDescricao());
  539 + row.createCell(4).setCellValue(faixa.getFaixaInicio());
  540 + row.createCell(5).setCellValue(faixa.getFaixaFim());
  541 + row.createCell(6).setCellValue(faixa.getPercentualConformidade());
  542 + rows++;
  543 +
  544 + }
  545 +
  546 + }
  547 +
  548 +
  549 + rows++;
  550 + }
  551 +
  552 + rows += 2;
  553 + }
  554 +
  555 + try {
  556 + fileOut = new FileOutputStream(relatorio);
  557 + wb.write(fileOut);
  558 + } catch (FileNotFoundException e) {
  559 + e.printStackTrace();
  560 + } catch (IOException e) {
  561 + e.printStackTrace();
  562 + }
  563 +
  564 + return relatorio;
  565 + }
  566 +
  567 + private static Map<String, CellStyle> createStyles(Workbook wb) {
  568 + Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
  569 +
  570 + CellStyle style;
  571 + Font fontLargeBold = wb.createFont();
  572 + fontLargeBold.setFontHeightInPoints((short) 12);
  573 + fontLargeBold.setFontName("Arial");
  574 + fontLargeBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
  575 +
  576 + Font fontMediumBold = wb.createFont();
  577 + fontMediumBold.setFontHeightInPoints((short) 11);
  578 + fontMediumBold.setFontName("Arial");
  579 + fontMediumBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
  580 +
  581 + Font fontNormalBold = wb.createFont();
  582 + fontNormalBold.setFontHeightInPoints((short) 10);
  583 + fontNormalBold.setFontName("Arial");
  584 + fontNormalBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
  585 +
  586 + style = wb.createCellStyle();
  587 + style.setAlignment(CellStyle.ALIGN_CENTER);
  588 + style.setFont(fontLargeBold);
  589 + styles.put("title", style);
  590 +
  591 + style = wb.createCellStyle();
  592 + style.setAlignment(CellStyle.ALIGN_LEFT);
  593 + style.setFont(fontMediumBold);
  594 + style.setBorderBottom(CellStyle.BORDER_DOTTED);
  595 + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
  596 + styles.put("subtitle", style);
  597 +
  598 + style = wb.createCellStyle();
  599 + style.setAlignment(CellStyle.ALIGN_LEFT);
  600 + style.setFont(fontNormalBold);
  601 + styles.put("label", style);
  602 +
  603 + style = wb.createCellStyle();
  604 + style.setAlignment(CellStyle.ALIGN_LEFT);
  605 + style.setDataFormat(wb.createDataFormat().getFormat("0"));
  606 + styles.put("numeric", style);
  607 +
  608 + return styles;
  609 + }
  610 +}
613 611 \ No newline at end of file
... ...