br.com.hslife.orcamento.controller.DocumentoController.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hslife.orcamento.controller.DocumentoController.java

Source

/***
      
 Copyright (c) 2012 - 2020 Hrcules S. S. Jos
    
Este arquivo  parte do programa Oramento Domstico.
    
    
Oramento Domstico  um software livre; voc pode redistribui-lo e/ou 
    
modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como 
    
publicada pela Fundao do Software Livre (FSF); na verso 2.1 da 
    
Licena.
    
    
Este programa  distribudo na esperana que possa ser til, 
    
mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a 
    
qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica 
    
Geral Menor GNU em portugus para maiores detalhes.
    
    
Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o 
    
nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do
    
projeto no endereco https://github.com/herculeshssj/orcamento ou escreva 
    
para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, 
    
Boston, MA  02110-1301, USA.
    
    
Para mais informaes sobre o programa Oramento Domstico e seu autor entre  
    
em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para 
    
Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, 
    
Marco II - Nova Iguau, RJ, Brasil.
      
***/

package br.com.hslife.orcamento.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.primefaces.event.FileUploadEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.com.hslife.orcamento.entity.Arquivo;
import br.com.hslife.orcamento.entity.CategoriaDocumento;
import br.com.hslife.orcamento.entity.Documento;
import br.com.hslife.orcamento.enumeration.Container;
import br.com.hslife.orcamento.exception.BusinessException;
import br.com.hslife.orcamento.exception.ValidationException;
import br.com.hslife.orcamento.facade.ICategoriaDocumento;
import br.com.hslife.orcamento.facade.IDocumento;

@Component("documentoMB")
@Scope("session")
public class DocumentoController extends AbstractCRUDController<Documento> {

    /**
     * 
     */
    private static final long serialVersionUID = 5008455377685602947L;

    @Autowired
    private IDocumento service;

    @Autowired
    private ICategoriaDocumento categoriaDocumentoService;

    private CategoriaDocumento categoriaSelecionada;
    private String nomeDocumento;

    public DocumentoController() {
        super(new Documento());

        moduleTitle = "Documentos";
    }

    @Override
    protected void initializeEntity() {
        entity = new Documento();
        listEntity = new ArrayList<Documento>();
    }

    @Override
    public void find() {
        try {
            listEntity = getService().buscarPorNomeECategoriaDocumentoPorUsuario(nomeDocumento,
                    categoriaSelecionada, getUsuarioLogado());
        } catch (ValidationException | BusinessException be) {
            errorMessage(be.getMessage());
        }
    }

    @Override
    public String save() {
        if (entity.getArquivo() == null || entity.getArquivo().getDados() == null
                || entity.getArquivo().getDados().length == 0) {
            warnMessage("Anexe um arquivo!");
            return "";
        }
        return super.save();
    }

    public void carregarArquivo(FileUploadEvent event) {
        if (event.getFile() != null) {
            if (entity.getArquivo() == null)
                entity.setArquivo(new Arquivo());
            entity.getArquivo().setDados(event.getFile().getContents());
            entity.getArquivo().setNomeArquivo(event.getFile().getFileName().replace(" ", "."));
            entity.getArquivo().setContentType(event.getFile().getContentType());
            entity.getArquivo().setTamanho(event.getFile().getSize());
            entity.getArquivo().setContainer(Container.DOCUMENTOS);
            entity.getArquivo().setUsuario(getUsuarioLogado());
        }
    }

    public void baixarArquivo() {
        if (entity.getArquivo() == null || entity.getArquivo().getDados() == null
                || entity.getArquivo().getDados().length == 0) {
            warnMessage("Nenhum arquivo adicionado!");
        } else {
            HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance()
                    .getExternalContext().getResponse();
            try {
                response.setContentType(entity.getArquivo().getContentType());
                response.setHeader("Content-Disposition",
                        "attachment; filename=" + entity.getArquivo().getNomeArquivo());
                response.setContentLength(entity.getArquivo().getDados().length);
                ServletOutputStream output = response.getOutputStream();
                output.write(entity.getArquivo().getDados(), 0, entity.getArquivo().getDados().length);
                FacesContext.getCurrentInstance().responseComplete();
            } catch (Exception e) {
                errorMessage(e.getMessage());
            }
        }
    }

    public List<CategoriaDocumento> getListaCategoriaDocumento() {
        try {
            return categoriaDocumentoService.buscarPorDescricaoEUsuario("", getUsuarioLogado());
        } catch (ValidationException | BusinessException be) {
            errorMessage(be.getMessage());
        }
        return new ArrayList<CategoriaDocumento>();
    }

    public IDocumento getService() {
        return service;
    }

    public void setService(IDocumento service) {
        this.service = service;
    }

    public void setCategoriaDocumentoService(ICategoriaDocumento categoriaDocumentoService) {
        this.categoriaDocumentoService = categoriaDocumentoService;
    }

    public String getNomeDocumento() {
        return nomeDocumento;
    }

    public void setNomeDocumento(String nomeDocumento) {
        this.nomeDocumento = nomeDocumento;
    }

    public CategoriaDocumento getCategoriaSelecionada() {
        return categoriaSelecionada;
    }

    public void setCategoriaSelecionada(CategoriaDocumento categoriaSelecionada) {
        this.categoriaSelecionada = categoriaSelecionada;
    }
}