Package ecar.dao

Source Code of ecar.dao.ItemEstUsutpfuacDao

/*
* Criado em 15/02/2005
*
*/
package ecar.dao;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Query;

import comum.database.Dao;

import ecar.exception.ECARException;
import ecar.pojo.AcompReferenciaItemAri;
import ecar.pojo.AcompRelatorioArel;
import ecar.pojo.ItemEstUsutpfuacIettutfa;
import ecar.pojo.ItemEstUsutpfuacIettutfaPK;
import ecar.pojo.ItemEstrutUsuarioIettus;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.TipoFuncAcompTpfa;
import ecar.pojo.TipoFuncAcompTpfaPermiteAlterar;
import ecar.pojo.TipoFuncAcompTpfaPermiteAlterarPK;
import ecar.pojo.UsuarioAtributoUsua;
import ecar.pojo.UsuarioUsu;

/**
* @author evandro
*
*/
public class ItemEstUsutpfuacDao extends Dao{
 
    /**
     *
     */
    public ItemEstUsutpfuacDao() {
    super();
  }
 
    /**
     *
     * @param request
     */
    public ItemEstUsutpfuacDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
    /**
     * Pesquisa ItemEstUsutpfuac referente a ItemEstrutura e funcao
     *
     * @param itemEstrutura
     * @param funcao
     * @return ItemEstUsutpfuac  - sen�o encontrar retorna NULL
     * @throws ECARException
     */
    public ItemEstUsutpfuacIettutfa getUsuarioAcompanhamento (ItemEstruturaIett itemEstrutura, TipoFuncAcompTpfa funcao) throws ECARException{
     
      ItemEstUsutpfuacIettutfa itemEstUsu = new ItemEstUsutpfuacIettutfa();
     
      itemEstUsu.setItemEstruturaIett(itemEstrutura);
    itemEstUsu.setTipoFuncAcompTpfa(funcao);
   
    /* buscar em tpfuac o usu�rio a partir de codFuncao e codItem */
    List lista = pesquisar(itemEstUsu, new String[] {"tipoFuncAcompTpfa.codTpfa","asc"});
    Iterator it = lista.iterator();
   
    /* se n�o encontrar nome do usu�rio, devolver vazio */
    if (it.hasNext()){
      return (ItemEstUsutpfuacIettutfa) it.next();
    }
   
    return null;
    }

    /**
     * Obter os ItemEstUsutpfuacIettutfa de uma lista de itens
     *
     * @param listItemEstrutura
     * @return List
     * @throws ECARException
     */
    public List getItemEstUsutpfuacIettutfa(List listItemEstrutura) throws ECARException {
      List retorno = new ArrayList();
      Iterator it = listItemEstrutura.iterator();
      while(it.hasNext()) {
        ItemEstruturaIett iett = (ItemEstruturaIett)it.next();
        if(iett.getItemEstUsutpfuacIettutfas() != null) {
          retorno.addAll(iett.getItemEstUsutpfuacIettutfas());
        }
      }
    return retorno;
    }
   
    /**
     * Retorna uma lista com todos os usu�rios que emitem parecer no acompanhamento de um item.
     * @param itemEstrutura
     * @return
     * @throws ECARException
     */
    public List getUsuariosAcompanhamento (ItemEstruturaIett itemEstrutura) throws ECARException{
     
        List retorno = new ArrayList();
       
      ItemEstUsutpfuacIettutfa itemEstUsu = new ItemEstUsutpfuacIettutfa();
     
      itemEstUsu.setItemEstruturaIett(itemEstrutura);

      List lista = pesquisar(itemEstUsu, null);
    Iterator it = lista.iterator();
   
    /* se n�o encontrar nome do usu�rio, devolver vazio */
    while (it.hasNext()){
        ItemEstUsutpfuacIettutfa item = (ItemEstUsutpfuacIettutfa) it.next();
        if (item.getUsuarioUsu() != null){
          retorno.add(item.getUsuarioUsu());
        } else if (item.getSisAtributoSatb() != null){
          if (item.getSisAtributoSatb().getUsuarioAtributoUsuas() != null){
            Iterator itUsuariosAtributos = item.getSisAtributoSatb().getUsuarioAtributoUsuas().iterator();
            while (itUsuariosAtributos.hasNext()){
              retorno.add(((UsuarioAtributoUsua) itUsuariosAtributos.next()).getUsuarioUsu());
            }
          }
        }
    }   
    return retorno;
    }
   
