Package ecar.dao

Source Code of ecar.dao.ItemEstruturaUploadDao

/*
* Criado em 19/01/2005
*
*/
package ecar.dao;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.hibernate.HibernateException;

import comum.database.Dao;
import comum.util.Data;
import comum.util.FileUpload;

import ecar.exception.ECARException;
import ecar.pojo.AcompReferenciaItemAri;
import ecar.pojo.AcompRelatorioArel;
import ecar.pojo.ConfiguracaoCfg;
import ecar.pojo.HistoricoIettupH;
import ecar.pojo.HistoricoMaster;
import ecar.pojo.HistoricoMotivo;
import ecar.pojo.ItemEstrUplCategIettuc;
import ecar.pojo.ItemEstrutUploadIettup;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.UploadTipoArquivoUta;
import ecar.pojo.UsuarioUsu;
import ecar.util.Dominios;

/**
* @author felipev
*
*/
public class ItemEstruturaUploadDao extends Dao{
      
   
    /**
     *
     * @param request
     */
    public ItemEstruturaUploadDao(HttpServletRequest request) {
    super();
    this.request = request;
    }
   
    /**
     * Retorna os Anexos Ativos de uma Categoria de um Item
     * @param categoria
     * @return Collection de Objetos ItemEstrUplCategIettuc
     * @throws ECARException
     */
    public Collection getAtivos(ItemEstrUplCategIettuc categoria) throws ECARException{
        try{
            return this.getSession().createFilter(categoria.getItemEstrutUploadIettups(), "where this.indAtivoIettups = 'S'").list();   
        } catch(HibernateException e){
          this.logger.error(e);
            throw new ECARException(e);
        }       
    }
   
    /**
     * Constr�i um objeto ItemEstrutUploadIettup a partir de atributos passados no request.
     * Realiza upload do arquivo
     * @param campos
     * @param upload
     * @param pathRaiz
     * @param pathRelativo
     * @throws ECARException
     */
    public void setItemEstruturaUpload(List campos, ItemEstrutUploadIettup upload, String pathRaiz, String pathRelativo) throws ECARException{
        try{
            ItemEstruturaIett itemEstrutura = (ItemEstruturaIett) this.buscar(
                    ItemEstruturaIett.class, Long.valueOf(FileUpload.verificaValorCampo(campos, "codIett")));
            upload.setItemEstruturaIett(itemEstrutura);
           
            if(!"".equals(FileUpload.verificaValorCampo(campos, "cod")))
                upload.setCodIettup(Long.valueOf(FileUpload.verificaValorCampo(campos, "cod")));
           
            upload.setDescricaoIettup(FileUpload.verificaValorCampo(campos, "descricaoIettup"));
           
            upload.setIndAtivoIettup("S");
                     
            if(!"".equals(FileUpload.verificaValorCampo(campos, "codIettuc")))
                upload.setItemEstrUplCategIettuc( (ItemEstrUplCategIettuc) this.buscar(
                        ItemEstrUplCategIettuc.class, Long.valueOf(FileUpload.verificaValorCampo(campos, "codIettuc"))));
              upload.getItemEstrUplCategIettuc().setIndAtivoIettuc("S");
           
            if(!"".equals(FileUpload.verificaValorCampo(campos, "uploadTipoArquivoUta")))
                upload.setUploadTipoArquivoUta( (UploadTipoArquivoUta) this.buscar(
                        UploadTipoArquivoUta.class, Long.valueOf(FileUpload.verificaValorCampo(campos, "uploadTipoArquivoUta"))));

           
            if(!"".equals(FileUpload.verificaValorCampo(campos, "usuarioUsu")))
                upload.setUsuarioUsu( (UsuarioUsu) this.buscar(
                        UsuarioUsu.class, Long.valueOf(FileUpload.verificaValorCampo(campos, "usuarioUsu"))));

           
            /* realiza o upload do arquivo */
            Iterator it = campos.iterator()
            String formato = "ddMMyyyyHHmmssSSS";           
            while(it.hasNext()){
                FileItem fileItem = (FileItem) it.next();            
                if(!fileItem.isFormField() && !"".equals(fileItem.getName())){   
                   
                    if(upload.getArquivoIettup() != null)
                        FileUpload.apagarArquivo(upload.getArquivoIettup());
                    SimpleDateFormat formatter = new SimpleDateFormat(formato);
                    String dataGravacao = formatter.format(new Date());
                    upload.setArquivoIettup(FileUpload.getPathFisico("", pathRelativo, dataGravacao+" - "+FileUpload.getNomeArquivo(fileItem)));
                    upload.setNomeOriginalIettup(FileUpload.getNomeArquivo(fileItem));
                    upload.setTamanhoIettup(Long.valueOf(fileItem.getSize()));
                    FileUpload.salvarNoDisco(fileItem, FileUpload.getPathFisico(pathRaiz, pathRelativo, dataGravacao+" - "+FileUpload.getNomeArquivo(fileItem)));
                }
            }
           
        } catch (Exception e){
            this.logger.error(e);
            throw new ECARException("erro.exception");
        }
       
               
    }
   
   
    /**
     * Constr�i um objeto ItemEstrutUploadIettup a partir de atributos passados no request.
     * Realiza upload do arquivo
     * @param campos
     * @param upload
     * @param pathRaiz
     * @param pathRelativo
     * @param acompRelatorioArel
     * @param itemEstrUplCategIettuc
     * @throws ECARException
     */
    public void setItemEstruturaUpload(List campos, ItemEstrutUploadIettup upload, String pathRaiz, String pathRelativo, AcompRelatorioArel acompRelatorioArel, ItemEstrUplCategIettuc itemEstrUplCategIettuc) throws ECARException{
      upload.setAcompRelatorioArel(acompRelatorioArel);
      upload.setItemEstrUplCategIettuc(itemEstrUplCategIettuc);
      this.setItemEstruturaUpload(campos, upload, pathRaiz, pathRelativo);
    }
   
   
   
