Package ecar.dao

Source Code of ecar.dao.ItemEstruturaCriterioDao

/*
* Criado em 20/12/2004
*
*/
package ecar.dao;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.ObjectNotFoundException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;

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

import ecar.exception.ECARException;
import ecar.pojo.CriterioCri;
import ecar.pojo.ItemEstrutCriterioIettc;
import ecar.pojo.ItemEstrutCriterioIettcPK;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.UsuarioUsu;

/**
* @author felipev
*/
public class ItemEstruturaCriterioDao extends Dao {

    /**
     *
     * @param request
     */
    public ItemEstruturaCriterioDao(HttpServletRequest request) {
    super();
    this.request = request;
    }

    /**
     * Devolve um objeto ItemEstruturaCriterio a partir de um c�digo de Item
     * Estrutura e um C�digo do Crit�rio
     *
     * @param codItemEstrutura
     * @param codCriterio
     * @return
     * @throws ECARException
     */
    public ItemEstrutCriterioIettc buscar(Long codItemEstrutura,
            Long codCriterio) throws ECARException {
        ItemEstrutCriterioIettcPK pk = new ItemEstrutCriterioIettcPK();
        pk.setCodCri(codCriterio);
        pk.setCodIett(codItemEstrutura);
        return (ItemEstrutCriterioIettc) super.buscar(ItemEstrutCriterioIettc.class, pk);
    }

    /**
     * Grava um registro de itemEstruturaCriterio
     * @author felipev, rogerio
     * @since n/c
     * @version 0.2, 04/06/2007
     * @param codCriterio
     * @param codItemEstrutura
     * @param usuario
     * @throws ECARException
     */
    public void salvar(Long codCriterio, Long codItemEstrutura, UsuarioUsu usuario ) throws ECARException {
       
      ItemEstrutCriterioIettc itemEstruturaCriterio = null;
         
      try {
        itemEstruturaCriterio = this.buscar(codItemEstrutura, codCriterio);
      } catch (ECARException ecarex) {
        if (!(ecarex.getCausaRaiz() instanceof ObjectNotFoundException)){
          throw ecarex;
        }
      }
     
      //O Criterio nunca foi cadastrado para o item
      if (itemEstruturaCriterio == null) {
            ItemEstrutCriterioIettcPK pk = new ItemEstrutCriterioIettcPK();
            pk.setCodCri(codCriterio);
            pk.setCodIett(codItemEstrutura);
           
            ItemEstrutCriterioIettc ieCriterio = new ItemEstrutCriterioIettc();
            ieCriterio.setComp_id(pk);
            ieCriterio.setCriterioCri((CriterioCri) super.buscar(CriterioCri.class, codCriterio));
            ieCriterio.setItemEstruturaIett((ItemEstruturaIett) super.buscar(ItemEstruturaIett.class, codItemEstrutura));
           
            ieCriterio.setDataUltManutencao(Data.getDataAtual());
            ieCriterio.setUsuManutencao(usuario);
           
            super.salvar(ieCriterio);
      } else if (!itemEstruturaCriterio.getIndExclusaoPosHistorico()){ // O Criterio j� existe e est� ativo deve levantar erro de tentativa de cadastro duplicado
        throw new ECARException("itemEstrutura.criterio.inclusao.jaExiste");
      } else if (itemEstruturaCriterio.getIndExclusaoPosHistorico()){//O Criterio j� existe e N�O est� ativo deve apenas ativ�-lo
        itemEstruturaCriterio.setIndExclusaoPosHistorico(false);
        itemEstruturaCriterio.setDataUltManutencao(Data.getDataAtual());
        itemEstruturaCriterio.setUsuManutencao(usuario);

        super.alterar(itemEstruturaCriterio);
      }
     
    }

