PlanoTrabalhoController.java 4.49 KB
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;
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.Questionario;

@Resource
public class PlanoTrabalhoController {

  private Validator validator;
  private Result result;
  private ServletContext application;
  private String path;

  public PlanoTrabalhoController(Result result, Validator validator, ServletContext application) {
    this.validator = validator;
    this.application = application;
    this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
    this.result = result;
  }

  @Path("/planoTrabalho-site")
  public void planoTrabalho() {

  }

  @Path("/plano-trabalho-confirmacao")
  public void planoTrabalhoConfirmacao() {

  }

  @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 (!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/jpeg")) {

      mensagem = "Formato de Arquivo inválido!";
      status = false;
      
    } else {
      HashDao hashDao = new HashDao();
      Questionario questionario = new Questionario();
      questionario = hashDao.verificarHash(path, valorHash);


      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!";
          }
        }
        
      }
      else
      {
        mensagem = "Favor verificar o Código de Acesso!";
      }
    }
    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);
    
    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();
    
    
    
  }
}