Package ecar.dao

Source Code of ecar.dao.ConfigSisExecFinanCsefvDao

package ecar.dao;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
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.Expression;
import org.hibernate.criterion.Order;

import comum.database.Dao;
import comum.util.Util;

import ecar.exception.ECARException;
import ecar.pojo.ConfigSisExecFinanCsef;
import ecar.pojo.ConfigSisExecFinanCsefv;

/**
* Classe de manipula��o de objetos da classe AtributoAtt.
*
* @author CodeGenerator - Esta classe foi gerada automaticamente
* @since 1.0
* @version 1.0, Fri Jan 27 07:54:28 BRST 2006
*
*/
public class ConfigSisExecFinanCsefvDao extends Dao {
  /**
   * Construtor. Chama o Session factory do Hibernate
         *
         * @param request
         */
  public ConfigSisExecFinanCsefvDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
 
  /**
   * Retorna uma vers�o (ConfigSisExecFinanCsefv) de um sistema (ConfigSisExecFinanCsef) com base
   * no sistema, mes e ano.
   * @param ano
   * @param mes
   * @param sistema
   * @return ConfigSisExecFinanCsefv
   * @throws ECARException
   */ 
  public ConfigSisExecFinanCsefv getConfigSisExecFinanCsefv(Long ano, Long mes, ConfigSisExecFinanCsef sistema) throws ECARException{
    try {
      StringBuilder sql = new StringBuilder("from ConfigSisExecFinanCsefv versao")
                  .append(" where versao.configSisExecFinanCsef.codCsef = :codCsef")
                  .append("   and (versao.mesVersaoCsefv <= :mesVersao)")
                  .append("   and (versao.anoVersaoCsefv <= :anoVersao)")
                  .append("   order by versao.anoVersaoCsefv desc, versao.mesVersaoCsefv desc");
     
      Query q = this.session.createQuery(sql.toString());
      q.setLong("codCsef", sistema.getCodCsef().longValue());
      q.setLong("mesVersao", mes.longValue());
      q.setLong("anoVersao", ano.longValue());
     
      q.setMaxResults(1);
     
      return (ConfigSisExecFinanCsefv) q.uniqueResult();
    } catch (HibernateException e) {
          Logger logger = Logger.getLogger(this.getClass());
          logger.error(e);
    }
    return null;
  }

  /**
   * Retorna as vers�es que possuem sistemas ativos, ordenados pelo nome do sistema.
   * @return List
   * @throws ECARException
   */
  public List getCsefvOrderBySistema() throws ECARException{
    List retorno = new ArrayList();
    try {
      StringBuilder sql = new StringBuilder("select versao from ConfigSisExecFinanCsefv versao")
                      .append(" join versao.configSisExecFinanCsef sistema")
                      .append(" where sistema.indAtivoCsef = 'S'")
                      .append("   and versao.indAtivoCsefv = 'S'")
                      .append(" order by versao.configSisExecFinanCsef.nomeCsef, versao.anoVersaoCsefv, versao.mesVersaoCsefv");
       
      Query q = this.session.createQuery(sql.toString());
      retorno = q.list();
    } catch (HibernateException e) {
          Logger logger = Logger.getLogger(this.getClass());
          logger.error(e);
    }
    return retorno;
  }

  /**
   * Retorna as vers�es que possuem sistemas ativos, ordenados pelo ano/mes da versao
   * @return List
   * @throws ECARException
   */
  public List getCsefvOrderByMesAno() throws ECARException{
    List retorno = new ArrayList();
    try {
      StringBuilder sql = new StringBuilder("select versao from ConfigSisExecFinanCsefv versao")
                      .append(" join versao.configSisExecFinanCsef sistema")
                      .append(" where sistema.indAtivoCsef = 'S'")
                      .append("   and versao.indAtivoCsefv = 'S'")
                      .append(" order by versao.anoVersaoCsefv, versao.mesVersaoCsefv");
     
      Query q = this.session.createQuery(sql.toString());
      retorno = q.list();
    } catch (HibernateException e) {
          Logger logger = Logger.getLogger(this.getClass());
          logger.error(e);
    }
    return retorno;
  }
 
