Package ecar.dao

Source Code of ecar.dao.VisaoDao

package ecar.dao;

import java.io.IOException;
import java.text.Format;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import comum.database.Dao;
import comum.database.DaoUtil;

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

import ecar.exception.ECARException;
import ecar.pojo.AtributoDemandaAtbdem;
import ecar.pojo.AtributosAtb;
import ecar.pojo.EstAtribTipoAcompEata;
import ecar.pojo.EstruturaAtributoEttat;
import ecar.pojo.EstruturaEtt;
import ecar.pojo.ObjetoDemanda;
import ecar.pojo.ObjetoEstrutura;
import ecar.pojo.SisAtributoSatb;
import ecar.pojo.SisGrupoAtributoSga;
import ecar.pojo.SitDemandaSitd;
import ecar.pojo.TipoAcompanhamentoTa;
import ecar.pojo.UsuarioUsu;
import ecar.pojo.VisaoAtributoDemanda;
import ecar.pojo.VisaoDemandasGrpAcesso;
import ecar.pojo.VisaoDemandasVisDem;
import ecar.pojo.VisaoSituacaoDemanda;
import ecar.pojo.VisaoSituacaoDemandaPK;
import ecar.util.Dominios;


/**
* Classe de acesso ao Banco para a entidade Visao.
*
*/
public class VisaoDao extends Dao {
  /**
   * Construtor. Chama o Session factory do Hibernate
         *
         * @param request
         */
  public VisaoDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
 
  /**
   * Vis�o
   * @param visao
   * @throws ECARException
   */
  public void salvar(VisaoDemandasVisDem visao) throws ECARException {
        Transaction tx = null;
    if (pesquisarDuplos(visao, false))
         throw new ECARException("visao.validacao.registroDuplicado");
   
   
    if (visao.getDescricaoVisao().length() > 500) {
      throw new ECARException("registroDemanda.inclusao.erro.descricao");
    }
   
    try{
            tx = session.beginTransaction();
            session.saveOrUpdate(visao);
           
            for (VisaoSituacaoDemanda vsd : visao.getVisaoSituacaoDemandas()){
                vsd.getId().setCodVisao(visao.getCodVisao());
                session.saveOrUpdate(vsd);
            }
           
            ///session.save(visao.getVisaoSituacaoDemandas());
            tx.commit();
    }catch (HibernateException e) {
        throw new ECARException("erro.hibernateException");
    }
  }