    /**
     * Retorna um objeto ItemEstUsutpfuacIettutfa a partir dos c�digos
     *
     * @param codIett
     * @param codTpfa
     * @return
     * @throws ECARException
     */
    public ItemEstUsutpfuacIettutfa buscar(Long codIett, Long codTpfa) throws ECARException {
      ItemEstUsutpfuacIettutfaPK chave = new ItemEstUsutpfuacIettutfaPK();
      ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = null;
           
      try{
        chave.setCodIett(codIett);
        chave.setCodTpfa(codTpfa);
  
        return (ItemEstUsutpfuacIettutfa) super.buscar(ItemEstUsutpfuacIettutfa.class, chave);
   
      } catch (ECARException e) {
       
        return itemEstUsutpfuacIettutfa;
      }
    }
   
    /**
    *
    * @param codIett
    * @param codTpfa
    * @return
    * @throws ECARException
    */
   public TipoFuncAcompTpfa buscarMaiorHierarquia(Long codIett, Long codTpfa) throws ECARException {
     TipoFuncAcompTpfa tpfaSuperior = null;
     List listaEstruturas = new ArrayList();
    
    
    Set setTPFAPA = new HashSet();
        try{
          String select = "from TipoFuncAcompTpfaPermiteAlterar as tipo " +
        " where tipo.comp_id.cod_inferior_tpfapa.codTpfa= :cod " +
        " and tipo.permiteAlterarParecer= :permite";
        Query q = this.session.createQuery(select);
       
        q.setLong("cod", codTpfa);
        q.setString("permite", "S");
       
        setTPFAPA.addAll(q.list());
       
            } catch(Exception e){
              e.printStackTrace();
        }
           
        for (Object object : setTPFAPA) {
     
        TipoFuncAcompTpfaPermiteAlterar tipo = (TipoFuncAcompTpfaPermiteAlterar) object;
        listaEstruturas.add(tipo.getComp_id().getCod_superior_tpfapa());    
     
         }
    
     if(listaEstruturas.size() == 1){
       tpfaSuperior = ((TipoFuncAcompTpfa)listaEstruturas.get(0)).getTipoFuncAcompTpfa();
     } else if(listaEstruturas.size() > 1){
       for (Object object : listaEstruturas) {
         TipoFuncAcompTpfa tpfa = (TipoFuncAcompTpfa) object;
         if(tpfa.getTipoFuncAcompTpfa()==null){
           tpfaSuperior = tpfa;
           break;
         }
       }
      
     }
    
     return tpfaSuperior;    
   }
   
   /**
    * Recupera a maior hierarquia do tipo de fun��o de acompanhamento associada ao ari e que tenha permiss�o para alterar o parecer
    * @param ari
    * @param tpfa
    * @return
    * @throws ECARException
    */
   public TipoFuncAcompTpfa buscarMaiorHierarquia(ItemEstruturaIett itemEstruturaIett, TipoFuncAcompTpfa tpfa, UsuarioUsu usuarioLogado) throws ECARException {
     TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(request);
     UsuarioDao usuarioDao = new UsuarioDao(request);
     TipoFuncAcompTpfa tpfaSuperior = null;
     ItemEstUsutpfuacIettutfa iettutfa = null;
     List<TipoFuncAcompTpfa> funcoesSuperiores = tipoFuncAcompDao.getListaTpfaSuperioresOrderByHierarquia(tpfa);    
     for (TipoFuncAcompTpfa tipoFuncAcompTpfa : funcoesSuperiores) {
       iettutfa = getUsuarioAcompanhamento(itemEstruturaIett, tipoFuncAcompTpfa);
       //Se existir usu�rio ou grupo associado a fun��o
       //o sistema verifica se � o usu�rio logado ou algum grupo que ele perten�a
       if (iettutfa != null){
         if (iettutfa.getUsuarioUsu() != null && iettutfa.getUsuarioUsu().equals(usuarioLogado)){
           //Verifica se o usu�rio logado est� associado a fun��o
           tpfaSuperior = tipoFuncAcompTpfa;
           break;
         } else if (iettutfa.getSisAtributoSatb() != null){
           Set gruposAcessoUsuarioLogado = usuarioDao.getClassesAcessoUsuario(usuarioLogado);
           //Verifica se o usu�rio logado pertence ao grupo de usu�rio associado a fun��o do item
           if (gruposAcessoUsuarioLogado != null && gruposAcessoUsuarioLogado.contains(iettutfa.getSisAtributoSatb())){
             tpfaSuperior = tipoFuncAcompTpfa;
             break;
           }
         }
       }      
     }    
     return tpfaSuperior;    
   }
  
  
  