  /**
     * Recebe um array com C�digos de Recurso e um c�digo de Item Estrutura e
     * exclui todas as rela��es dos crit�rio que estes c�digos representam com o
     * item da EStrutura
     *
     * @param codCriterio
     * @param codItemEstrutura
     * @param usuario
     * @throws ECARException
     */
    public void excluir(String[] codCriterio, Long codItemEstrutura, UsuarioUsu usuario )
            throws ECARException {
        Transaction tx = null;

        try{
        ArrayList objetos = new ArrayList();

        super.inicializarLogBean();

            tx = session.beginTransaction();

            ItemEstrutCriterioIettc criterio;
            for (int i = 0; i < codCriterio.length; i++) {
              /* --
               * #2156 - Hist�rico
               * Atualiza o registro antes de excluir, para garantir que o usu�rio que fez a
               * exclus�o, ser� registrado na tabela master de hist�rico.
               * -- */
              criterio = this.buscar(codItemEstrutura, Long.valueOf(codCriterio[i]));
              criterio.setDataUltManutencao(Data.getDataAtual());
              criterio.setUsuManutencao(usuario);
              criterio.setIndExclusaoPosHistorico(Boolean.TRUE);
              session.update(criterio);
             
              // apaga pela trigger
              //session.delete(criterio);
          }
     
      tx.commit();
 
      if(super.logBean != null) {
        super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
        super.logBean.setOperacao("EXC");
        Iterator itObj = objetos.iterator();
 
        while(itObj.hasNext()) {
          super.logBean.setObj(itObj.next());
          super.loggerAuditoria.info(logBean.toString());
        }
      }
    } catch (HibernateException e) {
      if (tx != null)
        try {
          tx.rollback();
        } catch (HibernateException r) {
                this.logger.error(r);
          throw new ECARException("erro.hibernateException");
        }
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }
  }

    /**
     * Devolve uma lista com todos os Crit�rios de um Item da Estrutura
     * @param itemEstrutura
     * @return
     * @throws ECARException
     */
    public List<ItemEstrutCriterioIettc> listarCriterios(ItemEstruturaIett itemEstrutura) throws ECARException{
        List<ItemEstrutCriterioIettc> retorno = new ArrayList<ItemEstrutCriterioIettc>();
        if (itemEstrutura.getItemEstrutCriterioIettcs() != null) {
         
            retorno.addAll(itemEstrutura.getItemEstrutCriterioIettcs());
           
          Collections.sort(retorno,new Comparator<ItemEstrutCriterioIettc>(){
           
                    public int compare(ItemEstrutCriterioIettc o1,
                        ItemEstrutCriterioIettc o2) {
                      return o1.getCriterioCri().getDescricaoCri().compareTo(o2.getCriterioCri().getDescricaoCri());
                    }
                       
                      });
           
        }
        return retorno;
    }
   
    /**
     * Verifica se o item possui um determinado crit�rio passado pelo parametro "id"
     * nas listas de c�digos de crit�rios.
     *
     * @param itemEstrutura
     * @param idCriteriosCom
     * @param idCriteriosSem
     * @return boolean
     * @throws ECARException
     */
    public boolean verificarCriterio(ItemEstruturaIett itemEstrutura, List idCriteriosCom, List idCriteriosSem) throws ECARException{
      boolean existemCriteriosCom = (idCriteriosCom != null && idCriteriosCom.size() > 0);
      boolean existemCriteriosSem = (idCriteriosSem != null && idCriteriosSem.size() > 0);

      if (itemEstrutura.getItemEstrutCriterioIettcs() != null) {
          boolean criterioExisteListaCom = false;
          boolean criterioExisteListaSem = false;
         
          List codCriteriosIett = new ArrayList();

          Iterator itCriterios = itemEstrutura.getItemEstrutCriterioIettcs().iterator();
          while(itCriterios.hasNext()){
              ItemEstrutCriterioIettc itemCriterio = (ItemEstrutCriterioIettc) itCriterios.next();
              String codigoCriterio = itemCriterio.getComp_id().getCodCri().toString();
              codCriteriosIett.add(codigoCriterio);
          }
         
          if(codCriteriosIett.containsAll(idCriteriosCom)){
            criterioExisteListaCom = true;
          }
         
          if(codCriteriosIett.containsAll(idCriteriosSem)){
            criterioExisteListaSem = true;
          }
                   
          if(existemCriteriosCom && existemCriteriosSem){
            if(criterioExisteListaCom && !criterioExisteListaSem){
              return true;
            }
          }
          else if (existemCriteriosCom){
            if(criterioExisteListaCom){
              return true;
            }
          }
          else if (existemCriteriosSem){
            if(!criterioExisteListaSem){
              return true;
            }
          }
      }
      return false;
    }

}
TOP

Related Classes of ecar.dao.ItemEstruturaCriterioDao

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.