  /**
   * Excluir vis�o
   * @param visao
   * @throws ECARException
   */
  public void excluir(VisaoDemandasVisDem visao) throws ECARException {
    try {
      boolean excluir = true;
        
      if(excluir){
        List objs = new ArrayList();
       
        if (visao.getVisaoSituacaoDemandas() != null) {
          Iterator itVisoesSituacaoDemandas = visao.getVisaoSituacaoDemandas().iterator();
          while (itVisoesSituacaoDemandas.hasNext()) {
            VisaoSituacaoDemanda visaoSituacaoDemanda = (VisaoSituacaoDemanda) itVisoesSituacaoDemandas.next();
            objs.add(visaoSituacaoDemanda);
          }
        }
        visao.setVisaoSituacaoDemandas(null);
       
        if (visao.getVisoesGrpAcesso() != null) {
          Iterator itVisoesDemandas = visao.getVisoesGrpAcesso().iterator();
          while (itVisoesDemandas.hasNext()) {
            VisaoDemandasGrpAcesso visaoDemandas = (VisaoDemandasGrpAcesso) itVisoesDemandas.next();
            objs.add(visaoDemandas);
          }
        }
        visao.setVisoesGrpAcesso(null);
                       
        // remover atributos demandas da visao
        String hql = MessageFormat.format(Util.getHql(ConstantesECAR.PESQUISA_ATRIBUTOS_DEMANDA_VISAO, request.getSession().getServletContext()), visao.getCodVisao().toString());
       
        Query q = this.getSession().createQuery(hql);
                   
        List atributosDemandas = q.list();
       
        ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(request);
        if(configuracaoDao.getConfiguracao().getVisaoDemandasVisDem() != null &&
            configuracaoDao.getConfiguracao().getVisaoDemandasVisDem().getCodVisao() == visao.getCodVisao()){
                  excluir = false;
                  throw new ECARException( "visao.exclusao.erro.associacaoDemanda" ); //Possui acompanhamentos ligados a essa funcao de acompanhamento codAri)
        }
       
        Iterator itAtributosDemandas = atributosDemandas.iterator();
        while (itAtributosDemandas.hasNext()) {
          VisaoAtributoDemanda atributosVisao = (VisaoAtributoDemanda) itAtributosDemandas.next();
          objs.add(atributosVisao);
        }
       
        objs.add(visao);
        super.excluir(objs);
       
       
     
    } catch(IOException e){
      this.logger.error(e);
          throw new ECARException(e)
        } catch(ECARException e){
      this.logger.error(e);
      throw e;
    }   
  }
// 
    /**
         *
         * @param visao
         * @throws ECARException
         */
  public void alterar(VisaoDemandasVisDem visao) throws ECARException {
    Transaction tx = null;
    if (pesquisarDuplos(visao, true))
      throw new ECARException("visao.validacao.registroDuplicado");
    try{
          tx = session.beginTransaction();
          session.saveOrUpdate(visao);
          for (VisaoSituacaoDemanda vsd : visao.getVisaoSituacaoDemandas()){
              vsd.getId().setCodVisao(visao.getCodVisao());
              session.saveOrUpdate(vsd);
          }
          tx.commit();
    }catch (HibernateException e) {
        throw new ECARException("erro.hibernateException");
    }
  }

   
  /**
   * Seleciona as vis�es de acordo com um conjunto de ids de vis�es
   * @param idsVisoes
   * @return
   * @throws ECARException
   */
  public List getVisoes(String[] idsVisoes) throws ECARException{
   
    try
      {
     
      List<VisaoDemandasVisDem> lista = null;
     
      if (idsVisoes!=null && idsVisoes.length>0 && idsVisoes[0].length()>0) {
          Criteria crits = session.createCriteria(VisaoDemandasVisDem.class);
  
          Long[] idVisoesLong = new Long[idsVisoes.length];
          for(int i=0;i<idsVisoes.length;i++) {
            idVisoesLong[i] = Long.valueOf(idsVisoes[i]);
          }
         
          crits.add(Restrictions.in("codVisao",idVisoesLong));
                 
          lista = (List<VisaoDemandasVisDem>)crits.list();
         
      }
        return lista;
     
    }catch (Exception e) {
          this.logger.error(e);
        throw new ECARException("erro.hibernateException");
    }
   
  }
 
  /**
   * Seleciona as vis�es de acordo com um conjunto de ids de vis�es
   * @param idsVisoes
   * @return
   * @throws ECARException
   */
  public List getVisoesAtributoDemanda(String[] idsVisoes) throws ECARException{
   
    try
      {
     
      List<VisaoDemandasVisDem> lista = null;
     
      if (idsVisoes!=null && idsVisoes.length>0 && idsVisoes[0].length()>0) {
          Criteria crits = session.createCriteria(VisaoDemandasVisDem.class);
  
          Long[] idVisoesLong = new Long[idsVisoes.length];
          for(int i=0;i<idsVisoes.length;i++) {
            idVisoesLong[i] = Long.valueOf(idsVisoes[i]);
          }
         
          crits.add(Restrictions.in("codVisao",idVisoesLong));
                 
          lista = (List<VisaoDemandasVisDem>)crits.list();
         
      }
        return lista;
     
    }catch (Exception e) {
          this.logger.error(e);
        throw new ECARException("erro.hibernateException");
    }
   
  }
 
  /**
   * Recupera todas as vis�es
   * @return
   * @throws ECARException
   */
  public List getVisoes() throws ECARException{
   
    return super.listar(VisaoDemandasVisDem.class, null);
  }

  /**
   * Recupera as vis�es acessados pelo usu�rio
   * @param usuario
   * @param indRetornarVisaoConfiguracaoGeral indica se a consulta deve retornar a vis�o configurada em configuracaoGeral para associa��o de demandas
   * @return
   * @throws ECARException
   */
  public List getVisoesGrupoAcesso(UsuarioUsu usuario, boolean indRetornarVisaoConfiguracaoGeral, HttpServletRequest request) throws ECARException{
   
    Set<SisAtributoSatb> gruposAcesso = ((ecar.login.SegurancaECAR)request.getSession().getAttribute("seguranca")).getGruposAcesso();
   
    String codStabString = "";
   
    Iterator<SisAtributoSatb> it = gruposAcesso.iterator();
   
    int counter = 0;
    while(it.hasNext()) {
      if (counter==0)
        codStabString += it.next().getCodSatb().toString();
      else
         codStabString += "," + it.next().getCodSatb().toString();
      counter++;
    }
   
    if (codStabString.length()>0) {
      codStabString = "(" + codStabString + ")";
    try
     
      String hql = "";
     
      if (indRetornarVisaoConfiguracaoGeral){
        hql = MessageFormat.format(Util.getHql(ConstantesECAR.PESQUISA_VISOES_DADO_GRUPOS_ACESSOS_USUARIO, request.getSession().getServletContext()), codStabString);
      } else {
        hql = MessageFormat.format(Util.getHql(ConstantesECAR.PESQUISA_VISOES_DADO_GRUPOS_ACESSOS_USUARIO_SEM_VISAO_CONFIG_GERAL, request.getSession().getServletContext()), codStabString);
      }
       
      StringBuilder query = new StringBuilder(hql);

      Query q = this.getSession().createQuery(query.toString());

      return q.list();
     
    } catch(IOException e){
      this.logger.error(e);
          throw new ECARException(e);
      }
     
    } else {
      return null;
    }
             

  }
 
