diff --git a/WebContent/WEB-INF/jsp/questionario/questionario.jsp b/WebContent/WEB-INF/jsp/questionario/questionario.jsp index ddbbdd7..a1270d2 100644 --- a/WebContent/WEB-INF/jsp/questionario/questionario.jsp +++ b/WebContent/WEB-INF/jsp/questionario/questionario.jsp @@ -53,8 +53,9 @@ table, th, td {
+
- +
@@ -67,6 +68,7 @@ table, th, td { + @@ -103,14 +105,14 @@ table, th, td { - +
Nº Linha OrgãoData Relatório Respondido Relatório Respondido Plano de Trabalho Enviadodownload Plano de Trabalho
Recuperar
- + diff --git a/src/br/com/controller/PlanoTrabalhoController.java b/src/br/com/controller/PlanoTrabalhoController.java index 21b7105..38cf728 100644 --- a/src/br/com/controller/PlanoTrabalhoController.java +++ b/src/br/com/controller/PlanoTrabalhoController.java @@ -1,8 +1,17 @@ package br.com.controller; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.sql.ResultSet; + import javax.servlet.ServletContext; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.Validator; @@ -43,7 +52,8 @@ public class PlanoTrabalhoController { String tipoArquivo = file.getContentType(); String mensagem = "Não foi possível enviar o plano de trabalho!"; boolean status = false; - + int idPlanoTrabalho = -1; + if (!tipoArquivo.equalsIgnoreCase("application/msword") && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") @@ -64,15 +74,29 @@ public class PlanoTrabalhoController { if (questionario != null && questionario.getDtInicioQuestionario() != null) { PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); - - if (planoTrabalhoDao.salvarPlanoTrabalho(valorHash, file.getFile(), questionario)) { - mensagem = "Plano de trabalho enviado com sucesso!"; - status = true; - } - - else { - mensagem = "Não foi possível enviar o plano de trabalho!"; + + idPlanoTrabalho = planoTrabalhoDao.verificaPlanoTrabalho(path, questionario.getIdQuestionario()); + + if(idPlanoTrabalho == -1) + { + if (planoTrabalhoDao.salvarPlanoTrabalho(path, file.getFile(), questionario)) { + mensagem = "Plano de trabalho enviado com sucesso!"; + status = true; + } + else { + mensagem = "Não foi possível enviar o plano de trabalho!"; + } + }else + { + if (planoTrabalhoDao.atualizarPlanoTrabalho(path, file.getFile(), questionario, idPlanoTrabalho)) { + mensagem = "Plano de trabalho enviado com sucesso!"; + status = true; + } + else { + mensagem = "Não foi possível enviar o plano de trabalho!"; + } } + } else { @@ -84,4 +108,35 @@ public class PlanoTrabalhoController { this.validator.add(new ValidationMessage("", "")); this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).planoTrabalhoConfirmacao(); } + + @Get("/recuperar-plano-trabalho/{id}") + public void recuperarPlanoTrabalho(int id, HttpServletResponse response)throws IOException { + +Questionario questionario = new Questionario(path, id); + + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); + + byte[] dados = null; + + if(questionario != null && questionario.getIdQuestionario() > 0) + { + dados = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); + } + + String nome = "plano de trabalho"; + //FileOutputStream fileOut = new FileOutputStream(nome); + //fileOut.write(dados); + //fileOut.flush(); + //fileOut.close(); + response.setContentType("inline/download"); + String arq = "attachment;filename=" + nome; + response.setHeader("Content-Disposition", arq); + ServletOutputStream os = response.getOutputStream(); + os.write(dados); + os.flush(); + os.close(); + + + + } } diff --git a/src/br/com/dao/PlanoTrabalhoDao.java b/src/br/com/dao/PlanoTrabalhoDao.java index f98ba66..30f322e 100644 --- a/src/br/com/dao/PlanoTrabalhoDao.java +++ b/src/br/com/dao/PlanoTrabalhoDao.java @@ -1,18 +1,24 @@ package br.com.dao; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.PrintStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.Properties; import br.com.model.entity.Questionario; +import br.com.model.utilities.ManagerProperties; public class PlanoTrabalhoDao { - public boolean verificaPlanoTrabalho(String path, Integer idQuestionario) + public int verificaPlanoTrabalho(String path, Integer idQuestionario) { @@ -21,6 +27,8 @@ public class PlanoTrabalhoDao { Statement estado; ResultSet rset = null; boolean existePlanoTrabalho = false; + int idPlanoTrabalho = -1; + try { estado = con.createStatement(); @@ -31,7 +39,7 @@ public class PlanoTrabalhoDao { rset = estado.executeQuery(sql); while (rset.next()) { - existePlanoTrabalho = true; + idPlanoTrabalho = rset.getInt("id_plano_trabalho"); } } catch (SQLException e) { @@ -48,7 +56,7 @@ public class PlanoTrabalhoDao { } } - return existePlanoTrabalho; + return idPlanoTrabalho; } public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario) @@ -86,5 +94,84 @@ public class PlanoTrabalhoDao { return salvoComSucesso; } + + public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho) + { + + StringBuffer sql = new StringBuffer(); + Connection con = Conexao.conecta(path); + PreparedStatement estado; + int resultado = 0; + boolean salvoComSucesso = false; + + try { + + sql = new StringBuffer(); + //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); "); + sql.append(" UPDATE public.plano_trabalho"); + sql.append(" SET arquivo_plano_trabalho=?"); + sql.append(" WHERE id_plano_trabalho= "+ idPlanoTrabalho +";"); + + estado = con.prepareStatement(sql.toString()); + + //estado.setInt(1, questionario.getIdQuestionario()); + estado.setBinaryStream(1, file); + + resultado = estado.executeUpdate(); + + if (resultado == 0) { + salvoComSucesso = false; + } else { + + salvoComSucesso = true; + } + + } catch (SQLException e) { + + e.printStackTrace(); + } + + return salvoComSucesso; + } + + public byte[] recuperarPlanoTrabalho(String path, Questionario questionario) + { + + + String sql = ""; + Connection con = Conexao.conecta(path); + Statement estado; + ResultSet rset = null; + byte[] imgBytes = null; + + try { + + + estado = con.createStatement(); + + estado.execute(sql.toString()); + sql = "SELECT * FROM public.plano_trabalho where id_questionario =" + questionario.getIdQuestionario() + ";" ; + + rset = estado.executeQuery(sql); + + while (rset.next()) { + imgBytes = rset.getBytes("arquivo_plano_trabalho"); + } + + } catch (SQLException e) { + System.out.println("Deu erro!"); + e.printStackTrace(); + } finally { + if (con != null) { + try { + con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + return imgBytes; + } } diff --git a/src/br/com/dao/QuestionarioDao.java b/src/br/com/dao/QuestionarioDao.java index f254d49..eecc5d8 100644 --- a/src/br/com/dao/QuestionarioDao.java +++ b/src/br/com/dao/QuestionarioDao.java @@ -68,7 +68,7 @@ public class QuestionarioDao { questionario.setDataRespostaQuestionario(respostaQuestionarioDao.verificaRespostaQuestionario(path, rset.getInt("id_questionario"))); - questionario.setPlanoTrabalhoEnviado(planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario"))); + questionario.setPlanoTrabalhoEnviado( planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario")) > -1 ? true : false); listaQuestionario.add(questionario); } -- libgit2 0.21.2