    /**
     * Exclui os Registros de Upload com os c�digos existente no Array. Exclui tamb�m os arquivos referenciados por esses
     * registros
     * @param codigosParaExcluir
     * @param pathRaiz
     * @param usuario
     * @param origemAcompanhamento - funcionalidade origem que solicita o servi�o.
     * @throws ECARException
     */
    public void excluir(String[] codigosParaExcluir, String pathRaiz, UsuarioUsu usuario, boolean origemAcompanhamento) throws ECARException {
           
     
      ItemEstruturaUploadCategoriaDao categoriaDao = new ItemEstruturaUploadCategoriaDao(request);
       
     
        for (int i = 0; i < codigosParaExcluir.length; i++) {   
         
            ItemEstrutUploadIettup upload = (ItemEstrutUploadIettup) this.buscar(ItemEstrutUploadIettup.class, Long.valueOf(codigosParaExcluir[i]));
          ItemEstrUplCategIettuc categoria = upload.getItemEstrUplCategIettuc();
             
          ItemEstrutUploadIettup uploadPEsquisa = new ItemEstrutUploadIettup();
          uploadPEsquisa.setItemEstrUplCategIettuc(categoria);
          uploadPEsquisa.setIndAtivoIettup("S");
             
          List itensAtivosCategoria = pesquisar(uploadPEsquisa, new String[]{"codIettup", "asc"});
             
          //seta a variavel booleana para excluir a categoria caso ela possua menos de 2 arquivos associados
          boolean excluirCategoria = itensAtivosCategoria.size() > 1 ? false : true;
           
          ConfiguracaoDao dao = new ConfiguracaoDao(request);
          ConfiguracaoCfg config = dao.getConfiguracao();
         
          HistoricoMaster historicoMaster = new HistoricoMaster();
           
          if("S".equals(config.getIndGerarHistoricoCfg())) {
             
          historicoMaster.setDataHoraHistorico(new Date());
          historicoMaster.setUsuManutencao(upload.getUsuarioUsuManutencao() == null?usuario:upload.getUsuarioUsuManutencao());
          historicoMaster.setCodReferenciaGeral(upload.getItemEstruturaIett().getCodIett());
          historicoMaster.setHistoricoMotivo((HistoricoMotivo)super.buscar(HistoricoMotivo.class, Long.valueOf(26)));
          session.save(historicoMaster);
         
          HistoricoIettupH iettuph = new HistoricoIettupH();
          ItemEstrutUploadIettup iettup = (ItemEstrutUploadIettup)super.buscar(ItemEstrutUploadIettup.class, upload.getCodIettup());
         
          iettuph.setArquivoIettup(iettup.getArquivoIettup());
          iettuph.setCodIettup(iettup.getCodIettup());
          iettuph.setCodIettupH(iettup.getCodIettup());
          iettuph.setDataInclusaoIettup(iettup.getDataInclusaoIettup());
          iettuph.setDescricaoIettup(iettup.getDescricaoIettup());
          iettuph.setHistoricoMaster(historicoMaster);
          iettuph.setIndAtivoIettup(iettup.getIndAtivoIettup());
          iettuph.setItemEstrUplCategIettuc(iettup.getItemEstrUplCategIettuc());
          iettuph.setItemEstruturaIett(iettup.getItemEstruturaIett());
          //iettuph.setNomeIettuc();
          iettuph.setNomeOriginalIettup(iettup.getNomeOriginalIettup());
          iettuph.setTamanhoIettup(iettup.getTamanhoIettup());
          iettuph.setUploadTipoArquivoUta(iettup.getUploadTipoArquivoUta());
          iettuph.setUsuarioUsu(iettup.getUsuarioUsu());
          iettuph.setUsuManutencao((iettup.getUsuarioUsuManutencao() == null?usuario:iettup.getUsuarioUsuManutencao()));

          session.save(iettuph);
          }

            this.excluir(upload, pathRaiz, usuario);
           
             //Excluir a categoria caso n�o haja mais nenhum arquivo na mesma no momento da exclus�o deste arquivo
     
            //Mudan�a de requisito. Caso Mantis: 0010956.
            // Independente da origem da exclus�o. Deve verificar exclus�o autom�tica da pasta gerada pelo acompanhamento.
      if (excluirCategoria/* && origemAcompanhamento*/){
        if(categoria.getAcompReferenciaItemAri()!=null){
          categoriaDao.excluir(categoria, pathRaiz);
        }
      }
        }
    }
   