  /**
     *
     * @param obj
     * @param alteracao
     * @return
     * @throws ECARException
     */
  public boolean pesquisarDuplos(VisaoDemandasVisDem obj, boolean alteracao) throws ECARException {
     
      boolean retorno = false;
     
      try
      {
     
        Criteria crits = session.createCriteria(VisaoDemandasVisDem.class);
        if (!alteracao) {
          crits.add(Restrictions.eq("descricaoVisao", obj.getDescricaoVisao()));
       
        } else {
          crits.add(Restrictions.eq("descricaoVisao", obj.getDescricaoVisao()));
          crits.add(Restrictions.ne("codVisao", obj.getCodVisao()));
        }
         
        List<AtributoDemandaAtbdem> lista = (List<AtributoDemandaAtbdem>)crits.list();
       
        if (lista.size() > 0) {
          retorno = true;
        }
       
        return retorno;
     
    }catch (Exception e) {
          this.logger.error(e);
        throw new ECARException("erro.hibernateException");
    }
    }
 
  /**
   *
   * @param request
   * @param visao
   * @param situacoesFiltro
   * @param situacoesAlteracao
   * @param ordem
   * @return
   * @throws ECARException
   */
  public List<VisaoDemandasVisDem> pesquisar(HttpServletRequest request, VisaoDemandasVisDem visao, List<SitDemandaSitd> situacoesFiltro, List<SitDemandaSitd> situacoesAlteracao, String[] ordem) throws ECARException{
    SituacaoDao situacaoDao = new SituacaoDao(request);
    VisaoDao visaoDao = new VisaoDao(request);
    VisaoSituacaoDemandaDao visaoSituacaoDemandaDao = new VisaoSituacaoDemandaDao(request);
      List<VisaoDemandasVisDem> listaVisaoGeral = new ArrayList<VisaoDemandasVisDem>();
      boolean removerVisao = false;
//      if (((situacoesAlteracao != null) && (situacoesAlteracao.size() > 0))
//        || ((situacoesFiltro != null) && (situacoesFiltro.size() > 0))
//        || ((visao.getDescricaoVisao() != null) && (visao.getDescricaoVisao().length() > 0)))
      listaVisaoGeral.addAll(pesquisar(visao, ordem));  
      //Esta consulta ser� refeita na altera��o da pesquisa de vis�o para colocar no padr�o do e-car
      //(transformar checkbox em radiobutton na consulta)
      if ((situacoesFiltro!= null && situacoesFiltro.size() > 0) || (situacoesAlteracao != null && situacoesAlteracao.size() > 0)){
        Iterator itVisao = listaVisaoGeral.iterator();
        while (itVisao.hasNext()){
          removerVisao = false;
          VisaoDemandasVisDem vis = (VisaoDemandasVisDem) itVisao.next();
          List situacoesFiltroVisao = visaoSituacaoDemandaDao.getSituacoesVisao(vis, VisaoSituacaoDemandaDao.SITUACAO_VISAO_FILTRO);
          for (SitDemandaSitd sitFiltro : situacoesFiltro){
            if (!situacoesFiltroVisao.contains(sitFiltro)){
              removerVisao = true;
            }
          }
          List situacoesAlteracaoVisao = visaoSituacaoDemandaDao.getSituacoesVisao(vis, VisaoSituacaoDemandaDao.SITUACAO_VISAO_EDICAO);
          for (SitDemandaSitd sitAlteracao : situacoesAlteracao){
            if (!situacoesAlteracaoVisao.contains(sitAlteracao)){
              removerVisao = true;
            }
          }
          if (removerVisao){
            itVisao.remove();
          }
        }
      }

       return listaVisaoGeral;
  }
   
}
TOP

Related Classes of ecar.dao.VisaoDao

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.