Commit c8d1f4f9fe8a454f18635760ac7ce27dbaf11349
1 parent
a646d246
Exists in
master
Recuperação do plano de trabalho.
Showing
4 changed files
with
160 additions
and
16 deletions
Show diff stats
WebContent/WEB-INF/jsp/questionario/questionario.jsp
... | ... | @@ -53,8 +53,9 @@ table, th, td { |
53 | 53 | </fieldset> |
54 | 54 | </form> |
55 | 55 | <br> |
56 | + | |
56 | 57 | <label>Total de solicitações: <span>${totalSolicitacoes}</span></label><br> |
57 | - <table> | |
58 | + <table id="questionarios"> | |
58 | 59 | <tr> |
59 | 60 | <th>Nº Linha</th> |
60 | 61 | <th>Orgão</th> |
... | ... | @@ -67,6 +68,7 @@ table, th, td { |
67 | 68 | <th>Data Relatório Respondido</th> |
68 | 69 | <th>Relatório Respondido</th> |
69 | 70 | <th>Plano de Trabalho Enviado</th> |
71 | + <th>download Plano de Trabalho</th> | |
70 | 72 | |
71 | 73 | </tr> |
72 | 74 | |
... | ... | @@ -103,14 +105,14 @@ table, th, td { |
103 | 105 | <c:if test="${questionario.planoTrabalhoEnviado == false}"> |
104 | 106 | <td><input type="checkbox" disabled="disabled"> </td> |
105 | 107 | </c:if> |
106 | - | |
108 | + <td><a href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Recuperar</a></td> | |
107 | 109 | </tr> |
108 | 110 | |
109 | 111 | </c:forEach> |
110 | 112 | </c:if> |
111 | 113 | |
112 | 114 | </table> |
113 | - | |
115 | +<!-- <a href="${pageContext.request.contextPath}/recuperar-plano-trabalho">Recuperar Plano de Trabalho</a>--> | |
114 | 116 | </body> |
115 | 117 | |
116 | 118 | ... | ... |
src/br/com/controller/PlanoTrabalhoController.java
1 | 1 | package br.com.controller; |
2 | 2 | |
3 | +import java.io.FileOutputStream; | |
4 | +import java.io.IOException; | |
5 | +import java.io.InputStream; | |
6 | +import java.sql.ResultSet; | |
7 | + | |
3 | 8 | import javax.servlet.ServletContext; |
9 | +import javax.servlet.ServletOutputStream; | |
10 | +import javax.servlet.http.HttpServletResponse; | |
4 | 11 | |
12 | +import br.com.caelum.vraptor.Get; | |
5 | 13 | import br.com.caelum.vraptor.Path; |
14 | +import br.com.caelum.vraptor.Post; | |
6 | 15 | import br.com.caelum.vraptor.Resource; |
7 | 16 | import br.com.caelum.vraptor.Result; |
8 | 17 | import br.com.caelum.vraptor.Validator; |
... | ... | @@ -43,7 +52,8 @@ public class PlanoTrabalhoController { |
43 | 52 | String tipoArquivo = file.getContentType(); |
44 | 53 | String mensagem = "Não foi possível enviar o plano de trabalho!"; |
45 | 54 | boolean status = false; |
46 | - | |
55 | + int idPlanoTrabalho = -1; | |
56 | + | |
47 | 57 | if (!tipoArquivo.equalsIgnoreCase("application/msword") |
48 | 58 | && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") |
49 | 59 | && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") |
... | ... | @@ -64,15 +74,29 @@ public class PlanoTrabalhoController { |
64 | 74 | |
65 | 75 | if (questionario != null && questionario.getDtInicioQuestionario() != null) { |
66 | 76 | PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); |
67 | - | |
68 | - if (planoTrabalhoDao.salvarPlanoTrabalho(valorHash, file.getFile(), questionario)) { | |
69 | - mensagem = "Plano de trabalho enviado com sucesso!"; | |
70 | - status = true; | |
71 | - } | |
72 | - | |
73 | - else { | |
74 | - mensagem = "Não foi possível enviar o plano de trabalho!"; | |
77 | + | |
78 | + idPlanoTrabalho = planoTrabalhoDao.verificaPlanoTrabalho(path, questionario.getIdQuestionario()); | |
79 | + | |
80 | + if(idPlanoTrabalho == -1) | |
81 | + { | |
82 | + if (planoTrabalhoDao.salvarPlanoTrabalho(path, file.getFile(), questionario)) { | |
83 | + mensagem = "Plano de trabalho enviado com sucesso!"; | |
84 | + status = true; | |
85 | + } | |
86 | + else { | |
87 | + mensagem = "Não foi possível enviar o plano de trabalho!"; | |
88 | + } | |
89 | + }else | |
90 | + { | |
91 | + if (planoTrabalhoDao.atualizarPlanoTrabalho(path, file.getFile(), questionario, idPlanoTrabalho)) { | |
92 | + mensagem = "Plano de trabalho enviado com sucesso!"; | |
93 | + status = true; | |
94 | + } | |
95 | + else { | |
96 | + mensagem = "Não foi possível enviar o plano de trabalho!"; | |
97 | + } | |
75 | 98 | } |
99 | + | |
76 | 100 | } |
77 | 101 | else |
78 | 102 | { |
... | ... | @@ -84,4 +108,35 @@ public class PlanoTrabalhoController { |
84 | 108 | this.validator.add(new ValidationMessage("", "")); |
85 | 109 | this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).planoTrabalhoConfirmacao(); |
86 | 110 | } |
111 | + | |
112 | + @Get("/recuperar-plano-trabalho/{id}") | |
113 | + public void recuperarPlanoTrabalho(int id, HttpServletResponse response)throws IOException { | |
114 | + | |
115 | +Questionario questionario = new Questionario(path, id); | |
116 | + | |
117 | + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); | |
118 | + | |
119 | + byte[] dados = null; | |
120 | + | |
121 | + if(questionario != null && questionario.getIdQuestionario() > 0) | |
122 | + { | |
123 | + dados = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); | |
124 | + } | |
125 | + | |
126 | + String nome = "plano de trabalho"; | |
127 | + //FileOutputStream fileOut = new FileOutputStream(nome); | |
128 | + //fileOut.write(dados); | |
129 | + //fileOut.flush(); | |
130 | + //fileOut.close(); | |
131 | + response.setContentType("inline/download"); | |
132 | + String arq = "attachment;filename=" + nome; | |
133 | + response.setHeader("Content-Disposition", arq); | |
134 | + ServletOutputStream os = response.getOutputStream(); | |
135 | + os.write(dados); | |
136 | + os.flush(); | |
137 | + os.close(); | |
138 | + | |
139 | + | |
140 | + | |
141 | + } | |
87 | 142 | } | ... | ... |
src/br/com/dao/PlanoTrabalhoDao.java
1 | 1 | package br.com.dao; |
2 | 2 | |
3 | +import java.io.FileNotFoundException; | |
4 | +import java.io.FileOutputStream; | |
5 | +import java.io.IOException; | |
3 | 6 | import java.io.InputStream; |
7 | +import java.io.PrintStream; | |
4 | 8 | import java.sql.Connection; |
5 | 9 | import java.sql.PreparedStatement; |
6 | 10 | import java.sql.ResultSet; |
7 | 11 | import java.sql.SQLException; |
8 | 12 | import java.sql.Statement; |
13 | +import java.util.Properties; | |
9 | 14 | |
10 | 15 | import br.com.model.entity.Questionario; |
16 | +import br.com.model.utilities.ManagerProperties; | |
11 | 17 | |
12 | 18 | public class PlanoTrabalhoDao { |
13 | 19 | |
14 | 20 | |
15 | - public boolean verificaPlanoTrabalho(String path, Integer idQuestionario) | |
21 | + public int verificaPlanoTrabalho(String path, Integer idQuestionario) | |
16 | 22 | { |
17 | 23 | |
18 | 24 | |
... | ... | @@ -21,6 +27,8 @@ public class PlanoTrabalhoDao { |
21 | 27 | Statement estado; |
22 | 28 | ResultSet rset = null; |
23 | 29 | boolean existePlanoTrabalho = false; |
30 | + int idPlanoTrabalho = -1; | |
31 | + | |
24 | 32 | try { |
25 | 33 | |
26 | 34 | estado = con.createStatement(); |
... | ... | @@ -31,7 +39,7 @@ public class PlanoTrabalhoDao { |
31 | 39 | rset = estado.executeQuery(sql); |
32 | 40 | |
33 | 41 | while (rset.next()) { |
34 | - existePlanoTrabalho = true; | |
42 | + idPlanoTrabalho = rset.getInt("id_plano_trabalho"); | |
35 | 43 | } |
36 | 44 | |
37 | 45 | } catch (SQLException e) { |
... | ... | @@ -48,7 +56,7 @@ public class PlanoTrabalhoDao { |
48 | 56 | } |
49 | 57 | } |
50 | 58 | |
51 | - return existePlanoTrabalho; | |
59 | + return idPlanoTrabalho; | |
52 | 60 | } |
53 | 61 | |
54 | 62 | public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario) |
... | ... | @@ -86,5 +94,84 @@ public class PlanoTrabalhoDao { |
86 | 94 | |
87 | 95 | return salvoComSucesso; |
88 | 96 | } |
97 | + | |
98 | + public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho) | |
99 | + { | |
100 | + | |
101 | + StringBuffer sql = new StringBuffer(); | |
102 | + Connection con = Conexao.conecta(path); | |
103 | + PreparedStatement estado; | |
104 | + int resultado = 0; | |
105 | + boolean salvoComSucesso = false; | |
106 | + | |
107 | + try { | |
108 | + | |
109 | + sql = new StringBuffer(); | |
110 | + //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); "); | |
111 | + sql.append(" UPDATE public.plano_trabalho"); | |
112 | + sql.append(" SET arquivo_plano_trabalho=?"); | |
113 | + sql.append(" WHERE id_plano_trabalho= "+ idPlanoTrabalho +";"); | |
114 | + | |
115 | + estado = con.prepareStatement(sql.toString()); | |
116 | + | |
117 | + //estado.setInt(1, questionario.getIdQuestionario()); | |
118 | + estado.setBinaryStream(1, file); | |
119 | + | |
120 | + resultado = estado.executeUpdate(); | |
121 | + | |
122 | + if (resultado == 0) { | |
123 | + salvoComSucesso = false; | |
124 | + } else { | |
125 | + | |
126 | + salvoComSucesso = true; | |
127 | + } | |
128 | + | |
129 | + } catch (SQLException e) { | |
130 | + | |
131 | + e.printStackTrace(); | |
132 | + } | |
133 | + | |
134 | + return salvoComSucesso; | |
135 | + } | |
136 | + | |
137 | + public byte[] recuperarPlanoTrabalho(String path, Questionario questionario) | |
138 | + { | |
139 | + | |
140 | + | |
141 | + String sql = ""; | |
142 | + Connection con = Conexao.conecta(path); | |
143 | + Statement estado; | |
144 | + ResultSet rset = null; | |
145 | + byte[] imgBytes = null; | |
146 | + | |
147 | + try { | |
148 | + | |
149 | + | |
150 | + estado = con.createStatement(); | |
151 | + | |
152 | + estado.execute(sql.toString()); | |
153 | + sql = "SELECT * FROM public.plano_trabalho where id_questionario =" + questionario.getIdQuestionario() + ";" ; | |
154 | + | |
155 | + rset = estado.executeQuery(sql); | |
156 | + | |
157 | + while (rset.next()) { | |
158 | + imgBytes = rset.getBytes("arquivo_plano_trabalho"); | |
159 | + } | |
160 | + | |
161 | + } catch (SQLException e) { | |
162 | + System.out.println("Deu erro!"); | |
163 | + e.printStackTrace(); | |
164 | + } finally { | |
165 | + if (con != null) { | |
166 | + try { | |
167 | + con.close(); | |
168 | + } catch (SQLException e) { | |
169 | + e.printStackTrace(); | |
170 | + } | |
171 | + } | |
172 | + } | |
173 | + | |
174 | + return imgBytes; | |
175 | + } | |
89 | 176 | |
90 | 177 | } | ... | ... |
src/br/com/dao/QuestionarioDao.java
... | ... | @@ -68,7 +68,7 @@ public class QuestionarioDao { |
68 | 68 | |
69 | 69 | |
70 | 70 | questionario.setDataRespostaQuestionario(respostaQuestionarioDao.verificaRespostaQuestionario(path, rset.getInt("id_questionario"))); |
71 | - questionario.setPlanoTrabalhoEnviado(planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario"))); | |
71 | + questionario.setPlanoTrabalhoEnviado( planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario")) > -1 ? true : false); | |
72 | 72 | listaQuestionario.add(questionario); |
73 | 73 | |
74 | 74 | } | ... | ... |