diff --git a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp
index 6696478..592bb03 100644
--- a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp
+++ b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp
@@ -67,10 +67,10 @@
${parametroCalculo.usuario.nome} |
- " class="btn btn-default btn-sm">Relatório
" class="btn btn-default btn-sm">Consultar
" class="btn btn-default btn-sm btn-confirm" data-msg="Deseja realmente excluir o Parametro de Avaliação selecionado?">Excluir
+ " class="btn btn-default btn-sm">Exportar
|
diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java
index 386cf11..49d834e 100644
--- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java
+++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java
@@ -1,7 +1,24 @@
package br.com.eselo.controller;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.CellRangeAddress;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
@@ -17,7 +34,9 @@ import br.com.eselo.component.Messages;
import br.com.eselo.component.UsuarioWeb;
import br.com.eselo.dao.ParametroCalculoDAO;
import br.com.eselo.dao.RecomendacaoDAO;
+import br.com.eselo.model.Criterio;
import br.com.eselo.model.ParametroCalculo;
+import br.com.eselo.model.Recomendacao;
@Resource
public class ParametroCalculoController {
@@ -26,15 +45,15 @@ public class ParametroCalculoController {
private final Result result;
private final Validator validator;
private final UsuarioWeb usuarioWeb;
-
+
protected static final int MODO_ADD = 1;
protected static final int MODO_EDIT = 2;
protected static final int MODO_DELETE = 3;
protected static final int MODO_IMPORT = 4;
public ParametroCalculoController(ParametroCalculoDAO _dao,
- RecomendacaoDAO _daoRecomendacao, Result _result, Validator _validator,
- UsuarioWeb _usuarioWeb) {
+ RecomendacaoDAO _daoRecomendacao, Result _result,
+ Validator _validator, UsuarioWeb _usuarioWeb) {
dao = _dao;
result = _result;
validator = _validator;
@@ -49,24 +68,27 @@ public class ParametroCalculoController {
parametroCalculo.setTsInicio(new java.util.Date());
inserirParametroCalculo(parametroCalculo);
- result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
+ result.redirectTo(ParametroCalculoController.class)
+ .form(dao.getMaxId());
}
@Get("/parametrosCalculo/importar/")
@Restrito(descricao = "PARAMETRO_CALCULO_ADICIONAR")
public void importar(long idParametroCalculo) {
String mensagem;
- if(idParametroCalculo==0){
- criarNovoParametroCalculo(new ParametroCalculo(),MODO_ADD);
+ if (idParametroCalculo == 0) {
+ criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD);
mensagem = "Novo parâmetro criado [sem recomendações ou critérios associados]!";
- }else{
+ } else {
ParametroCalculo pc = dao.load(idParametroCalculo);
- this.criarNovoParametroCalculo(pc,MODO_IMPORT);
- mensagem = "Parâmetro de Cálculo criado com base no parametro "+pc.getDescricao()+" com sucesso.";
+ this.criarNovoParametroCalculo(pc, MODO_IMPORT);
+ mensagem = "Parâmetro de Cálculo criado com base no parametro "
+ + pc.getDescricao() + " com sucesso.";
}
-
+
result.include("mensagem", mensagem);
- result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId());
+ result.redirectTo(ParametroCalculoController.class)
+ .form(dao.getMaxId());
}
@Post("/parametrosCalculo")
@@ -103,7 +125,7 @@ public class ParametroCalculoController {
if (ultimo != null) {
ultimo.setTsFim(parametroCalculo.getTsInicio());
dao.update(ultimo);
- }else if (parametroCalculo.getDescricao() == null) {
+ } else if (parametroCalculo.getDescricao() == null) {
validator.add(new ValidationMessage(Messages
.getString("parametro_calculo.validacao.descricao"),
"parametroCalculo.descricao"));
@@ -116,10 +138,12 @@ public class ParametroCalculoController {
@Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
public void atualizar(ParametroCalculo parametroCalculo) {
- ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo.getId());
+ ParametroCalculo parametroCalculoCadastrado = dao.load(parametroCalculo
+ .getId());
parametroCalculoCadastrado.setTsFim(parametroCalculo.getTsFim());
parametroCalculoCadastrado.setUsuario(parametroCalculo.getUsuario());
- parametroCalculoCadastrado.setDescricao(parametroCalculo.getDescricao());
+ parametroCalculoCadastrado
+ .setDescricao(parametroCalculo.getDescricao());
if (parametroCalculo.getTsFim() != null) {
if (parametroCalculo.getTsFim().before(
@@ -129,48 +153,52 @@ public class ParametroCalculoController {
"O campo \"Fim\" deve ser maior que o campo \"Início\"!",
"parametroCalculo.tsFim"));
}
- }else if (parametroCalculo.getDescricao() == null) {
+ } else if (parametroCalculo.getDescricao() == null) {
validator.add(new ValidationMessage(Messages
.getString("parametro_calculo.validacao.descricao"),
"parametroCalculo.descricao"));
}
- // result.include("usuarioList", dao.getAllUsuarios());
- // result.include("recomendacaoList", new RecomendacaoDAO(dao.getSession()).listAllAtivas(this.dao.load(parametroCalculo.getId())));
- System.err.println(parametroCalculo.getId()+"Id do parametro de calculo");
-
- validator.onErrorUsePageOf(ParametroCalculoController.class).form(parametroCalculo.getId());
+ // result.include("usuarioList", dao.getAllUsuarios());
+ // result.include("recomendacaoList", new
+ // RecomendacaoDAO(dao.getSession()).listAllAtivas(this.dao.load(parametroCalculo.getId())));
+ System.err.println(parametroCalculo.getId()
+ + "Id do parametro de calculo");
+
+ validator.onErrorUsePageOf(ParametroCalculoController.class).form(
+ parametroCalculo.getId());
dao.saveOrUpdate(parametroCalculoCadastrado);
- result.include("mensagem",
- "Parâmetro de Cálculo alterado com sucesso.");
+ result.include("mensagem", "Parâmetro de Cálculo alterado com sucesso.");
result.redirectTo(ParametroCalculoController.class).index(1);
}
@Path("/parametrosCalculo/delete/{id}")
@Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR")
public void excluir(Long id) {
-
- if(dao.listAll().size()>1){
+ if (dao.listAll().size() > 1) {
ParametroCalculo pa = dao.load(id);
- if((pa.getTsFim()==null)){
- dao.remove(id);
-
- pa = dao.getLastParametrosCalculo();
- pa.setTsFim(null);
- dao.update(pa);
- result.include("mensagem", "Parametro de Cálculo excluído com sucesso.");
- }else{
- result.include("mensagem", "Parametro de Cálculo não pode ser excluído pois não está ativo.");
+ if ((pa.getTsFim() == null)) {
+ dao.remove(id);
+
+ pa = dao.getLastParametrosCalculo();
+ pa.setTsFim(null);
+ dao.update(pa);
+ result.include("mensagem",
+ "Parametro de Cálculo excluído com sucesso.");
+ } else {
+ result.include("mensagem",
+ "Parametro de Cálculo não pode ser excluído pois não está ativo.");
}
- }else{
- result.include("mensagem", "Este é o único Parametro de Cálculo cadastrado e ele não pode ser excluído.");
+ } else {
+ result.include("mensagem",
+ "Este é o único Parametro de Cálculo cadastrado e ele não pode ser excluído.");
}
-
+
result.redirectTo(ParametroCalculoController.class).lista();
}
-
+
@Get("/parametrosCalculo")
@Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
public List lista() {
@@ -225,13 +253,15 @@ public class ParametroCalculoController {
result.include("parametroCalculo", parametroCalculo);
return dao.listAll(parametroCalculo);
}
-
+
@Get("/parametrosCalculo/atualizar/{id}")
@Restrito(descricao = "PARAMETRO_CALCULO_ATUALIZAR")
public ParametroCalculo form(Long id) {
ParametroCalculo parametroCalculo = this.dao.load(id);
result.include("usuarioList", dao.getAllUsuarios());
- result.include("recomendacaoList", new RecomendacaoDAO(dao.getSession()).listAllAtivas(parametroCalculo));
+ result.include("recomendacaoList",
+ new RecomendacaoDAO(dao.getSession())
+ .listAllAtivas(parametroCalculo));
return parametroCalculo;
}
@@ -244,37 +274,168 @@ public class ParametroCalculoController {
result.include("parametroCalculo", parametroCalculo);
}
- private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo, int tipo) {
-
+ private void criarNovoParametroCalculo(ParametroCalculo parametroCalculo,
+ int tipo) {
boolean ok = false;
switch (tipo) {
- case ParametroCalculoController.MODO_ADD:
- parametroCalculo.setId(0L);
- ok=true;
- break;
-
- case ParametroCalculoController.MODO_IMPORT:
- ok=true;
- break;
+ case ParametroCalculoController.MODO_ADD:
+ parametroCalculo.setId(0L);
+ ok = true;
+ break;
+
+ case ParametroCalculoController.MODO_IMPORT:
+ ok = true;
+ break;
}
-
- if(ok){
- new CopiadorParametroCalculo().criarNovoParametroCalculo(parametroCalculo, usuarioWeb, dao.getSession());
- }
-
-
-
+
+ if (ok) {
+ new CopiadorParametroCalculo().criarNovoParametroCalculo(
+ parametroCalculo, usuarioWeb, dao.getSession());
+ }
+
}
-
+
@Get("/parametrosCalculo/relatorio/{id}")
@Restrito(descricao = "PARAMETRO_CALCULO_RELATORIO")
public ParametroCalculo relatorio(Long id) {
ParametroCalculo parametroCalculo = this.dao.load(id);
result.include("usuarioList", dao.getAllUsuarios());
- result.include("recomendacaoList", new RecomendacaoDAO(dao.getSession()).listAllAtivas(parametroCalculo));
+ result.include("recomendacaoList",
+ new RecomendacaoDAO(dao.getSession())
+ .listAllAtivas(parametroCalculo));
return parametroCalculo;
}
+ @Get("/parametrosCalculo/exportar/{id}/*")
+ @Restrito(descricao = "PARAMETRO_CALCULO_LISTA")
+ public File exportar(Long id) {
+ File relatorio = new File("workbook.ods");
+ ParametroCalculo parametroCalculo = this.dao.load(id);
+ List recomendacaoList = new RecomendacaoDAO(
+ dao.getSession()).listAllAtivas(parametroCalculo);
+
+ Workbook wb = new HSSFWorkbook();
+ FileOutputStream fileOut;
+
+ Map styles = createStyles(wb);
+ CreationHelper createHelper = wb.getCreationHelper();
+ Sheet sheet = wb.createSheet("new sheet");
+ sheet.setPrintGridlines(false);
+ sheet.setDisplayGridlines(false);
+
+ short rows = 0;
+ Row row = sheet.createRow(rows);
+ Cell cell = row.createCell(0);
+ cell.setCellValue(createHelper.createRichTextString(parametroCalculo
+ .getDescricao()));
+ cell.setCellStyle(styles.get("title"));
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
+ rows += 3;
+
+ for (Recomendacao recomendacao : recomendacaoList) {
+ row = sheet.createRow(rows);
+ cell = row.createCell(0);
+ cell.setCellValue(
+ createHelper.createRichTextString("Recomendação "
+ + recomendacao.getNumeroRecomendacao()));
+ cell.setCellStyle(styles.get("subtitle"));
+ rows++;
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$A$"+rows+":$L$"+rows));
+
+ row = sheet.createRow(rows);
+ cell = row.createCell(1);
+ cell.setCellValue("Descrição");
+ cell.setCellStyle(styles.get("label"));
+ row.createCell(2).setCellValue(recomendacao.getDescricao());
+ rows++;
+
+ row = sheet.createRow(rows);
+ cell = row.createCell(1);
+ cell.setCellValue("Peso");
+ cell.setCellStyle(styles.get("label"));
+ cell = row.createCell(2);
+ cell.setCellValue(recomendacao.getPeso());
+ cell.setCellStyle(styles.get("numeric"));
+ rows += 2;
+
+ row = sheet.createRow(rows);
+ cell = row.createCell(1);
+ cell.setCellValue("Código");
+ cell.setCellStyle(styles.get("label"));
+ cell = row.createCell(2);
+ cell.setCellValue("Peso");
+ cell.setCellStyle(styles.get("label"));
+ cell = row.createCell(3);
+ cell.setCellValue("Critério");
+ cell.setCellStyle(styles.get("label"));
+ rows++;
+
+ for (Criterio criterio : recomendacao.getCriterios()) {
+ row = sheet.createRow(rows);
+ row.createCell(1).setCellValue(criterio.getNumeroCriterio());
+ row.createCell(2).setCellValue(criterio.getPeso());
+ row.createCell(3).setCellValue(criterio.getDescricao());
+ rows++;
+ }
+
+ rows += 2;
+ }
+
+ try {
+ fileOut = new FileOutputStream(relatorio);
+ wb.write(fileOut);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ return relatorio;
+ }
+
+ private static Map createStyles(Workbook wb) {
+ Map styles = new HashMap();
+
+ CellStyle style;
+ Font fontLargeBold = wb.createFont();
+ fontLargeBold.setFontHeightInPoints((short) 12);
+ fontLargeBold.setFontName("Arial");
+ fontLargeBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
+
+ Font fontMediumBold = wb.createFont();
+ fontMediumBold.setFontHeightInPoints((short) 11);
+ fontMediumBold.setFontName("Arial");
+ fontMediumBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
+
+ Font fontNormalBold = wb.createFont();
+ fontNormalBold.setFontHeightInPoints((short) 10);
+ fontNormalBold.setFontName("Arial");
+ fontNormalBold.setBoldweight(Font.BOLDWEIGHT_BOLD);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFont(fontLargeBold);
+ styles.put("title", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(fontMediumBold);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ styles.put("subtitle", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(fontNormalBold);
+ styles.put("label", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setDataFormat(wb.createDataFormat().getFormat("0"));
+ styles.put("numeric", style);
+
+ return styles;
+ }
}
diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ParametroCalculo.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ParametroCalculo.java
index 08478dc..087665a 100644
--- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ParametroCalculo.java
+++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/model/ParametroCalculo.java
@@ -23,6 +23,8 @@ import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.ForeignKey;
+import br.com.eselo.component.Util;
+
@Entity
@Table(name = "sel_parametro_calculo")
public class ParametroCalculo {
@@ -30,7 +32,7 @@ public class ParametroCalculo {
public ParametroCalculo() {
this.recomendacoes = new ArrayList();
}
-
+
@Id
@SequenceGenerator(name = "sel_parametro_calculo_id_parametro_calculo_seq", sequenceName = "sel_parametro_calculo_id_parametro_calculo_seq")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "sel_parametro_calculo_id_parametro_calculo_seq")
@@ -44,7 +46,7 @@ public class ParametroCalculo {
@Column(name = "ts_fim", columnDefinition = "timestamp without time zone")
@Temporal(TemporalType.TIMESTAMP)
private Date tsFim;
-
+
@Column(name = "ds_descricao", nullable = false)
private String descricao;
@@ -56,7 +58,7 @@ public class ParametroCalculo {
@OneToMany(mappedBy = "parametroCalculo", targetEntity = br.com.eselo.model.Recomendacao.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List recomendacoes;
-
+
@OneToMany(mappedBy = "parametroCalculo", targetEntity = br.com.eselo.model.Avaliacao.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List avaliacoes;
@@ -67,15 +69,14 @@ public class ParametroCalculo {
public void setAvaliacoes(List avaliacoes) {
this.avaliacoes = avaliacoes;
}
-
- public void addAvaliacao(Avaliacao avaliacao){
+
+ public void addAvaliacao(Avaliacao avaliacao) {
this.avaliacoes.add(avaliacao);
}
-
- public void removeAvaliacao(Avaliacao avaliacao){
+
+ public void removeAvaliacao(Avaliacao avaliacao) {
this.avaliacoes.remove(avaliacao);
}
-
public List getRecomendacoes() {
return recomendacoes;
@@ -85,14 +86,14 @@ public class ParametroCalculo {
this.recomendacoes = recomendacoes;
}
- public void addRecomendacao(Recomendacao recomendacao){
+ public void addRecomendacao(Recomendacao recomendacao) {
this.recomendacoes.add(recomendacao);
}
-
- public void removeRecomendacao(Recomendacao recomendacao){
+
+ public void removeRecomendacao(Recomendacao recomendacao) {
this.recomendacoes.remove(recomendacao);
}
-
+
public Long getId() {
return id;
}
@@ -124,7 +125,7 @@ public class ParametroCalculo {
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
-
+
public String getDescricao() {
return descricao;
}
@@ -132,4 +133,9 @@ public class ParametroCalculo {
public void setDescricao(String descricao) {
this.descricao = descricao;
}
+
+ public String getSlug() {
+ return Util.toSlug(descricao);
+ }
+
}
--
libgit2 0.21.2