Package comum.util

Source Code of comum.util.LogBean

/*
* Created on 17/06/2005
*
*/
package comum.util;

import java.util.Calendar;
import java.util.Iterator;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Mappings;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PrimaryKey;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.Table;
import org.hibernate.type.Type;

import comum.database.HibernateUtil;

import ecar.pojo.UsuarioUsu;

/**
* @author cristiano
* @since 17/06/2005
* @version N/C
*/
public class LogBean {
    /**
     *
     */
    public static final String SEPARADOR_CAMPOS_LOG = "#";
    /**
     *
     */
    public static final String SEPARADOR_CAMPOS_DADOS = ",";
 
  private Logger logger = null;

  private Object obj = null; // objeto que foi inserido, atualizado ou deletado
  private UsuarioUsu usuario = null; // usuario logado
  private String iPUsuario = null; // IP do usu�rio logado
  private String operacao = null; // Opera��o: Incluir, Excluir ou Alterar
  private String codigoTransacao = null;
  private String codigoSessao = null;
 
  /**
   * Retorna String IPUsuario.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return String    - IPUsuario
   */
  public String getIPUsuario() {
    return iPUsuario;
  }

  /**
   * Atribui valor especificado para String IPUsuario.<br>
   *
         * @param usuario
         * @author N/C
     * @since N/C
     * @version N/C
   */
  public void setIPUsuario(String usuario) {
    iPUsuario = usuario;
  }

  /**
   * Retorna Object obj.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return Object    - obj
   */
  public Object getObj() {
    return obj;
  }

  /**
   * Atribui valor especificado para Object obj.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param obj
   */
  public void setObj(Object obj) {
    this.obj = obj;
  }
 
  /**
   * Retorna UsuarioUsu usuario.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return UsuarioUsu
   */
  public UsuarioUsu getUsuario() {
    return usuario;
  }
 
  /**
   * Atribui valor especificado para UsuarioUsu usuario.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param usuario
   */
  public void setUsuario(UsuarioUsu usuario) {
    this.usuario = usuario;
  }

  /**
   * Construtor.<br>
   *
   * @author N/C
     * @since N/C
   * @version N/C
   */
  public LogBean() {
    logger = Logger.getLogger(this.getClass());
  }

  /**
   * Retorna String operacao.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return String
   */
  public String getOperacao() {
    return operacao;
  }

  /**
   * Atribui valor especificado para String opreracao.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param operacao
   */
  public void setOperacao(String operacao) {
    this.operacao = operacao;
  }
 
  /**
   * Retorna String codigoSessao.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return String
   */
  public String getCodigoSessao() {
    return codigoSessao;
  }

  /**
   * Atribui valor especificado para String codigoSessao.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param codigoSessao
   */
  public void setCodigoSessao(String codigoSessao) {
    this.codigoSessao = codigoSessao;
  }

  /**
   * Retorna String codigoTransacao.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return String
   */
  public String getCodigoTransacao() {
    return codigoTransacao;
  }

  /**
   * Atribui valor especificado para String codigoTransacao
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param codigoTransacao
   */
  public void setCodigoTransacao(String codigoTransacao) {
    this.codigoTransacao = codigoTransacao;
  }

  /**
   * Retorna String no formato:<br>
   * CodUsu#IPUsuario#CodigoTransacao#CodigoSessao#Operacao#TableName#Dados#DataAtual.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
     * @return String
   */
    @Override
  public String toString() {
   
    StringBuffer retorno = new StringBuffer();
    retorno.append(getUsuario().getCodUsu());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(getIPUsuario());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(getCodigoTransacao());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(getCodigoSessao());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(getOperacao());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    if (getTableName(getObj())!=null)
    retorno.append(getTableName(getObj()));
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(getDados());
    retorno.append(SEPARADOR_CAMPOS_LOG);
    retorno.append(Data.parseDate(Data.getDataAtual()));
       
    return retorno.toString();
  }
 
  /**
   * Retorna String Colunas.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @return String
   */
  private String getDados() {
    return getColunas(getObj());
  }
 
