Package ecar.dao

Source Code of ecar.dao.SituacaoDao

/*
* Criado em 28/10/2004
*
*/
package ecar.dao;

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

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.criterion.Restrictions;

import comum.database.Dao;

import ecar.exception.ECARException;
import ecar.pojo.AcompRealFisicoArf;
import ecar.pojo.AcompRelatorioArel;
import ecar.pojo.EstruturaEtt;
import ecar.pojo.ItemEstruturaIett;
import ecar.pojo.PerfilPfl;
import ecar.pojo.SitDemandaSitd;
import ecar.pojo.SituacaoSit;
import ecar.pojo.TipoFuncAcompTpfa;
import ecar.pojo.VisaoDemandasVisDem;
import ecar.pojo.intercambioDados.PerfilIntercambioDadosPflid;

/**
* @author felipev
*
*/
public class SituacaoDao extends Dao{
   
  /**
   * Construtor. Chama o Session factory do Hibernate
         *
         * @param request
         */
  public SituacaoDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
 
  /**
   * Utiliza o m�todo excluir da classe Dao realizando antes valida��es de relacionamento da
   * situa��o com registros em outras tabelas.
   * @param situacao
   * @throws ECARException
   */
  public void excluir(SituacaoSit situacao) throws ECARException {     
     try{
           boolean excluir = true;
        if(contar(situacao.getAcompRealFisicoArfs()) > 0){
            excluir = false;
            AcompRealFisicoArf arf = (AcompRealFisicoArf) new ArrayList(situacao.getAcompRealFisicoArfs()).get(0);
          throw new ECARException("situacao.exclusao.erro.acompRealFisicoArfs", null, null);
        }                  
        if(contar(situacao.getAcompRelatorioArels()) > 0){
            excluir = false;
            AcompRelatorioArel arel = (AcompRelatorioArel) new ArrayList(situacao.getAcompRelatorioArels()).get(0);
            throw new ECARException("situacao.exclusao.erro.acompRelatorioArels", null, null);            
      }
//        if(contar(situacao.getEstruturaSituacaoEtts()) > 0){
//          excluir = false;
//          EstruturaEtt ett = (EstruturaEtt) new ArrayList(situacao.getEstruturaSituacaoEtts()).get(0);
//          throw new ECARException("situacao.exclusao.erro.estruturaSituacaoEtts", null, new String[] {ett.getNomeEtt()});
//        }
        if(contar(situacao.getItemEstruturaIetts()) > 0){
            excluir = false;
            ItemEstruturaIett iett = (ItemEstruturaIett) new ArrayList(situacao.getItemEstruturaIetts()).get(0);
            throw new ECARException("situacao.exclusao.erro.itemEstruturaIetts", null, new String[] {iett.getNomeIett()});            
        }
        if(contar(situacao.getPerfilIntercambioDadosPflidsNaoInformado()) > 0){
            excluir = false;
            PerfilIntercambioDadosPflid plfid = (PerfilIntercambioDadosPflid) new ArrayList(situacao.getPerfilIntercambioDadosPflidsNaoInformado()).get(0);
            throw new ECARException("situacao.exclusao.erro.perfilIntercambioDadosPflids", null, new String[] {plfid.getNomePflid()});            
        }
        if(contar(situacao.getPerfilIntercambioDadosPflidsSemCorrespondente()) > 0){
            excluir = false;
            PerfilIntercambioDadosPflid plfid = (PerfilIntercambioDadosPflid) new ArrayList(situacao.getPerfilIntercambioDadosPflidsSemCorrespondente()).get(0);
            throw new ECARException("situacao.exclusao.erro.perfilIntercambioDadosPflids", null, new String[] {plfid.getNomePflid()});            
        }
//        if(contar(situacao.getSituacaoTpFuncAcmpSitfas()) > 0){
//          excluir = false;
//          TipoFuncAcompTpfa tpfa = (TipoFuncAcompTpfa) new ArrayList(situacao.getSituacaoTpFuncAcmpSitfas()).get(0);
//          throw new ECARException("situacao.exclusao.erro.situacaoTpFuncAcmpSitfas", null, new String [] {tpfa.getDescricaoTpfa()});
//        }
        if(excluir)
            super.excluir(situacao);
     }catch(ECARException e){     
       this.logger.error(e);
         throw e;
     }   
  }
 
