diff --git a/WebContent/WEB-INF/jsp/formularioOrgao/formularioOrgao.jsp b/WebContent/WEB-INF/jsp/formularioOrgao/formularioOrgao.jsp index 27290e8..7e7316f 100644 --- a/WebContent/WEB-INF/jsp/formularioOrgao/formularioOrgao.jsp +++ b/WebContent/WEB-INF/jsp/formularioOrgao/formularioOrgao.jsp @@ -43,13 +43,13 @@
Responsável pelo Preenchimento -

+

-

+

-

+

- +

diff --git a/WebContent/WEB-INF/jsp/login/login.jsp b/WebContent/WEB-INF/jsp/login/login.jsp index 4c99e57..be76c01 100644 --- a/WebContent/WEB-INF/jsp/login/login.jsp +++ b/WebContent/WEB-INF/jsp/login/login.jsp @@ -77,7 +77,7 @@
Entrar
-
+

diff --git a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp index d832469..b8f5d64 100644 --- a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp +++ b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp @@ -32,7 +32,7 @@ Plano de Trabalho

- +

diff --git a/WebContent/WEB-INF/mail.properties b/WebContent/WEB-INF/mail.properties index 8d03f42..1136fcb 100644 --- a/WebContent/WEB-INF/mail.properties +++ b/WebContent/WEB-INF/mail.properties @@ -7,4 +7,4 @@ prop.email.authpass = "" prop.email.auth = false prop.email.to = govbr@planejamento.gov.br prop.email.from = govbr@planejamento.gov.br -prop.email.copiaEmailTo = gibran.sodre@planejamento.gov.br \ No newline at end of file +prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br \ No newline at end of file diff --git a/WebContent/WEB-INF/respostaFormulario.properties b/WebContent/WEB-INF/respostaFormulario.properties index cb9316a..f2c1b31 100644 --- a/WebContent/WEB-INF/respostaFormulario.properties +++ b/WebContent/WEB-INF/respostaFormulario.properties @@ -1,5 +1,5 @@ -dataInicio = 2016-10-01 -dataFim = 2016-12-31 +dataInicio = 2016-11-21 +dataFim = 2017-01-02 enderecoFad = http://fad.governoeletronico.gov.br/fad enderecoContato= http://fad.governoeletronico.gov.br/fad/contato/contato-site emailContato = govbr@planejamento.gov.br diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index 316b8af..929eed4 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -1,20 +1,26 @@ - + Formulario Acessibilidade + vraptor br.com.caelum.vraptor.VRaptor - - br.com.caelum.vraptor.encoding - UTF-8 - + + + br.com.caelum.vraptor.encoding + UTF-8 + + + Limite máximo em bytes + br.com.caelum.vraptor.interceptor.multipart.UPLOAD_SIZE_LIMIT + 52428800 + + vraptor /* FORWARD REQUEST - - \ No newline at end of file diff --git a/src/br/com/controller/PlanoTrabalhoController.java b/src/br/com/controller/PlanoTrabalhoController.java index 38cf728..43b0c73 100644 --- a/src/br/com/controller/PlanoTrabalhoController.java +++ b/src/br/com/controller/PlanoTrabalhoController.java @@ -1,9 +1,6 @@ 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; @@ -11,18 +8,20 @@ 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; +import br.com.caelum.vraptor.interceptor.multipart.DefaultMultipartConfig; import br.com.caelum.vraptor.interceptor.multipart.UploadedFile; import br.com.caelum.vraptor.validator.ValidationMessage; import br.com.dao.HashDao; import br.com.dao.PlanoTrabalhoDao; +import br.com.model.entity.PlanoTrabalho; import br.com.model.entity.Questionario; + @Resource -public class PlanoTrabalhoController { +public class PlanoTrabalhoController extends DefaultMultipartConfig { private Validator validator; private Result result; @@ -35,6 +34,11 @@ public class PlanoTrabalhoController { this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties"; this.result = result; } + + // alteramos o tamanho total do upload para 50MB + public long getSizeLimit() { + return 50 * 1024 * 1024; + } @Path("/planoTrabalho-site") public void planoTrabalho() { @@ -46,97 +50,105 @@ public class PlanoTrabalhoController { } - @Path("/salvar-plano-trabalho") + + @Path("/salvar-plano-trabalho") public void enviarPlanoTrabalho(String valorHash, UploadedFile file) { - - String tipoArquivo = file.getContentType(); + String mensagem = "Não foi possível enviar o plano de trabalho!"; boolean status = false; - int idPlanoTrabalho = -1; + if(file != null) + { + String tipoArquivo = file.getContentType(); + + int idPlanoTrabalho = -1; + if (!tipoArquivo.equalsIgnoreCase("application/msword") && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") && !tipoArquivo.equalsIgnoreCase("text/plain") && !tipoArquivo.equalsIgnoreCase("application/pdf") - && !tipoArquivo.equalsIgnoreCase("image/png") - && !tipoArquivo.equalsIgnoreCase("image/gif") + && !tipoArquivo.equalsIgnoreCase("image/png") && !tipoArquivo.equalsIgnoreCase("image/gif") && !tipoArquivo.equalsIgnoreCase("image/jpeg")) { mensagem = "Formato de Arquivo inválido!"; status = false; - + } else { HashDao hashDao = new HashDao(); Questionario questionario = new Questionario(); questionario = hashDao.verificarHash(path, valorHash); + String nomeExtensao = file.getFileName(); + + if (questionario != null && questionario.getDtInicioQuestionario() != null) { + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); + idPlanoTrabalho = + planoTrabalhoDao.verificaPlanoTrabalho(path, questionario.getIdQuestionario()); - if (questionario != null && questionario.getDtInicioQuestionario() != null) { - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); - - 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!"; + if (idPlanoTrabalho == -1) { + if (planoTrabalhoDao.salvarPlanoTrabalho(path, file.getFile(), questionario, + nomeExtensao)) { + 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, nomeExtensao)) { + mensagem = "Plano de trabalho enviado com sucesso!"; + status = true; + } else { + mensagem = "Não foi possível enviar o plano de trabalho!"; + } } + + } else { + mensagem = "Favor verificar o Código de Acesso!"; } - - } - else - { - mensagem = "Favor verificar o Código de Acesso!"; - } + + } + } + else + { + mensagem = "O arquivo não pode ser maior que 50Mb!"; } result.include("mensagem", mensagem); result.include("status", status); 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); - + + @Get("/recuperar-plano-trabalho/{id}") + public void recuperarPlanoTrabalho(int id, HttpServletResponse response) throws IOException { + + Questionario questionario = new Questionario(path, id); + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); - + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + 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(); - - - + + if (questionario != null && questionario.getIdQuestionario() > 0) { + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); + + if(planoTrabalho != null) + { + try { + String nome = planoTrabalho.getNomeExtensao(); + dados = planoTrabalho.getArquivoPlanoTrabalho(); + 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(); + } catch (Exception e) { + + } + } + } } } diff --git a/src/br/com/dao/HashDao.java b/src/br/com/dao/HashDao.java index e5227c0..9418bf4 100644 --- a/src/br/com/dao/HashDao.java +++ b/src/br/com/dao/HashDao.java @@ -25,8 +25,11 @@ public class HashDao { estado = con.createStatement(); estado.execute(sql.toString()); - sql.append("SELECT id_questionario, dt_inicio_questionario, dt_fim_questionario,"); - sql.append("no_orgao, hash_autenticacao, questionario_respondido"); + + sql.append(" SELECT id_questionario, dt_inicio_questionario, dt_fim_questionario, "); + sql.append(" no_orgao, hash_autenticacao, questionario_respondido, email_destino_orgao, "); + sql.append(" responsavel, cargo_responsavel, telefone, data_recebimento_email, "); + sql.append(" idautorizacao, data_resposta_email "); sql.append(" FROM questionario where hash_autenticacao = '" + valorHash + "'"); sql.append(" and (dt_inicio_questionario <= '" + DateUtil.dataHoraAtual() + "')"); sql.append(" and (dt_fim_questionario >= '" + DateUtil.dataHoraAtual() + "');"); @@ -35,12 +38,17 @@ public class HashDao { while (rset.next()) { questionario.setIdQuestionario(rset.getInt("id_questionario")); + questionario.setDtFimQuestionario(rset.getString("dt_fim_questionario")); questionario.setDtInicioQuestionario(rset.getString("dt_inicio_questionario")); questionario.setHashAutenticacao(rset.getString("hash_autenticacao")); questionario.setNoOrgao(rset.getString("no_orgao").replace("
", "").replace("
", "")); questionario.setHashAutenticacao(rset.getString("hash_autenticacao")); questionario.setQuestionario_respondido(rset.getBoolean("questionario_respondido")); + questionario.setResponsavel(rset.getString("responsavel")); + questionario.setCargoResponsavel(rset.getString("cargo_responsavel")); + questionario.setTelefone(rset.getString("telefone")); + questionario.setEmailDestinoOrgao(rset.getString("email_destino_orgao")); } } catch (SQLException e) { diff --git a/src/br/com/dao/PlanoTrabalhoDao.java b/src/br/com/dao/PlanoTrabalhoDao.java index 30f322e..aacb642 100644 --- a/src/br/com/dao/PlanoTrabalhoDao.java +++ b/src/br/com/dao/PlanoTrabalhoDao.java @@ -12,6 +12,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; +import br.com.model.entity.PlanoTrabalho; import br.com.model.entity.Questionario; import br.com.model.utilities.ManagerProperties; @@ -59,7 +60,7 @@ public class PlanoTrabalhoDao { return idPlanoTrabalho; } - public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario) + public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario, String nomeExtensao) { StringBuffer sql = new StringBuffer(); @@ -71,12 +72,13 @@ public class PlanoTrabalhoDao { try { sql = new StringBuffer(); - sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); "); + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, nome_extensao) VALUES (?, ?, ?); "); estado = con.prepareStatement(sql.toString()); estado.setInt(1, questionario.getIdQuestionario()); estado.setBinaryStream(2, file); + estado.setString(3, nomeExtensao); resultado = estado.executeUpdate(); @@ -95,7 +97,7 @@ public class PlanoTrabalhoDao { return salvoComSucesso; } - public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho) + public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeExtensao) { StringBuffer sql = new StringBuffer(); @@ -109,13 +111,16 @@ public class PlanoTrabalhoDao { 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 +";"); + sql.append(" SET arquivo_plano_trabalho=?,"); + sql.append( " nome_extensao =? "); + sql.append(" WHERE id_plano_trabalho=?;"); estado = con.prepareStatement(sql.toString()); //estado.setInt(1, questionario.getIdQuestionario()); - estado.setBinaryStream(1, file); + estado.setBinaryStream(1, file); + estado.setString(2, nomeExtensao); + estado.setInt(3, idPlanoTrabalho); resultado = estado.executeUpdate(); @@ -134,7 +139,7 @@ public class PlanoTrabalhoDao { return salvoComSucesso; } - public byte[] recuperarPlanoTrabalho(String path, Questionario questionario) + public PlanoTrabalho recuperarPlanoTrabalho(String path, Questionario questionario) { @@ -143,6 +148,8 @@ public class PlanoTrabalhoDao { Statement estado; ResultSet rset = null; byte[] imgBytes = null; + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + try { @@ -154,8 +161,11 @@ public class PlanoTrabalhoDao { rset = estado.executeQuery(sql); - while (rset.next()) { - imgBytes = rset.getBytes("arquivo_plano_trabalho"); + while (rset.next()) { + planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho")); + planoTrabalho.setIdPlanoTrabalho(rset.getInt("id_plano_trabalho")); + planoTrabalho.setNomeExtensao(rset.getString("nome_extensao")); + planoTrabalho.setQuestionario(questionario); } } catch (SQLException e) { @@ -171,7 +181,7 @@ public class PlanoTrabalhoDao { } } - return imgBytes; + return planoTrabalho; } } diff --git a/src/br/com/model/entity/PlanoTrabalho.java b/src/br/com/model/entity/PlanoTrabalho.java new file mode 100644 index 0000000..78f3db0 --- /dev/null +++ b/src/br/com/model/entity/PlanoTrabalho.java @@ -0,0 +1,36 @@ +package br.com.model.entity; + +public class PlanoTrabalho { + + private int idPlanoTrabalho; + private byte[] arquivoPlanoTrabalho; + private String nomeExtensao; + private Questionario questionario; + + public int getIdPlanoTrabalho() { + return idPlanoTrabalho; + } + public void setIdPlanoTrabalho(int idPlanoTrabalho) { + this.idPlanoTrabalho = idPlanoTrabalho; + } + + public byte[] getArquivoPlanoTrabalho() { + return arquivoPlanoTrabalho; + } + public void setArquivoPlanoTrabalho(byte[] arquivoPlanoTrabalho) { + this.arquivoPlanoTrabalho = arquivoPlanoTrabalho; + } + public String getNomeExtensao() { + return nomeExtensao; + } + public void setNomeExtensao(String nomeExtensao) { + this.nomeExtensao = nomeExtensao; + } + public Questionario getQuestionario() { + return questionario; + } + public void setQuestionario(Questionario questionario) { + this.questionario = questionario; + } + +} -- libgit2 0.21.2