    /**
     * Exclui um  upload e apaga o arquivo vinculado a ela
     * @param upload
     * @param pathRaiz
     * @param usuario
     * @throws ECARException
     */
    public void excluir(ItemEstrutUploadIettup upload, String pathRaiz, UsuarioUsu usuario) throws ECARException{
        try{           
          upload.setUsuarioUsuManutencao(usuario);
          upload.setIndAtivoIettup("N");
          upload.setIndExclusaoPosHistorico(Boolean.TRUE);
         
            if(upload.getArquivoIettup()!=null){
              //Verifica se o arquivo � usado como anexo de outro item, essa situa��o pode ocorrer por causa
              // da cria��o de itens a partir de outros j� existentes
              if (arquivoUsadoPorOutroItem(upload)) {
                super.alterar(upload);
              } else if (FileUpload.apagarArquivo(FileUpload.getPathFisico(pathRaiz, upload.getArquivoIettup(), ""))){
                  super.alterar(upload);
                } else {
                    throw new ECARException("erro.excluirArquivo");       
                }
            } else
              super.alterar(upload);
        }
        catch(Exception e){
          this.logger.error(e);
            throw new ECARException("erro.exception");
        }
    }
    /**
     * Verifica se o arquivo atual � usado por outro arquivo antes de apag�-lo do disco.
     * Essa verifica��o � necess�ria pois quando se cria um item a partir do outro e os
     * arquivos do mesmo s�o compartilhados. Ent�o se apagar aqui ir� dar problema no
     * outro item.
     *
     * @param upload
     * @return
     */
    private boolean arquivoUsadoPorOutroItem(ItemEstrutUploadIettup upload) throws ECARException{
    ItemEstruturaUploadDao uploadDao = new ItemEstruturaUploadDao(request);
    ItemEstrutUploadIettup uploadNovo = new ItemEstrutUploadIettup();
    uploadNovo.setArquivoIettup(upload.getArquivoIettup());
    List uploads = uploadDao.pesquisar(uploadNovo,null);
    int i=0;
   
    if (uploads != null && uploads.size()>1){
      for (Iterator iterator = uploads.iterator(); iterator.hasNext();) {
        ItemEstrutUploadIettup arquivo = (ItemEstrutUploadIettup) iterator.next();
        if (arquivo.getIndAtivoIettup().equals(Dominios.SIM)){
          return true;
        }
       
      }
    }
    return false;
  }