  /**
   * Se comSeparador verdadeiro retorna a Hora atual com separador ':', do contrario retorna sem.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
         * @param comSeparador
   * @return String
   */
  public static String getHoraAtual(boolean comSeparador)  {
      Calendar cal = Calendar.getInstance();

      StringBuffer  hh = new StringBuffer();
      StringBuffer  mm = new StringBuffer();
      StringBuffer  ss = new StringBuffer();
      hh.append(cal.get(Calendar.HOUR_OF_DAY));
      mm.append(cal.get(Calendar.MINUTE));
      ss.append(cal.get(Calendar.SECOND));

      if(mm.length() < 2)
        mm.insert(0, "0");
      if(hh.length() < 2)
        hh.insert(0, "0");
      if(ss.length() < 2)
        ss.insert(0, "0");
               
      if(comSeparador) {
        return (hh.append(":").append(mm).append(":").append(ss)).toString();
      }
      else {
        return (hh.append(mm).append(ss)).toString();
      }
  }
   
 

 
  /**
   * Retorna o nome/valor dos campos da tabela que n�o sejam PK.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @param Object o    - Objeto a ser recuperados os valores
   * @return String    - Nome/Valor dos campos
   */
  private String getColunas(Object o) {
    StringBuffer r = new StringBuffer();
   
    r.append(getPkName(o)).append(SEPARADOR_CAMPOS_DADOS);
   
   
    Configuration conf = HibernateUtil.getConfiguration();
    Mappings map = conf.createMappings();
    //TODO: verificar se funcionar� apos mudan�a...
    Iterator itr = null;
   
    if (o!=null && o.getClass().getName()!=null && map.getClass(o.getClass().getName())!=null)
      itr = map.getClass(o.getClass().getName()).getPropertyIterator();
   
    while (itr!=null && itr.hasNext()) {
      Property prop = (Property) itr.next();
     
      String colname = prop.getName();
      //Value value = prop.getValue();
      String colvalue = null;
      Type t = prop.getType();
     
      if("java.util.Set".equals(t.getReturnedClass().getName())) {
        continue;
      }

      try{
        Object v = Util.invocaGet(o, colname);
        boolean mostrarIgual = true;

        if(v != null) {
          // se for data, formata-la
          if(v instanceof java.util.Date) {
            colvalue = Data.parseDate((java.util.Date)v);
          }
          // se for do pacote ecar.pojo, recuperar o valor da chave
          else if(t.getReturnedClass().getName().indexOf("ecar.pojo.") > -1) {
            colvalue = getPkName(v);
            mostrarIgual = false;
          }
          else {
            colvalue = v.toString();
          }
        }
       
        if(mostrarIgual) {
          r.append(colname.toUpperCase()).append("=").append(colvalue);
        }
        else {
          r.append(colvalue);
        }
        r.append(SEPARADOR_CAMPOS_DADOS);

      }catch(Exception e){
        logger.error(e);
      }
    }
    r.delete(r.length() - SEPARADOR_CAMPOS_DADOS.length(), r.length());

    return r.toString();
  }
 
  /**
   * Retorna o nome e o valor da(s) chave(s) prim�ria(s).<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @param Object o    - Objeto a ser descoberto a(s) chave(s)
   * @return String    - Nome/valor da(s) chave(s)
   */
  private String getPkName(Object o) {
    StringBuffer r = new StringBuffer();
    Configuration conf = HibernateUtil.getConfiguration();
    Mappings map = conf.createMappings();
    if (o!=null && o.getClass().getName()!=null && map.getClass(o.getClass().getName())!=null) {
      Table tab = map.getClass(o.getClass().getName()).getTable();
      PrimaryKey pk = tab.getPrimaryKey();
      Iterator itr = pk.getColumnIterator();
      while (itr.hasNext()) {
        Column col = (Column) itr.next();
        String colname = col.getName();
        String value = "";
        try {
          value = conf.getClassMapping(o.getClass().getName())
              .getIdentifierProperty().getGetter(o.getClass()).get(o)
              .toString();
        } catch (HibernateException e) {
          logger.error(e);
        }
        r.append(colname.toUpperCase()).append("=").append(value);
        r.append(SEPARADOR_CAMPOS_DADOS);
      }
      r.delete(r.length() - SEPARADOR_CAMPOS_DADOS.length(), r.length());
   
    }
   
    return r.toString();
   
  }

  /**
   * Recupera o nome da tabela de um determinado objeto.<br>
   *
   * @author N/C
     * @since N/C
     * @version N/C
   * @param Object o    - Objeto a ser descoberta a tabela
   * @return String    - Nome da tabela
   */
  private String getTableName(Object o) {
    Configuration conf = HibernateUtil.getConfiguration();
    Mappings map = conf.createMappings();
    Table tab = null;
    String tabela2 = null;
    if (o!=null && o.getClass().getName()!=null && map.getClass(o.getClass().getName())!=null) {
      tab = map.getClass(o.getClass().getName()).getTable();
      tabela2 = tab.getName();
    }


    return tabela2;
  }
}
TOP

Related Classes of comum.util.LogBean

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.