  /**
   * Invoca o m�todo pesquisar da classe Dao e filtra o resultado obtido para retornar somente
   * os registros que tenham as estruturas e fun��es de acompanhamento informadas na pesquisa
   * @param situacao
   * @param ordem
   * @return
   * @throws ECARException
   */
  public List pesquisar(SituacaoSit situacao, String[] ordem) throws ECARException {

      List results = super.pesquisar(situacao, ordem);     
      if(situacao.getEstruturaSituacaoEtts() != null && situacao.getEstruturaSituacaoEtts().size() > 0) {
          Iterator it = results.iterator();
          while(it.hasNext()){
              SituacaoSit situacaoBanco = (SituacaoSit) it.next();
              if(!situacaoBanco.getEstruturaSituacaoEtts().containsAll(situacao.getEstruturaSituacaoEtts())){
                  it.remove();
              }
          }
      }
      if(situacao.getSituacaoTpFuncAcmpSitfas() != null && situacao.getSituacaoTpFuncAcmpSitfas().size() > 0){
          Iterator it = results.iterator();
          while(it.hasNext()){
              SituacaoSit situacaoBanco = (SituacaoSit) it.next();
              if(!situacaoBanco.getSituacaoTpFuncAcmpSitfas().containsAll(situacao.getSituacaoTpFuncAcmpSitfas())){
                  it.remove();
              }
          }
      }
     
      if (results.size() > 0) {
          Iterator it = results.iterator();
          SituacaoSit sit;
          while (it.hasNext()) {
              sit = (SituacaoSit) it.next();
             
              if(sit.getEstruturaSituacaoEtts() != null)
                sit.getEstruturaSituacaoEtts().size();
              if(sit.getSituacaoTpFuncAcmpSitfas() != null)
                sit.getSituacaoTpFuncAcmpSitfas().size();
          }
      }
      return results;
     
  }

  /**
   * Retorna um list com identifica��es de todas as Fun��es de Acompanhamento de uma situa��o
   * @param situacao
   * @return List de Long
   */
  public List getFuncoesAcompanhamentoById(SituacaoSit situacao){
    List lFuncoes = new ArrayList();
    if(situacao.getSituacaoTpFuncAcmpSitfas()!= null){
      situacao.getSituacaoTpFuncAcmpSitfas().size(); // Faz isso para inicializar a collection fazendo o select do banco
      Iterator it = situacao.getSituacaoTpFuncAcmpSitfas().iterator();
      while(it.hasNext()){
        TipoFuncAcompTpfa funcao = (TipoFuncAcompTpfa) it.next();
        lFuncoes.add(funcao.getCodTpfa());
      }
    }  
    return lFuncoes;
  }

  /**
   * Retorna um list com identifica��es de todas as Estruturas de uma situa��o
   * @param situacao
   * @return List de Long
   */
  public List getEstruturasById(SituacaoSit situacao){
      List lEstrutura = new ArrayList();
    if(situacao.getEstruturaSituacaoEtts()!= null){
      Iterator it = situacao.getEstruturaSituacaoEtts().iterator();
      while(it.hasNext()){
        EstruturaEtt estrutura = (EstruturaEtt) it.next();
        lEstrutura.add(estrutura.getCodEtt());
      }
    }     
    return lEstrutura;
  }

  /**
   * Imprimi o script de validacao de acordo com as Situa��es que exigem comentario,
   *     quando indComentario = 'S'.
   *
   * @param lista  - List, lista de situacaoSit
   * @param campo   - String, campo que ser� obrigat�rio de acordo com a Situa��o;
   * @param cont   - String, para ser utilizada com fun��o eval() do JavaScript,
   *           concatenando com o nome do campo, permitindo utilizad em v�rios
   *           campos. (ver em \regAcompanhamento\elabAcompanhamento\realizadoFisico.jsp)
   *           Para ser utilizada como vazia, passar o valor "\"\"", que devolve
   *           duas aspas ("") para ser utilizada no javascript;
   * @param msg   - String, mensagem a ser exibida;
   *
   * @return
   * @throws ECARException
   */
  public String getScriptValidacao(List lista, String campo, String cont, String msg) throws ECARException{
    Iterator itSit = lista.iterator();
    StringBuilder strIf = new StringBuilder("");
    boolean sitIndComentario = false;
   
    if(itSit.hasNext()){
      while(itSit.hasNext()){
        SituacaoSit situacao = (SituacaoSit) itSit.next();
        if("S".equalsIgnoreCase(situacao.getIndComentarioSit())){
          sitIndComentario = true;
          if ("".equals(strIf))
            strIf = new StringBuilder("\t\tif(Trim(eval(\"form.").append(campo)
                    .append("\" + ").append(cont).append(" + \".value\")) == \"\" && (");
          else
            strIf.append(" || ");
          strIf.append("eval(\"form.situacaoSit\" + ").append(cont).append(" + \".value\") == ")
             .append(situacao.getCodSit());
        }
      }
    }
   
    if(sitIndComentario){
      strIf.append(")){\n");
      strIf.append("\t\t\talert(\"").append(msg).append("\");\n");
      strIf.append("\t\t\teval(\"form.").append(campo).append("\" + ").append(cont).append(" + \".focus()\");\n");
      strIf.append("\t\t\treturn(false);\n");
      strIf.append("\t\t}\n");
    }
   
    return strIf.toString();
  }
 