  /**
     * Salva um registro de  Upload
     * @param upload
         * @param usuario
         * @throws ECARException
     */
    public void salvar(ItemEstrutUploadIettup upload, UsuarioUsu usuario) throws ECARException{
    upload.setUsuarioUsu(usuario);
         upload.setDataInclusaoIettup(Data.getDataAtual());
         super.salvar(upload);
    }
   
    /**
     *
     * @param upload
     * @param usuario
     * @param filhos
     * @throws ECARException
     */
    public void salvar(ItemEstrutUploadIettup upload, UsuarioUsu usuario, List filhos)throws ECARException{
      upload.setUsuarioUsu(usuario);
         upload.setDataInclusaoIettup(Data.getDataAtual());
      super.salvar(upload, filhos);
    }
   
    /**
     *
     * @param upload
     * @param usuario
     * @throws ECARException
     */
    public void alterar(ItemEstrutUploadIettup upload, UsuarioUsu usuario) throws ECARException {
    upload.setUsuarioUsuManutencao(usuario);
   
      ConfiguracaoDao dao = new ConfiguracaoDao(request);
      ConfiguracaoCfg config = dao.getConfiguracao();
     
      HistoricoMaster historicoMaster = new HistoricoMaster();
   
      if("S".equals(config.getIndGerarHistoricoCfg())) {
         
      historicoMaster.setDataHoraHistorico(new Date());
      historicoMaster.setUsuManutencao(upload.getUsuarioUsuManutencao());
      historicoMaster.setCodReferenciaGeral(upload.getItemEstruturaIett().getCodIett());
      historicoMaster.setHistoricoMotivo((HistoricoMotivo)super.buscar(HistoricoMotivo.class, Long.valueOf(25)));
      session.save(historicoMaster);
     
      HistoricoIettupH iettuph = new HistoricoIettupH();
      ItemEstrutUploadIettup iettup = (ItemEstrutUploadIettup)super.buscar(ItemEstrutUploadIettup.class, upload.getCodIettup());
     
      iettuph.setArquivoIettup(iettup.getArquivoIettup());
      iettuph.setCodIettup(iettup.getCodIettup());
      iettuph.setCodIettupH(iettup.getCodIettup());
      iettuph.setDataInclusaoIettup(iettup.getDataInclusaoIettup());
      iettuph.setDescricaoIettup(iettup.getDescricaoIettup());
      iettuph.setHistoricoMaster(historicoMaster);
      iettuph.setIndAtivoIettup(iettup.getIndAtivoIettup());
      iettuph.setItemEstrUplCategIettuc(iettup.getItemEstrUplCategIettuc());
      iettuph.setItemEstruturaIett(iettup.getItemEstruturaIett());
      //iettuph.setNomeIettuc();
      iettuph.setNomeOriginalIettup(iettup.getNomeOriginalIettup());
      iettuph.setTamanhoIettup(iettup.getTamanhoIettup());
      iettuph.setUploadTipoArquivoUta(iettup.getUploadTipoArquivoUta());
      iettuph.setUsuarioUsu(iettup.getUsuarioUsu());
      iettuph.setUsuManutencao(iettup.getUsuarioUsuManutencao());

      session.save(iettuph);
     
   
    super.alterar(upload);
  }
}
TOP

Related Classes of ecar.dao.ItemEstruturaUploadDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.