Package ecar.dao

Source Code of ecar.dao.EstruturaAtributoDao

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

import comum.database.Dao;

import comum.util.ConstantesECAR;
import comum.util.Pagina;
import comum.util.Util;

import ecar.bean.AtributoEstruturaBean;

import ecar.exception.ECARException;

import ecar.pojo.AtributosAtb;
import ecar.pojo.ConfiguracaoCfg;
import ecar.pojo.EstAtribTipoAcompEata;
import ecar.pojo.EstruturaAtributoEttat;
import ecar.pojo.EstruturaEtt;
import ecar.pojo.EstruturaFuncaoEttf;
import ecar.pojo.FuncaoFun;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
import ecar.pojo.SisAtributoSatb;
import ecar.pojo.TipoAcompanhamentoTa;
import ecar.pojo.TipoFuncAcompTpfa;

import ecar.taglib.util.Input;
import ecar.util.Dominios;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Transaction;

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;

/**
* @author felipev, aleixo
*
*/
public class EstruturaAtributoDao
    extends Dao
{
    /*private AtributoDao atributoDao = null;
    private EstruturaDao estruturaDao = null;*/

    // Constantes
    private ConfiguracaoCfg config;

    /**
     * Construtor. Chama o Session factory do Hibernate
     * @param request
     * @throws ECARException
     */
    public EstruturaAtributoDao( HttpServletRequest request )
                         throws ECARException
    {
        super(  );
        this.request = request;
        config = new ConfiguracaoDao( null ).getConfiguracao(  );

        /*atributoDao = new AtributoDao(this.request);
        estruturaDao = new EstruturaDao(this.request);*/
    }

    /**
     * Controla listas
     * @author n/c
     * @param request
     * @param listaEstrutura
     * @param listaAtributo
     * @param listaFuncao
     * @throws ECARException
     */
    public void controlaListas( HttpServletRequest request, List listaEstrutura, List listaAtributo, List listaFuncao )
                        throws ECARException
    {
        EstruturaEtt estruturaEtt = null;
        AtributosAtb atributosAtb = null;
        FuncaoFun funcaoFun = null;

        if ( Pagina.getParam( request, "estruturaEtt" ) != null )
        {
            estruturaEtt =
                (EstruturaEtt) new EstruturaDao( request ).buscar( EstruturaEtt.class,
                                                                   Long.valueOf( Pagina.getParam( request,
                                                                                                  "estruturaEtt" ) ) );
        }

        if ( Pagina.getParam( request, "funcaoFun" ) != null )
        {
            funcaoFun =
                (FuncaoFun) new FuncaoDao( request ).buscar( FuncaoFun.class,
                                                             Long.valueOf( Pagina.getParam( request, "funcaoFun" ) ) );
        }

        if ( Pagina.getParam( request, "atributosAtb" ) != null )
        {
            atributosAtb =
                (AtributosAtb) new AtributoDao( request ).buscar( AtributosAtb.class,
                                                                  Long.valueOf( Pagina.getParam( request, "atributosAtb" ) ) );
        }

        if ( ( estruturaEtt != null ) || ( atributosAtb != null ) )
        {
            listaFuncao.addAll( this.getFuncoes( estruturaEtt, atributosAtb ) );
        } else
        {
            FuncaoFun funcaoFunFiltro = new FuncaoFun(  );
            funcaoFunFiltro.setIndPossuiAtributos( "S" );
            listaFuncao.addAll( new FuncaoDao( request ).pesquisar(
                                                                    funcaoFunFiltro,
                                                                    new String[] { "labelPadraoFun", "asc" } ) ); //listar(FuncaoFun.class, new String[]{"labelPadraoFun", "asc"}));
        }

        if ( ( estruturaEtt != null ) || ( funcaoFun != null ) )
        {
            listaAtributo.addAll( this.getAtributos( estruturaEtt, funcaoFun ) );
        } else
        {
            listaAtributo.addAll( new AtributoDao( request ).listar(
                                                                     AtributosAtb.class,
                                                                     new String[] { "funcaoFun", "asc", "nomeAtb", "asc" } ) );
        }

        //Pesquisa apenas estruturas n�o-virtuais
        if ( ( funcaoFun != null ) || ( atributosAtb != null ) )
        {
            listaEstrutura.addAll( this.getEstruturasNaoVirtuais( funcaoFun, atributosAtb ) );
        } else
        {
            EstruturaEtt estruturaPesquisa = new EstruturaEtt(  );
            estruturaPesquisa.setVirtual( false );
            listaEstrutura.addAll( new EstruturaDao( request ).pesquisar(
                                                                          estruturaPesquisa,
                                                                          new String[] { "nomeEtt", "asc" } ) ); //listar(EstruturaEtt.class, new String[]{"nomeEtt", "asc"}));
        }
    }

    /**
     *
     * @author n/c
     * @param request
     * @param estruturaAtributo
     * @throws ECARException
     * @throws HibernateException
     */
    public void alterar( HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo )
                 throws ECARException, HibernateException
    {
        EstAtribTipoAcompEataDao eataDao = new EstAtribTipoAcompEataDao( null );
        TipoAcompanhamentoDao taDao = new TipoAcompanhamentoDao( null );
        Transaction tx = null;

        try
        {
            tx = this.session.beginTransaction(  );
            /*
             * Gravar a EstruturaAtributoEttat
             */
            this.setEstruturaAtributo( request, estruturaAtributo, true );

            session.update( estruturaAtributo );
            session.merge( estruturaAtributo );

//      Entidade.gerarHistorico(estruturaAtributo, Entidade.ALTERAR, Entidade.IETT_ITEM_ESTRUTURA,
//          config, request, session);

            /* Gravar os objetos TipoAcompanhamentoTa
             * 1 - Pegar pelo request quantos TipoAcompanhamentoTa foram informados na tela
             */
            String codTas = Pagina.getParamStr( request, "codTas" );
            ArrayList<Long> tas = new ArrayList<Long>();

            String codTemp = "";

            for ( int i = 0; i < codTas.length(  ); i++ ){
                if ( ! codTas.substring( i, i + 1 ).equals( "|" ) ){
                    codTemp = codTemp + codTas.substring( i, i + 1 );
                } else {
                    if ( ! codTemp.trim(  ).equals( "" ) ){
                        tas.add( Long.valueOf( codTemp ) );
                        codTemp = "";
                    }
                }
            }

            Iterator it = tas.iterator(  );

            while ( it.hasNext(  ) )
            {
                Long codigoTas = (Long) it.next(  );

                //System.out.println("tas: " + codigoTas);
                /*
                 * 2 - Para cada TipoAcompanhamento, buscar o tipo.
                 */
                TipoAcompanhamentoTa ta =
                    (TipoAcompanhamentoTa) taDao.buscar( TipoAcompanhamentoTa.class,
                                                         Long.valueOf( codigoTas ) );

                if ( ta != null )
                {
                    /* 3 - Estanciar objeto EstAtribTipoAcompEata setando os valores vindos do request */
                    EstAtribTipoAcompEata eata = eataDao.getEstAtribTipoAcompEata( estruturaAtributo, ta );

                    if ( eata == null )
                    {
                        eata = new EstAtribTipoAcompEata(  );
                        eata.setEstruturaAtributoEttat( estruturaAtributo );
                        eata.setTipoAcompanhamentoTa( ta );
                    }

                    String exibirEata = Pagina.getParamStr( request, "exibirEata" + ta.getCodTa(  ).toString(  ));
                   
                    if (Dominios.STRING_VAZIA.equals(exibirEata)){
                      exibirEata = Dominios.NAO;
                    }
                   
                    eata.setExibirEata(exibirEata);

                    if ( ! "".equals( Pagina.getParamStr( request, "sequenciaEata" + ta.getCodTa(  ).toString(  ) ) ) ){
                        eata.setSequenciaEata( Long.valueOf( Pagina.getParamStr( request,
                                                                                 "sequenciaEata" +
                                                                                 ta.getCodTa(  ).toString(  ) ) ) );
                    } else {
                        eata.setSequenciaEata( null );
                    }

                    //SERPRO
                    String filtroStr = Pagina.getParamStr( request, "filtroEata" + ta.getCodTa(  ).toString(  ));
                   
                    if (Dominios.STRING_VAZIA.equals(filtroStr)){
                      filtroStr = Dominios.NAO;
                    }
                   
                    eata.setFiltroEata(filtroStr);

                    if ( eata.getCodEata(  ) == null )
                    {
                        session.save( eata );
                    } else
                    {
                        session.update( eata );
                    }
                }
            }

            tx.commit(  );
        } catch ( Exception e )
        {
            if ( tx != null )
            {
                tx.rollback(  );
            }

            this.logger.error( e );
            throw new ECARException( "erro.hibernateException" );
        }
    }

    /**
     *
     * @author n/c
     * @param request
     * @param estruturaAtributo
     * @param usarGetParamStr
     * @throws ECARException
     */
    public void setEstruturaAtributo( HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo,boolean usarGetParamStr )throws ECARException{
     
        if ( Pagina.getParam( request, "estruturaEtt" ) != null ){
            estruturaAtributo.setEstruturaEtt( (EstruturaEtt) ( new EstruturaDao( request ).buscar(EstruturaEtt.class,Long.valueOf( Pagina.getParam( request,"estruturaEtt" ) ) )) );
        }

        if ( Pagina.getParam( request, "atributosAtb" ) != null ){
            estruturaAtributo.setAtributosAtb( (AtributosAtb) new AtributoDao( request ).buscar(AtributosAtb.class,Long.valueOf( Pagina.getParam( request,"atributosAtb" ) ) ) );
        }

        /*LUANA*/
        if ( Pagina.getParam( request, "labelTamanhoConteudo" ) != null ){
            estruturaAtributo.setTamanhoConteudoAtribEttat( Integer.valueOf( Pagina.getParamStr( request,"labelTamanhoConteudo" ) ) );
        } else {
            estruturaAtributo.setTamanhoConteudoAtribEttat( null );
        }

        if ( usarGetParamStr ){
            estruturaAtributo.setLabelEstruturaEttat( Pagina.getParamStr( request, "labelEstruturaEttat" ).trim(  ) );
            estruturaAtributo.setIndObrigatorioEttat( Pagina.getParamOrDefault( request, "indObrigatorioEttat",Pagina.NAO ) );
            estruturaAtributo.setIndPodeBloquearEttat( Pagina.getParamOrDefault( request, "indPodeBloquearEttat",Pagina.NAO ) );
            estruturaAtributo.setIndFiltroEttat( Pagina.getParamOrDefault( request, "indFiltroEttat", Pagina.NAO ) );
            estruturaAtributo.setIndListagemTelaEttat( Pagina.getParamOrDefault( request, "indListagemTelaEttat",Pagina.NAO ) );
            estruturaAtributo.setIndRevisaoEttat( Pagina.getParamOrDefault( request, "indRevisaoEttat", Pagina.NAO ) );
            estruturaAtributo.setIndListagemImpressCompEtta( Pagina.getParamOrDefault( request,"indListagemImpressCompEtta",Pagina.NAO ) );
            estruturaAtributo.setIndListagemImpressaResEtta( Pagina.getParamOrDefault( request,"indListagemImpressaResEtta",Pagina.NAO ) );
            estruturaAtributo.setIndRelacaoImpressaEttat( Pagina.getParamOrDefault( request, "indRelacaoImpressaEttat",Pagina.NAO ) );
            estruturaAtributo.setIndListagemArvoreEttat( Pagina.getParamOrDefault( request, "indListagemArvoreEttat",Pagina.NAO ) );
        } else {
            estruturaAtributo.setLabelEstruturaEttat( Pagina.getParam( request, "labelEstruturaEttat" ) );
            estruturaAtributo.setIndObrigatorioEttat( Pagina.getParam( request, "indObrigatorioEttat" ) );
            estruturaAtributo.setIndPodeBloquearEttat( Pagina.getParam( request, "indPodeBloquearEttat" ) );
            estruturaAtributo.setIndFiltroEttat( Pagina.getParam( request, "indFiltroEttat" ) );
            estruturaAtributo.setIndListagemTelaEttat( Pagina.getParam( request, "indListagemTelaEttat" ) );
            estruturaAtributo.setIndRevisaoEttat( Pagina.getParam( request, "indRevisaoEttat" ) );
            estruturaAtributo.setIndListagemImpressCompEtta( Pagina.getParam( request, "indListagemImpressCompEtta" ) );
            estruturaAtributo.setIndListagemImpressaResEtta( Pagina.getParam( request, "indListagemImpressaResEtta" ) );
            estruturaAtributo.setIndRelacaoImpressaEttat( Pagina.getParam( request, "indRelacaoImpressaEttat" ) );
            estruturaAtributo.setIndListagemArvoreEttat( Pagina.getParam( request, "indListagemArvoreEttat" ) );
        }

        if ( Pagina.getParam( request, "seqApresentTelaCampoEttat" ) != null ) {
            estruturaAtributo.setSeqApresentTelaCampoEttat( Integer.valueOf( Pagina.getParam( request,"seqApresentTelaCampoEttat" ) ) );
        }

        /* campos abaixo n�o s�o obrigat�rios */
        if ( Pagina.getParam( request, "larguraListagemTelaEttat" ) != null ){
            estruturaAtributo.setLarguraListagemTelaEttat( Integer.valueOf( Pagina.getParam( request,"larguraListagemTelaEttat" ) ) );
        } else{
            estruturaAtributo.setLarguraListagemTelaEttat( null );
        }

        if ( Pagina.getParam( request, "seqApresListagemTelaEttat" ) != null ){
            estruturaAtributo.setSeqApresListagemTelaEttat( Integer.valueOf( Pagina.getParam( request,"seqApresListagemTelaEttat" ) ) );
        } else{
            estruturaAtributo.setSeqApresListagemTelaEttat( null );
        }

        if ( Pagina.getParam( request, "dicaEttat" ) != null ){
            estruturaAtributo.setDicaEttat( Pagina.getParam( request, "dicaEttat" ) );
        } else{
            estruturaAtributo.setDicaEttat( null );
        }

        if ( Pagina.getParam( request, "documentacaoEttat" ) != null ){
            estruturaAtributo.setDocumentacaoEttat( Pagina.getParam( request, "documentacaoEttat" ) );
        } else{
            estruturaAtributo.setDocumentacaoEttat( null );
        }
    }

    /**
     * Verifica��o das estruturas de acompanhementos que para quem o bloqueio foi liberado
     * @return  Conjunto com a lista de tipo de acompanhamento
     */
    public Set setLimbTipoFuncAcompTpfa(  )
    {
        Set<TipoFuncAcompTpfa> set = new HashSet<TipoFuncAcompTpfa>(  );

        if ( request.getParameterValues( "limbTipoFuncAcompTpfa" ) != null )
        {
            String[] strLibTipoFuncAcomp = request.getParameterValues( "limbTipoFuncAcompTpfa" );
            Long codTpfa = null;

            try
            {
                for ( int i = 0; i < strLibTipoFuncAcomp.length; i++ )
                {
                    codTpfa = Long.parseLong( strLibTipoFuncAcomp[i] );

                    TipoFuncAcompTpfa tipoFuncAcomp =
                        (TipoFuncAcompTpfa) this.buscar( TipoFuncAcompTpfa.class, codTpfa );

                    set.add( tipoFuncAcomp );
                } //fim for
            } catch ( ECARException e )
            {
//        e.printStackTrace();
            }
        } //fim if

        return set;
    }

    /**
     * Retorna a Label de um atributo em uma estrutura
     * @param nomeAtributo
     * @param estrutura
     * @return
     * @throws ECARException
     */
    public String getLabelAtributoEstrutura( String nomeAtributo, EstruturaEtt estrutura )
                                     throws ECARException
    {
        AtributosAtb atributo = new AtributosAtb(  );
        atributo.setNomeAtb( nomeAtributo );

        List atb = super.pesquisar( atributo, null );

        if ( atb.size(  ) > 0 )
        {
            atributo = (AtributosAtb) atb.get( 0 );

            EstruturaAtributoEttat estruturaAtributo = new EstruturaAtributoEttat(  );
            estruturaAtributo.setAtributosAtb( atributo );
            estruturaAtributo.setEstruturaEtt( estrutura );

            List estAtb = super.pesquisar( estruturaAtributo, null );

            if ( estAtb.size(  ) > 0 )
            {
                return ( (EstruturaAtributoEttat) estAtb.get( 0 ) ).getLabelEstruturaEttat(  );
            }
            else if (atributo.getLabelPadraoAtb() != null && !atributo.getLabelPadraoAtb().equals("")){
              return atributo.getLabelPadraoAtb();
             
            }else{
                return "";
            }
        }

        return "";
    }

    /**
     * Devolve uma lista com todas os atributos vinculados a uma estrutura
     * @param estruturaEtt
     * @return List de AtributosAtb
     * @throws ECARException
     */
    public List getAtributos( EstruturaEtt estruturaEtt )
                      throws ECARException
    {
        return this.getAtributos( estruturaEtt, null );
    }

    /**
     * Devolve uma lista com todos os atributos vinculados a uma estrutura e uma fun��o
     * @param estruturaEtt
     * @param funcaoFun
     * @return List de AtributosAtb
     * @throws ECARException
     */
    public List getAtributos( EstruturaEtt estruturaEtt, FuncaoFun funcaoFun )
                      throws ECARException
    {
        List retorno = new ArrayList(  );

        if ( ( estruturaEtt != null ) && ( estruturaEtt.getEstruturaAtributoEttats(  ) != null ) )
        {
            Iterator itEstruturaAtributoEttats = estruturaEtt.getEstruturaAtributoEttats(  ).iterator(  );

            while ( itEstruturaAtributoEttats.hasNext(  ) )
            {
                EstruturaAtributoEttat estruturaAtributoEttat =
                    (EstruturaAtributoEttat) itEstruturaAtributoEttats.next(  );

                if ( funcaoFun != null )
                {
                    if ( ! estruturaAtributoEttat.getAtributosAtb(  ).getFuncaoFun(  ).equals( funcaoFun ) )
                    {
                        continue;
                    }
                }

                retorno.add( estruturaAtributoEttat.getAtributosAtb(  ) );
            }
        } else if ( funcaoFun != null )
        {
            if ( funcaoFun.getAtributosAtbs(  ) != null )
            {
                retorno.addAll( funcaoFun.getAtributosAtbs(  ) );
            }
        }

        return retorno;
    }
   
    /**
     * Retorna um list com identifica��es de todos os Atributos de um grupo de atributos
     *
     * @param estrutura
     * @param funcaoFun
     * @return List de Long
     */
    public List getAtributosById(Set<SisAtributoSatb> atributos) {
        List lAtributos = new ArrayList();
        if (atributos != null) {
            Iterator it = atributos.iterator();
            while (it.hasNext()) {
              SisAtributoSatb atributo = (SisAtributoSatb) it.next();
                 lAtributos.add(atributo.getCodSatb());
            }
        }
        return lAtributos;
    }

    /**
     * Devolve uma lista com todos os atributos de uma estrutura e uma fun��o que podem ser visualizados de acordo com estrutura superior
     * @param estruturaEtt
     * @param funcaoFun
     * @return List de AtributosAtb
     * @throws ECARException
     */
    public List<AtributosAtb> getAtributosVisualizarEttSuperior(EstruturaEtt estruturaEtt, FuncaoFun funcaoFun) throws ECARException {
        List<AtributosAtb> retorno = new ArrayList<AtributosAtb>();

        if((estruturaEtt != null) && (estruturaEtt.getEstruturaAtributoEttats() != null)) {
          EstruturaEtt estrutura = (EstruturaEtt)this.buscar(EstruturaEtt.class, estruturaEtt.getCodEtt());
            Iterator<EstruturaAtributoEttat> itEstruturaAtributoEttats = estrutura.getEstruturaAtributoEttats().iterator();

            while(itEstruturaAtributoEttats.hasNext()) {
                EstruturaAtributoEttat estruturaAtributoEttat = (EstruturaAtributoEttat) itEstruturaAtributoEttats.next();
                if(funcaoFun != null) {
                    if(!estruturaAtributoEttat.getAtributosAtb().getFuncaoFun().equals(funcaoFun)) {
                        continue;
                    }
                }
                AtributosAtb atributoAtb = estruturaAtributoEttat.getAtributosAtb();
                if( atributoAtb.getSisGrupoAtributoSga() != null && atributoAtb.getIndAtivoAtb().equals(Dominios.ATIVO) &&
                  temAtributosAtivos(atributoAtb.getSisGrupoAtributoSga().getSisAtributoSatbs()) &&
                  (atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.CHECKBOX)) ||
                  atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.COMBOBOX)) ||
                  atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.LISTBOX)) ||
                  atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.RADIO_BUTTON))) ) {
                    retorno.add(atributoAtb);
                }
            }
        } else if(funcaoFun != null) {
          if(funcaoFun.getAtributosAtbs() != null) {
            Iterator<AtributosAtb> itAtributosAtb = funcaoFun.getAtributosAtbs().iterator();
            while(itAtributosAtb.hasNext()) {
              AtributosAtb atributoAtb = (AtributosAtb) itAtributosAtb.next();
                    if(funcaoFun != null) {
                        if(!atributoAtb.getFuncaoFun().equals(funcaoFun)) {
                            continue;
                        }
                    }
                    if( atributoAtb.getSisGrupoAtributoSga() != null && atributoAtb.getIndAtivoAtb().equals(Dominios.ATIVO) &&
                      temAtributosAtivos(atributoAtb.getSisGrupoAtributoSga().getSisAtributoSatbs()) &&
                        (atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.CHECKBOX)) ||
                        atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.COMBOBOX)) ||
                        atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.LISTBOX)) ||
                        atributoAtb.getSisGrupoAtributoSga().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.RADIO_BUTTON))) ) {
                          retorno.add(atributoAtb);
                    }
                }
            }
        }

        return retorno;
    }
   
    private boolean temAtributosAtivos(Set<SisAtributoSatb> setSisAtributoSatb) {
      boolean retorno = false;
      if(setSisAtributoSatb != null && !setSisAtributoSatb.isEmpty()) {
        Iterator<SisAtributoSatb> itSisAtributoSatb = setSisAtributoSatb.iterator();
        while(itSisAtributoSatb.hasNext()) {
          SisAtributoSatb sisAtributoAtb = (SisAtributoSatb)itSisAtributoSatb.next()
          if(sisAtributoAtb.isAtivo()) {
            retorno = true;
            break;
          }
        }
      }
      return retorno;
    }
   
    /**
     * Devolve uma lista com todas as estruturas vinculadas a um atributo e a uma fun��o
     * @param funcaoFun
     * @param atributosAtb
     * @return List de EstruturaEtt
     * @throws ECARException
     */
    public List getEstruturas( FuncaoFun funcaoFun, AtributosAtb atributosAtb )
                       throws ECARException
    {
        List retorno = new ArrayList(  );

        if ( ( atributosAtb != null ) && ( atributosAtb.getEstruturaAtributoEttats(  ) != null ) )
        {
            Iterator itEstruturaAtributoEttats = atributosAtb.getEstruturaAtributoEttats(  ).iterator(  );

            while ( itEstruturaAtributoEttats.hasNext(  ) )
            {
                EstruturaAtributoEttat estruturaAtributoEttat =
                    (EstruturaAtributoEttat) itEstruturaAtributoEttats.next(  );

                if ( funcaoFun != null )
                {
                    if ( ! estruturaAtributoEttat.getAtributosAtb(  ).getFuncaoFun(  ).equals( funcaoFun ) )
                    {
                        continue;
                    }
                }

                retorno.add( estruturaAtributoEttat.getEstruturaEtt(  ) );
            }
        } else if ( ( funcaoFun != null ) && ( funcaoFun.getEstruturaFuncaoEttfs(  ) != null ) )
        {
            Iterator itEstruturaFuncaoEttfs = funcaoFun.getEstruturaFuncaoEttfs(  ).iterator(  );

            while ( itEstruturaFuncaoEttfs.hasNext(  ) )
            {
                retorno.add( ( (EstruturaFuncaoEttf) itEstruturaFuncaoEttfs.next(  ) ).getEstruturaEtt(  ) );
            }
        }

        return retorno;
    }

    /**
     * Devolve uma lista com todas as estruturas vinculadas a um atributo e a uma fun��o
     * @param funcaoFun
     * @param atributosAtb
     * @return List de EstruturaEtt
     * @throws ECARException
     */
    public List getEstruturasNaoVirtuais( FuncaoFun funcaoFun, AtributosAtb atributosAtb )
                                  throws ECARException
    {
        List retorno = new ArrayList(  );

        if ( ( atributosAtb != null ) && ( atributosAtb.getEstruturaAtributoEttats(  ) != null ) )
        {
            Iterator itEstruturaAtributoEttats = atributosAtb.getEstruturaAtributoEttats(  ).iterator(  );

            while ( itEstruturaAtributoEttats.hasNext(  ) )
            {
                EstruturaAtributoEttat estruturaAtributoEttat =
                    (EstruturaAtributoEttat) itEstruturaAtributoEttats.next(  );

                if ( funcaoFun != null )
                {
                    if ( ! estruturaAtributoEttat.getAtributosAtb(  ).getFuncaoFun(  ).equals( funcaoFun ) )
                    {
                        continue;
                    }
                }

                if ( ! estruturaAtributoEttat.getEstruturaEtt(  ).isVirtual(  ) )
                {
                    retorno.add( estruturaAtributoEttat.getEstruturaEtt(  ) );
                }
            }
        } else if ( ( funcaoFun != null ) && ( funcaoFun.getEstruturaFuncaoEttfs(  ) != null ) )
        {
            Iterator itEstruturaFuncaoEttfs = funcaoFun.getEstruturaFuncaoEttfs(  ).iterator(  );

            while ( itEstruturaFuncaoEttfs.hasNext(  ) )
            {
                EstruturaEtt estrutura = ( (EstruturaFuncaoEttf) itEstruturaFuncaoEttfs.next(  ) ).getEstruturaEtt(  );

                if ( ! estrutura.isVirtual(  ) )
                {
                    retorno.add( estrutura );
                }
            }
        }

        return retorno;
    }

    /**
     * Devolve uma lista com todas os atributos vinculados a uma estrutura e uma fun��o
     * @param estruturaEtt
     * @param atributosAtb
     * @return List de AtributosAtb
     * @throws ECARException
     */
    public List getFuncoes( EstruturaEtt estruturaEtt, AtributosAtb atributosAtb )
                    throws ECARException
    {
        List retorno = new ArrayList(  );

        if ( ( estruturaEtt != null ) && ( estruturaEtt.getEstruturaFuncaoEttfs(  ) != null ) )
        {
            Iterator itEstruturaFuncaoEttfs = estruturaEtt.getEstruturaFuncaoEttfs(  ).iterator(  );

            while ( itEstruturaFuncaoEttfs.hasNext(  ) )
            {
                EstruturaFuncaoEttf estruturaFuncaoEttf = (EstruturaFuncaoEttf) itEstruturaFuncaoEttfs.next(  );

                if ( atributosAtb != null )
                {
                    if ( ! estruturaFuncaoEttf.getFuncaoFun(  ).getAtributosAtbs(  ).contains( atributosAtb ) )
                    {
                        continue;
                    }
                }

                if ( ( estruturaFuncaoEttf.getFuncaoFun(  ).getIndPossuiAtributos(  ) == null ) ||
                         ! estruturaFuncaoEttf.getFuncaoFun(  ).getIndPossuiAtributos(  ).equals( "S" ) )
                {
                    continue;
                }

                retorno.add( estruturaFuncaoEttf.getFuncaoFun(  ) );
            }
        } else if ( ( atributosAtb != null ) && ( atributosAtb.getFuncaoFun(  ) != null ) )
        {
            retorno.add( atributosAtb.getFuncaoFun(  ) );
        }

        return retorno;
    }

    /**
     * Retorna uma lista de objetos AtributoEstruturaBean, contendo os atributos v�lido de cada estrutura
     * e sua respectiva estrutura.
     * @param tipoAcomp
     * @return List<AtributoEstruturaBean>
     * @throws ECARException
     */
    public List getAtributosValidoEstruturas( TipoAcompanhamentoTa tipoAcomp )
                                      throws ECARException
    {
        List retorno = new ArrayList(  );

        List atributos = null;

        if ( tipoAcomp == null )
        {
            atributos = this.getEstruturaAtributoEttatByEstruturaEtt( null );
        } else
        {
            atributos = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa( tipoAcomp );
        }

        if ( ( atributos != null ) && ! atributos.isEmpty(  ) )
        {
            Iterator itAtributos = atributos.iterator(  );

            while ( itAtributos.hasNext(  ) )
            {
                EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) itAtributos.next(  );
                AtributoEstruturaBean aeBean = new AtributoEstruturaBean(  );
                aeBean.setAtributo( atributo );
                aeBean.setEstrutura( atributo.getEstruturaEtt(  ) );
                retorno.add( aeBean );
            }
        }

        return retorno;
    }

    /**
     * Retorna uma string com os atributos definidos
     * com "S" no campo IndListagemTelaEttat de EstruturaAtributoEttat,
     * ordenados pela sequ�ncia de apresenta��o.
     * @param item
     * @param tipoAcomp
     * @return String
     * @throws ECARException
     */
    public String getDescricaoItemByAtributo( ItemEstruturaIett item, TipoAcompanhamentoTa tipoAcomp )
                                      throws ECARException
    {
        ItemEstruturaDao itemDao = new ItemEstruturaDao( null );
        FuncaoDao funcaoDao = new FuncaoDao( null );
        String retorno = "";

        List ettats = null;

        if ( tipoAcomp == null )
        {
            ettats = this.getEstruturaAtributoEttatByEstruturaEtt( item.getEstruturaEtt(  ) );
        } else
        {
            ettats = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa( tipoAcomp );
        }

        FuncaoFun funcaoFun = funcaoDao.getFuncaoDadosGerais(  );

        if ( ( ettats != null ) && ! ettats.isEmpty(  ) )
        {
            Iterator it = ettats.iterator(  );

            while ( it.hasNext(  ) )
            {
                EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) it.next(  );

                if ( ( funcaoFun != null ) && ! atributo.getAtributosAtb(  ).getFuncaoFun(  ).equals( funcaoFun ) )
                {
                    continue;
                }

                if ( ( tipoAcomp != null ) && ! item.getEstruturaEtt(  ).equals( atributo.getEstruturaEtt(  ) ) )
                {
                    continue;
                }

                if ( "nivelPlanejamento".equals( atributo.iGetNome(  ) ) )
                {
                    String niveis = "";

                    if ( ( item.getItemEstruturaNivelIettns(  ) != null ) &&
                             ! item.getItemEstruturaNivelIettns(  ).isEmpty(  ) )
                    {
                        Iterator itNiveis = item.getItemEstruturaNivelIettns(  ).iterator(  );

                        while ( itNiveis.hasNext(  ) )
                        {
                            SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next(  );
                            niveis += ( nivel.getDescricaoSatb(  ) + config.getSeparadorCampoMultivalor() );
                        }

                        niveis =
                            niveis.substring( 0,
                                              niveis.lastIndexOf( config.getSeparadorCampoMultivalor() ) );
                    }

                    retorno += ( niveis + " - " );
                } else if ( atributo.iGetGrupoAtributosLivres(  ) != null )
                {
                    Iterator itIettSatbs = item.getItemEstruturaSisAtributoIettSatbs(  ).iterator(  );
                    String informacaoIettSatb = "";

                    while ( itIettSatbs.hasNext(  ) )
                    {
                        ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb =
                            (ItemEstruturaSisAtributoIettSatb) itIettSatbs.next(  );

                        if ( itemEstruturaSisAtributoIettSatb.getSisAtributoSatb(  ).getSisGrupoAtributoSga(  )
                                                                 .equals( atributo.iGetGrupoAtributosLivres(  ) ) )
                        {
                            if ( atributo.iGetGrupoAtributosLivres(  ).getSisTipoExibicGrupoSteg(  ).getCodSteg(  )
                                             .equals( new Long( Input.TEXT ) ) ||
                                     atributo.iGetGrupoAtributosLivres(  ).getSisTipoExibicGrupoSteg(  ).getCodSteg(  )
                                                 .equals( new Long( Input.TEXTAREA ) ) ||
                                     atributo.iGetGrupoAtributosLivres(  ).getSisTipoExibicGrupoSteg(  ).getCodSteg(  )
                                                 .equals( new Long( Input.MULTITEXTO ) ) ||
                                     atributo.iGetGrupoAtributosLivres(  ).getSisTipoExibicGrupoSteg(  ).getCodSteg(  )
                                                 .equals( new Long( Input.VALIDACAO ) ) )
                            {
                                informacaoIettSatb = informacaoIettSatb +
                                                     itemEstruturaSisAtributoIettSatb.getInformacao(  ) + config.getSeparadorCampoMultivalor();
                            } else if ( ! atributo.iGetGrupoAtributosLivres(  ).getSisTipoExibicGrupoSteg(  )
                                                      .getCodSteg(  ).equals( new Long( Input.IMAGEM ) ) )
                            {
                                //se for do tipo imagem n�o faz nada, deixa em branco.
                                informacaoIettSatb = informacaoIettSatb +
                                                     itemEstruturaSisAtributoIettSatb.getSisAtributoSatb(  )
                                                                                     .getDescricaoSatb(  ) + config.getSeparadorCampoMultivalor()/*"; "*/;
                            }
                        }
                    }

                    if ( informacaoIettSatb.length(  ) > 0 )
                    {
                        informacaoIettSatb = informacaoIettSatb.substring( 0, informacaoIettSatb.length(  ) - config.getSeparadorCampoMultivalor().length() );
                    }

                    retorno += ( informacaoIettSatb + " - " );
                } else
                {
                    retorno += (
                                   itemDao.getValorAtributoItemEstrutura( item,
                                                                          atributo.getAtributosAtb(  ).getNomeAtb(  ),
                                                                          atributo.getAtributosAtb(  ).getNomeFkAtb(  ) ) +
                                   " - "
                                );
                }
            }
        }

        if ( retorno.length(  ) > 0 )
        {
            retorno =
                retorno.substring( 0,
                                   retorno.lastIndexOf( " - " ) );
        }

        return retorno;
    }

    /**
     * Retorna uma Lista de EstruturaAtributoEttat, para uma EstruturaEtt.
     * @param estrutura
     * @return
     * @throws ECARException
     */
    public List getEstruturaAtributoEttatByEstruturaEtt( EstruturaEtt estrutura )
                                                 throws ECARException
    {
        try
        {
            String select =
                "select ettat from EstruturaAtributoEttat ettat " + "where ettat.indListagemTelaEttat = 'S'";

            if ( estrutura != null )
            {
                select += "  and ettat.estruturaEtt.codEtt = :codEtt";
            }

            select += " order by ettat.seqApresListagemTelaEttat asc";

            Query q = this.session.createQuery( select );

            if ( estrutura != null )
            {
                q.setLong( "codEtt",
                           estrutura.getCodEtt(  ).longValue(  ) );
            }

            return q.list(  );
        } catch ( HibernateException e )
        {
            this.logger.error( e );
            throw new ECARException( "erro.hibernateException" );
        }
    }

    /**
     * Retorna uma Lista de EstruturaAtributoEttat, para um TipoAcompanhamentoTa.
     * @param tipoAcomp
     * @return List
     * @throws ECARException
     */
    public List getEstruturaAtributoEttatByTipoAcompanhamentoTa( TipoAcompanhamentoTa tipoAcomp )
        throws ECARException
    {
        List retorno = new ArrayList(  );

        try
        {
            StringBuilder select =
                new StringBuilder( "select eata from EstAtribTipoAcompEata eata " ).append( "   where eata.tipoAcompanhamentoTa.codTa = :codTa " )
                                                                                   .append( "     and eata.exibirEata = 'S' " )
                                                                                   .append( " order by eata.sequenciaEata asc" );

            Query q = this.session.createQuery( select.toString(  ) );

            q.setLong( "codTa",
                       tipoAcomp.getCodTa(  ).longValue(  ) );

            List eatas = q.list(  );

            if ( ( eatas != null ) && ! eatas.isEmpty(  ) )
            {
                Iterator it = eatas.iterator(  );

                while ( it.hasNext(  ) )
                {
                    EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next(  );
                    retorno.add( eata.getEstruturaAtributoEttat(  ) );
                }
            }
        } catch ( HibernateException e )
        {
            this.logger.error( e );
            throw new ECARException( "erro.hibernateException" );
        }

        return retorno;
    }

    /**
     * Retorna a lista de EstruturaAtributoEttat buscando pelo TipoAcompanhamentoTa, exibirEata, sequenciaEata e filtroEata.
     * @author egger - SERPRO
     * @param tipoAcomp
     * @param exibirEata
     * @param sequenciaEata
     * @param filtroEata
     * @return List
     * @throws ECARException
     */
    public List getEstruturaAtributoEttatByEata( TipoAcompanhamentoTa tipoAcomp, String exibirEata, Long sequenciaEata,
                                                 String filtroEata )
                                         throws ECARException
    {
        List retorno = new ArrayList(  );

        try
        {
            String select = "select eata from EstAtribTipoAcompEata eata ";
            String where = "";

            if ( tipoAcomp != null )
            {
                where += "where eata.tipoAcompanhamentoTa.codTa = :tipoAcomp";
            }

            if ( ! "".equals( exibirEata ) )
            {
                if ( "".equals( where ) )
                {
                    where += " where ";
                } else
                {
                    where += " and ";
                }

                where += " eata.exibirEata = :exibirEata";
            }

            if ( sequenciaEata != null )
            {
                if ( "".equals( where ) )
                {
                    where += " where ";
                } else
                {
                    where += " and ";
                }

                where += " eata.sequenciaEata = :sequenciaEata";
            }

            //SERPRO
            if ( ! "".equals( filtroEata ) )
            {
                if ( "".equals( where ) )
                {
                    where += " where ";
                } else
                {
                    where += " and ";
                }

                where += " eata.filtroEata = :filtroEata";
            }

            Query q = this.session.createQuery( select + where );

            if ( tipoAcomp != null )
            {
                q.setLong( "tipoAcomp",
                           tipoAcomp.getCodTa(  ).longValue(  ) );
            }

            if ( ! "".equals( exibirEata ) )
            {
                q.setString( "exibirEata", exibirEata );
            }

            if ( sequenciaEata != null )
            {
                q.setLong( "sequenciaEata",
                           sequenciaEata.longValue(  ) );
            }

            //SERPRO
            if ( ! "".equals( filtroEata ) )
            {
                q.setString( "filtroEata", filtroEata );
            }

            List eatas = q.list(  );

            if ( ( eatas != null ) && ! eatas.isEmpty(  ) )
            {
                Iterator it = eatas.iterator(  );

                while ( it.hasNext(  ) )
                {
                    EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next(  );
                    retorno.add( eata.getEstruturaAtributoEttat(  ) );
                }
            }
        } catch ( HibernateException e )
        {
            this.logger.error( e );
            throw new ECARException( "erro.hibernateException" );
        }

        return retorno;
    }
   
    /**
     * Filtra EstruturaAtributoEttat considerando os Tipos de Acompanhamentos definidos na tela (EstAtribTipoAcompEata).
     * @param estruturaAtributos
     * @param estAtribTipoAcomp
     * @param funcaoFun
     * @return List
     * @throws ECARException
     */
    public List filtrarEstruturaAtributoByEata( List estruturaAtributos, List estAtribTipoAcomp, FuncaoFun funcaoFun )
                                        throws ECARException
    {
        boolean possuiTiposAcomps = ( ( estAtribTipoAcomp != null ) && ( estAtribTipoAcomp.size(  ) > 0 ) ) ? true : false;
        boolean possuiEttats = ( ( estruturaAtributos != null ) && ( estruturaAtributos.size(  ) > 0 ) ) ? true : false;

        if ( funcaoFun != null ){
            Iterator itEstruturaAtributos = estruturaAtributos.iterator(  );

            while ( itEstruturaAtributos.hasNext(  ) ){
                EstruturaAtributoEttat estruturaAtributoEttat = (EstruturaAtributoEttat) itEstruturaAtributos.next(  );

                if ( ! estruturaAtributoEttat.getAtributosAtb(  ).getFuncaoFun(  ).equals( funcaoFun ) ){
                    itEstruturaAtributos.remove(  );
                }
            }
        }

        if ( possuiTiposAcomps && possuiEttats ){
            List estruturaAtributosFiltrados = new ArrayList(  );
            Iterator it = estAtribTipoAcomp.iterator(  );

            while ( it.hasNext(  ) ){
                EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next(  );

                // SERPRO add filtroEata
                List ettats = this.getEstruturaAtributoEttatByEata( eata.getTipoAcompanhamentoTa(  ),
                                                          eata.getExibirEata(  ),
                                                          eata.getSequenciaEata(  ),
                                                          eata.getFiltroEata(  ) );
                Iterator itEt = ettats.iterator(  );

                while ( itEt.hasNext(  ) ){
                    EstruturaAtributoEttat ettat = (EstruturaAtributoEttat) itEt.next(  );

                    if ( ! estruturaAtributosFiltrados.contains( ettat ) ){
                        estruturaAtributosFiltrados.add( ettat );
                    }
                }
            }

            return new ArrayList( Util.intersecao( estruturaAtributos, estruturaAtributosFiltrados ) );
        } else {
            return estruturaAtributos;
        }
    }
   
    /**
     * Devolve uma lista com todos os atributos na estrutura da estrutura passada e da fun��o passada
     * @param estruturaEtt
     * @param funcaoFun
     * @return List de EstruturaAtributoEtt
     * @throws ECARException
     */
    public List<EstruturaAtributoEttat> getEstruturaAtributosFuncao( EstruturaEtt estruturaEtt, FuncaoFun funcaoFun )
                      throws ECARException
    {
        List retorno = new ArrayList(  );

        if (( estruturaEtt != null ) && ( estruturaEtt.getEstruturaAtributoEttats() != null ))
        {
            Iterator itEstruturaAtributoEttats = estruturaEtt.getEstruturaAtributoEttats().iterator();

            while (itEstruturaAtributoEttats.hasNext())
            {
                EstruturaAtributoEttat estruturaAtributoEttat = (EstruturaAtributoEttat) itEstruturaAtributoEttats.next();

                if ( funcaoFun != null )
                {
                    if (estruturaAtributoEttat.getAtributosAtb().getFuncaoFun().equals(funcaoFun))
                    {
                      retorno.add(estruturaAtributoEttat);
                    }
                }               
            }
        }

        return retorno;
    }
}
TOP

Related Classes of ecar.dao.EstruturaAtributoDao

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.