  /**
   * Retorna lista de fun��es que sejam vinculadas a uma fun��o de acompanhamento e a uma estrutura
   * @param funcao
   * @param estrutura
   * @return
   */
  public List getSituacaoByTipoFuncaoAcompanhamentoEstrutura(TipoFuncAcompTpfa funcao, EstruturaEtt estrutura){
      List retorno = new ArrayList();
      
      Iterator it = funcao.getSituacaoTpFuncAcmpSitfas().iterator();
     
      while(it.hasNext()){
          SituacaoSit situacao = (SituacaoSit) it.next();
          if(estrutura.getEstruturaSituacaoEtts() != null && estrutura.getEstruturaSituacaoEtts().contains(situacao)){
              retorno.add(situacao);
          }
      }
     
        return retorno;
  }
 
  /**
   * Retorna lista de situacoes que sejam vinculadas a uma estrutura
   * @param estrutura
   * @param ordem
   * @return List
   */
  public List getSituacaoByEstrutura(EstruturaEtt estrutura, String[] ordem){
      List retorno = new ArrayList();
      try{
        List situacoes = this.listar(SituacaoSit.class, ordem);
        Iterator it = situacoes.iterator();
        while(it.hasNext()){
            SituacaoSit situacao = (SituacaoSit) it.next();
            if(estrutura.getEstruturaSituacaoEtts() != null && estrutura.getEstruturaSituacaoEtts().contains(situacao)){
                retorno.add(situacao);
            }
        }
      }
      catch (Exception e){
          Logger logger = Logger.getLogger(this.getClass());
          logger.error(e);
      }
        return retorno;
  }
 
  /**
   * Retorna lista de situa��es que est�o vinculadas qualquer estrutura.<br>
   *
   * @param ordem
   * @return List
   */
  public List getSituacaoEmUsoPorEstrutura(String[] ordem){
      List retorno = new ArrayList();
      try{
        List situacoes = this.listar(SituacaoSit.class, ordem);
        Iterator it = situacoes.iterator();
       
        while(it.hasNext()){
            SituacaoSit situacao = (SituacaoSit) it.next();
           
            if(situacao.getEstruturaSituacaoEtts() != null && situacao.getEstruturaSituacaoEtts().size() > 0){
                retorno.add(situacao);
            }
        }
      }
      catch (Exception e){
          Logger logger = Logger.getLogger(this.getClass());
          logger.error(e);
      }
        return retorno;
  }

  /**
   * verifica duplica��o de registro depois salva
   * @param situacao
   * @throws ECARException
   */
  public void salvar(SituacaoSit situacao) throws ECARException {
    if (pesquisarDuplos(situacao, new String[] {"descricaoSit"}, "codSit").size() > 0)
        throw new ECARException("situacao.validacao.registroDuplicado");
    super.salvar(situacao);
  }
 
  /**
   *
   * verifica duplica��o de registro depois Altera
   * @param situacao
   * @throws ECARException
   */
  public void alterar(SituacaoSit situacao) throws ECARException {
    if (pesquisarDuplos(situacao, new String[] {"descricaoSit"}, "codSit").size() > 0)
        throw new ECARException("situacao.validacao.registroDuplicado");
    super.alterar(situacao);
  }
 
  /**
   * Seleciona as situa��es de acordo com um conjunto de ids de situa��es
         * @param idsSituacoes
         * @return
   * @throws ECARException
   */
  public List getSituacoes(String[] idsSituacoes) throws ECARException{
   
    try
      {
      List<SitDemandaSitd> lista = null;
     
      if (idsSituacoes!=null && idsSituacoes.length>0 && idsSituacoes[0].length()>0) {
          Criteria crits = session.createCriteria(SitDemandaSitd.class);
  
          Long[] idVisoesLong = new Long[idsSituacoes.length];
          for(int i=0;i<idsSituacoes.length;i++) {
            idVisoesLong[i] = Long.valueOf(idsSituacoes[i]);
          }
         
          crits.add(Restrictions.in("codSitd",idVisoesLong));
                 
          lista = (List<SitDemandaSitd>)crits.list();
         
      }
        return lista;
     
    }catch (Exception e) {
          this.logger.error(e);
        throw new ECARException("erro.hibernateException");
    }
   
  }
  /**
   *
   * @param descricaoSit
   * @return
   */
  public SituacaoSit getSituacaoSitByDescricao(String descricaoSit) throws ECARException{
    SituacaoSit situacaoSit = null;
    try {
      String hql = "select situacaoSit from SituacaoSit situacaoSit where situacaoSit.descricaoSit = :descricaoSit";
      Query q = this.session.createQuery(hql);
      q.setString("descricaoSit", descricaoSit);
      q.setMaxResults(1);
      situacaoSit = (SituacaoSit) q.uniqueResult();
    }catch(HibernateException e) {
          this.logger.error(e);
      throw new ECARException("erro.hibernateException");
    }
    return situacaoSit;
  }
}
TOP

Related Classes of ecar.dao.SituacaoDao

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.