Package ecar.dao

Source Code of ecar.dao.LocalGrupoDao

/*
* Criado em 05/11/2004
*
*
* Classe para tratar dos grupos de locais e hierarquia de grupos de locais.
* A hierarquia de grupos de locais eh implicita pois representa um conjunto dentro
* de cada objeto local. Um grupo pode ter muitos pais(grupos) diferentes.
* Um grupo tamb�m pode ter muitos filhos diferentes.
* Relacionamentos c�clicos n�o s�o permitidos.
*
* Sejam os seguintes grupos:
* Pais, Regiao, Estado, Municipio
*
* e as respectivas associacoes:
* Municipio � filho de Estado
* Municipio � filho de Regiao
* Estado � filho de Regiao
* Regiao � filho de Pais
*
* Ao selecionarmos um grupo de local quem podem ser seus filhos v�lidos?
*
* R.O conjunto de todos os grupos "G" menos o proprio grupo "g" e seus ascendentes.
*
* G - {{g} U Ascendentes{g}}
*
* Ao selecionarmos o grupo Municipio, quem pode ser seus filhos?
* R. ningu�m, pois:
*
* {P, R, E, M} - {M, E, R, P} = {conjunto vazio}
*
* Quem podem ser os filhos de Regiao?
* R. {P, R, E, M} - {R, P} = {E, M}
*
*
*
*/
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.HibernateException;

import comum.database.Dao;

import ecar.exception.ECARException;
import ecar.pojo.LocalGrupoLgp;

/**
* @author felipev
*
*/
public class LocalGrupoDao extends Dao{
  /**
   * Construtor. Chama o Session factory do Hibernate
         *
         * @param request
         */
  public LocalGrupoDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
 
  /**
   * Retorna um list com identifica��es de todos os grupos filhos de um grupo
   * @param localGrupo
   * @return List de Long
   */
  public List getFilhosById(LocalGrupoLgp localGrupo){
      List filhos = new ArrayList();
      if(localGrupo.getLocalGrupoHierarquiaLgphsByCodLgpPai() != null){
        Iterator it = localGrupo.getLocalGrupoHierarquiaLgphsByCodLgpPai().iterator();
        while(it.hasNext()){
            LocalGrupoLgp localGrupoFilho = (LocalGrupoLgp) it.next();
            filhos.add(localGrupoFilho.getCodLgp());
        }         
      }
      return filhos;
  }
 
  /**
   * Retorna os Grupos acima do Grupo passado como par�metro (pais, av�s, etc)
   * @param localGrupo
   * @return Set Cole��o de Grupos de Local
   * Pseudocodigo:
   *
   * Ascendentes(g) {
   *     resultado = {conjunto vazio}
   *    
   *     se (Pais(g) != {conjunto vazio})
   *       para cada p em Pais(g) faca
   *         resultado <- {p} U Ascendentes(p)
   *     return (resultado)
   * }
   */
  public List getAscendentes(LocalGrupoLgp localGrupo){
      List grupos = new ArrayList();
      if(localGrupo.getLocalGrupoHierarquiaLgphsByCodLgp() != null){
          // Cole��o dos Pais
          Iterator it = localGrupo.getLocalGrupoHierarquiaLgphsByCodLgp().iterator();
          while(it.hasNext()){
              LocalGrupoLgp localGrupoLgp = (LocalGrupoLgp) it.next();
              if(!grupos.contains(localGrupoLgp)){
                  grupos.add(localGrupoLgp);
                  grupos.addAll(getAscendentes(localGrupoLgp));
              }   
          }
      }
      return grupos;
  }
 