  /**
   * Descobre o at� qual mes/ano pertence � uma vers�o e retorna uma string, sendo:
   *
   * CODVERSAO + | + MESINICIAL + | +  ANOINICIAL + | +  MESFINAL + | +  ANOFINAL + CODSISTEMA
   * @param versao
   * @return
   * @throws ECARException
   */
  public String getPeriodoByVersao(ConfigSisExecFinanCsefv versao) throws ECARException{
   
    String retorno = "";
     
    List versoesOrdenadasPelaData = this.getCsefvOrderByMesAno();
    Iterator itVersoes = versoesOrdenadasPelaData.iterator();
    boolean achou = false;
    while(itVersoes.hasNext()){
      ConfigSisExecFinanCsefv v = (ConfigSisExecFinanCsefv) itVersoes.next();
     
      if(!v.getCodCsefv().equals(versao.getCodCsefv()) && !achou)
        continue;
     
      if(v.getCodCsefv().equals(versao.getCodCsefv()))
        achou = true;
     
      //if(achou && !v.getCodCsefv().equals(versao.getCodCsefv())){
      if(achou){
        //� a pr�xima vers�o depois da vers�o informada no parametro.
        String mesIni = (versao.getMesVersaoCsefv().longValue() < 10) ? "0" + String.valueOf(versao.getMesVersaoCsefv()) : String.valueOf(versao.getMesVersaoCsefv());
        String mesFim = (v.getMesVersaoCsefv().longValue() < 10) ? "0" + String.valueOf(v.getMesVersaoCsefv()) : String.valueOf(v.getMesVersaoCsefv());
        retorno = String.valueOf(versao.getCodCsefv()) + "|" +
            mesIni + "|" +
            String.valueOf(versao.getAnoVersaoCsefv()) + "|" +
            mesFim + "|" +
            String.valueOf(v.getAnoVersaoCsefv()) + "|"
            String.valueOf(versao.getConfigSisExecFinanCsef().getCodCsef());
        break;
      }
    }
   
    return retorno;
  }
 
 
    @Override
  public List pesquisar(Object obj, String[] ordem) throws ECARException {
   
    List list = new ArrayList()// lista resultado
    Criteria select;        // select (do hibernate)
   
    if (obj == null)
      return list;
   
    try {
        /* limpa os objeto do cache antes de buscar, para garantir que a busca ser� no BD e nao no cache */
        /* TODO avaliar e utilizacao do cache */
        //clearSession();
       
      select = session.createCriteria(obj.getClass());
      List listaMetodos = Util.listaMetodosGet(obj);
     
      //*************************************************************
      // Lista de m�todos que devem ser desconsiderados
      // no resto do algoritmo
      String[] listaExclusao = new String[]{"getSistemaVersaoCsefv"};
     
      // Rotina para eliminar os m�todos desnecess�rios
      for (int j=0; j<listaExclusao.length; j++) {
       
        String nomeMetodo = listaExclusao[j];
        Iterator x = listaMetodos.iterator();
       
        while (x.hasNext()) {
         
          Method metodo = (Method) x.next();
           
          if (metodo.getName().equals(nomeMetodo)) {
            listaMetodos.remove(metodo);
            break;
          }
        }
      }
      //*************************************************************
     
      Object auxObj;
      String nomeAtributo;
      String nomeMetodo;
      String tipoRetorno;
      for (int i = 0; i < listaMetodos.size(); i++) {
        auxObj = ((Method)listaMetodos.get(i)).invoke(obj, null);
        // somente adiciona um criterio se o conteudo for != vazio
        if (auxObj != null) {
          // obtem o nome do m�todo para retirar o nome do atributo
          nomeMetodo = ((Method)listaMetodos.get(i)).getName();
          tipoRetorno = ((Method)listaMetodos.get(i)).getReturnType().getName().toLowerCase();
          nomeAtributo = nomeMetodo.substring(3,4).toLowerCase() +
            nomeMetodo.substring(4);
         
          if (tipoRetorno.endsWith("string"))
            select.add(Expression.ilike(nomeAtributo, "%" + auxObj + "%"));
          else{         
              // Se o atributo for Set n�o entra na pesquisa ser� filtrado depois
              if(!tipoRetorno.endsWith("set"))
                  select.add(Expression.eq(nomeAtributo, auxObj));
          }   
        }
      }
     
      if (ordem != null)
        for (int i = 0; i < ordem.length; i+=2) //anda aos pares
          if (ordem[i+1].equalsIgnoreCase(Dao.ORDEM_ASC))
            select.addOrder(Order.asc(ordem[i]));
          else if (ordem[i+1].equalsIgnoreCase(Dao.ORDEM_DESC))
            select.addOrder(Order.desc(ordem[i]));
     
      list = select.list();
   
    } catch (HibernateException e) {
      this.logger.error(e);
          throw new ECARException("erro.hibernateException");
    } catch (IllegalAccessException e) {
      this.logger.error(e);
          throw new ECARException("erro.exception");
    } catch (IllegalArgumentException e) {
      this.logger.error(e);
          throw new ECARException("erro.exception");
    } catch (InvocationTargetException e) {
      this.logger.error(e);
          throw new ECARException("erro.exception");
    }
   
    return list;
   
  }
 
  /**
   * Exclui um objeto passando a classe e a chave como par�metro. Primeiro carrega o objeto<br>
         *
         * @param obj
         * @throws ECARException
         */
 
  public void excluir (ConfigSisExecFinanCsefv obj) throws ECARException {
   
        try {
        
          boolean excluir = true;

            if ((contar(obj.getConfigExecFinanCefs()) > 0) || (contar(obj.getImportacaoImps()) > 0)) {
                excluir = false;
                throw new ECARException("integracaoFinanceira.versaoSistema.exclusao.erro");
            }
            if (excluir)
                super.excluir(obj);
        } catch (ECARException e) {
          this.logger.error(e);
            throw e;
        }

  }
}
TOP

Related Classes of ecar.dao.ConfigSisExecFinanCsefvDao

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.