    /**
     *
     * @param codIett
     * @param codTpfa
     * @return
     * @throws ECARException
     */
    public List buscarSuperiores(Long codIett, Long codTpfa) throws ECARException {
     
    Set setTPFAPA = new HashSet();
    List listaEstruturas = new ArrayList();
        try{
          String select = "from TipoFuncAcompTpfaPermiteAlterar as tipo " +
        " where tipo.comp_id.cod_inferior_tpfapa.codTpfa= :cod " +
        " and tipo.permiteAlterarParecer= :permite";
        Query q = this.session.createQuery(select);
       
        q.setLong("cod", codTpfa);
        q.setString("permite", "S");
       
        setTPFAPA.addAll(q.list());
       
            } catch(Exception e){
              e.printStackTrace();
            }
     
      for (Object object : setTPFAPA) {
     
        ItemEstUsutpfuacIettutfaPK chave = new ItemEstUsutpfuacIettutfaPK();
        ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = null;
       
        TipoFuncAcompTpfaPermiteAlterar tipo = (TipoFuncAcompTpfaPermiteAlterar) object;
       
        try{
         
          chave.setCodIett(codIett);
          chave.setCodTpfa(tipo.getComp_id().getCod_superior_tpfapa().getCodTpfa());
    
          listaEstruturas.add((ItemEstUsutpfuacIettutfa) super.buscar(ItemEstUsutpfuacIettutfa.class, chave));
          //return (ItemEstUsutpfuacIettutfa) super.buscar(ItemEstUsutpfuacIettutfa.class, chave);
     
        } catch (ECARException e) {
          continue;
        }
      }
      return listaEstruturas;
    }
   
   
    /**
     * Retorna true se o Usuario possuir alguma fun��o que informa andamento
     *     para o item passado como par�metro.
     *
     * @param usuario
     * @param item
     * @return
     * @throws ECARException
     */
    public boolean getFuncaoAcompInfAndamento (UsuarioUsu usuario, ItemEstruturaIett item) throws ECARException{
      boolean infAndamento = false;
     
      ItemEstrutUsuarioIettus itemEstUsu = new ItemEstrutUsuarioIettus();
     
      itemEstUsu.setItemEstruturaIett(item);
    itemEstUsu.setUsuarioUsu(usuario);
    itemEstUsu.setCodTpPermIettus("F");
   
    List lista = pesquisar(itemEstUsu, new String[] {"codIettus","asc"});
    Iterator it = lista.iterator();
   
    while(it.hasNext()){
      ItemEstrutUsuarioIettus itemEstUsuLista = (ItemEstrutUsuarioIettus) it.next();
     
      if("S".equalsIgnoreCase(itemEstUsuLista.getIndInfAndamentoIettus()))
        infAndamento = true;
    }
   
 
    Iterator itUsuarios = item.getItemEstUsutpfuacIettutfas().iterator();
   
    while (itUsuarios.hasNext() && !infAndamento){
     
      ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = (ItemEstUsutpfuacIettutfa) itUsuarios.next();
     
      if (itemEstUsutpfuacIettutfa.getSisAtributoSatb() != null) {
       
        itemEstUsu = new ItemEstrutUsuarioIettus();
         
          itemEstUsu.setItemEstruturaIett(item);
        itemEstUsu.setSisAtributoSatb(itemEstUsutpfuacIettutfa.getSisAtributoSatb());
        itemEstUsu.setCodTpPermIettus("F");
       
        List listaItemEstUsu = pesquisar(itemEstUsu, new String[] {"codIettus","asc"});
       
        Iterator itItemEstUsu = listaItemEstUsu.iterator();
       
        while (itItemEstUsu.hasNext()){
         
          ItemEstrutUsuarioIettus itemEstUsuLista = (ItemEstrutUsuarioIettus) itItemEstUsu.next();
         
          if("S".equalsIgnoreCase(itemEstUsuLista.getIndInfAndamentoIettus())){
            if (new UsuarioDao().getUsuariosBySisAtributoSatb(itemEstUsutpfuacIettutfa.getSisAtributoSatb()).contains(usuario)){
              infAndamento = true;
              break;
            }
          }
         
        }
       
      }
    }
   
    return infAndamento;
    }

   
    /**
     * Devolve uma lista de ItemEstUsutpfuac de acordo com a ordem correta de filho para pai.
     * A lista cont�m somente FUAC que tenham funcoes que emitem posicao
     * @param item
     * @return
     * @throws ECARException
     */
    public List getFuacEmitePosicaoOrderByFuncAcomp(ItemEstruturaIett item)
  throws ECARException {
   
      List lResultado = new ArrayList();
 
      TipoFuncAcompDao tpfaDao = new TipoFuncAcompDao(request);
      // lista mestre com a ordem correta
      List lFuncAcomp = tpfaDao.ordenarTpfaBySequencia(item.getEstruturaEtt());
     
      // lista dos fuac a serem ordenados
      Set lItemFuac = item.getItemEstUsutpfuacIettutfas();
     
      TipoFuncAcompTpfa funcao;
      ItemEstUsutpfuacIettutfa itemFuac;
     
      if (item != null && lItemFuac != null) {
          // loop nas funcoes em ordem de filho para pai
          Iterator itFunc = lFuncAcomp.iterator();
          while (itFunc.hasNext()) {
              funcao = (TipoFuncAcompTpfa) itFunc.next();
              Iterator itFuac = lItemFuac.iterator();
              // busca no fuac a funcao que corresponde � hierarquia
              while (itFuac.hasNext()) {
                  itemFuac = (ItemEstUsutpfuacIettutfa) itFuac.next();
                  if (itemFuac.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
                      lResultado.add(itemFuac);
                      break;
                  }
              }
          }
      }
      return lResultado;
  }

   
    /**
     * Devolve uma lista de ItemEstUsutpfuac de acordo com a ordem correta de filho para pai.
     * @param item
     * @return
     * @throws ECARException
     */
    public List getFuacOrderByFuncAcomp(ItemEstruturaIett item) throws ECARException {
   
      List lResultado = new ArrayList();
 
      List lFuncAcomp = new TipoFuncAcompDao(request).getTipoFuncAcompOrdemFilhoAoPai();
     
      // lista dos fuac a serem ordenados
      Set lItemFuac = item.getItemEstUsutpfuacIettutfas();
     
      TipoFuncAcompTpfa funcao;
      ItemEstUsutpfuacIettutfa itemFuac;
     
      if (item != null && lItemFuac != null) {
          // loop nas funcoes em ordem de filho para pai
          Iterator itFunc = lFuncAcomp.iterator();
          while (itFunc.hasNext()) {
              funcao = (TipoFuncAcompTpfa) itFunc.next();
              Iterator itFuac = lItemFuac.iterator();
              // busca no fuac a funcao que corresponde � hierarquia
              while (itFuac.hasNext()) {
                  itemFuac = (ItemEstUsutpfuacIettutfa) itFuac.next();
                  if (itemFuac.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
                      lResultado.add(itemFuac);
                      break;
                  }
              }
          }
      }
      return lResultado;
  }
   
}
TOP

Related Classes of ecar.dao.ItemEstUsutpfuacDao

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.