  /**
   * Exclui um grupo de Locais, verificando antes se ele possui rela��o com outras tabelas. Neste caso, n�o permite
   * exclus�o
         * @param localGrupo
   * @throws ECARException
   */
  public void excluir(LocalGrupoLgp localGrupo) throws ECARException {     
     try{
           boolean excluir = true;
        if(contar(localGrupo.getLocalItemLits()) > 0){
            excluir = false;
          throw new ECARException("localGrupo.exclusao.erro.localItemLits");
        }    
           if(contar(localGrupo.getLocalGrupoHierarquiaLgphsByCodLgp()) > 0){
            excluir = false;
          throw new ECARException("localGrupo.exclusao.erro.localGrupoHierarquiaLgphsByCodLgp");
        }                             
        if(contar(localGrupo.getLocalGrupoHierarquiaLgphsByCodLgpPai()) > 0){
            excluir = false;
          throw new ECARException("localGrupo.exclusao.erro.localGrupoHierarquiaLgphsByCodLgpPai");
        }                  

        if(excluir)
            super.excluir(localGrupo)
     }catch(ECARException e){
       this.logger.error(e);
         throw e;
     }   
  }

  /**
   * verifica duplica��o depois salva
   * @param grupo
   * @throws ECARException
   */
  public void salvar(LocalGrupoLgp grupo) throws ECARException {
    if (pesquisarDuplos(grupo, new String[] {"identificacaoLgp"}, "codLgp").size() > 0)
        throw new ECARException("localGrupo.validacao.registroDuplicado");
    super.salvar(grupo);
  }
 
  /**
   * verifica duplica��o depois altera
   * @param grupo
   * @throws ECARException
   */
  public void alterar(LocalGrupoLgp grupo) throws ECARException {
    if (pesquisarDuplos(grupo, new String[] {"identificacaoLgp"}, "codLgp").size() > 0)
        throw new ECARException("localGrupo.validacao.registroDuplicado");
    super.alterar(grupo);
  }
 
  /**
   * Retorna a lista de LocalGrupoLgpPais (1o n�vel) ativos de um grupo
   * @param grupo
   * @return List LocalGrupoLgp
   * @throws HibernateException
   */
  public List getGruposPais(LocalGrupoLgp grupo) throws HibernateException {
    List grupos = new ArrayList();
   
    if (grupo.getLocalGrupoHierarquiaLgphsByCodLgp() != null) {
      grupos = new ArrayList(grupo.getLocalGrupoHierarquiaLgphsByCodLgp());
      Iterator it = grupos.iterator();
      while(it.hasNext()) {
        LocalGrupoLgp lgp = (LocalGrupoLgp)it.next();
        if(!"S".equals(lgp.getIndAtivoLgp())) {
          it.remove();
        }
      }
          Collections.sort(grupos,
                new Comparator() {
                public int compare(Object o1, Object o2) {
                  return ((LocalGrupoLgp) o1).getIdentificacaoLgp().compareToIgnoreCase(((LocalGrupoLgp) o2).getIdentificacaoLgp());
                }
            } );
    }
   
    return grupos;
  }
 
  /**
   * Retorna a lista de LocalGrupoLgpFilhos (1o n�vel) ativos de um grupo
   * @param grupo
   * @return List LocalGrupoLgp
   * @throws HibernateException
   */
  public List getGruposFilhos(LocalGrupoLgp grupo) throws HibernateException {
    List grupos = new ArrayList();
   
    if (grupo.getLocalGrupoHierarquiaLgphsByCodLgpPai() != null) {
      grupos = new ArrayList(grupo.getLocalGrupoHierarquiaLgphsByCodLgpPai());
      Iterator it = grupos.iterator();
      while(it.hasNext()) {
        LocalGrupoLgp lgp = (LocalGrupoLgp)it.next();
        if(!"S".equals(lgp.getIndAtivoLgp())) {
          it.remove();
        }
      }
          Collections.sort(grupos,
                new Comparator() {
                public int compare(Object o1, Object o2) {
                  return ((LocalGrupoLgp) o1).getIdentificacaoLgp().compareToIgnoreCase(((LocalGrupoLgp) o2).getIdentificacaoLgp());
                }
            } );
    }
   
    return grupos;
  }
 
  public List<LocalGrupoLgp> getGrupoLocaisItem(){
    List<LocalGrupoLgp> grupos = new ArrayList();
   
    return grupos;
  }
 
 
}
TOP

Related Classes of ecar.dao.LocalGrupoDao

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.