-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Problem integrating Hibernate Core with Hibernate Validator
PostPosted: Tue Jun 03, 2008 3:08 pm 
Newbie

Joined: Thu Sep 23, 2004 11:53 am
Posts: 8
Location: Maracaibo, Venezuela
Hi to all:

Three questions regarding HV and Hiberante Core:


Q1: I'm trying to use a custom Validator Messages

ClassValidator<ISociedad> classValidator = new ClassValidator<ISociedad>(
ISociedad.class, ResourceBundle.getBundle( "com/procedatos/plataforma/modelo/recursos/ValidatorMessages", new Locale("en") )
);



com.procedatos.plataforma.modelo.organizacion.Sociedad@3257b8[PKEY=com.procedatos.plataforma.modelo.organizacion.SociedadPK@15c62bc[co_mandt=<null>,co_sociedad=20],no_sociedad=Energia Eléctrica de Venezuela,no_corto_sociedad=ENELVEN,co_rif=J-07000686-2,co_nit=<null>,de_direccion_1=CALLE 77 (5 DE JULIO) CON AV. 11, EDIF. ENELVEN,de_direccion_2=<null>,DATA TYPE=MASTER_DATA,co_usuario=ptaborda,fe_evento=<null>,ti_evento=<null>,in_borrado=false]
rif > RIF structure is J-XXXXXXXX-X. Where X stands for a number between 0 and 9
mandt > {modelo.organizacion.sociedad.mandt.not.null}
mandt > {modelo.parametrizacion.mandante.mandt.not.null}

I correctly received the error message associated with Sociedad Class but the child validator runs against correctly Mandante class (@Valid) but my custom messages are not retrieved from any resource bundled.

I think there is a bug in ClassValidator where the resource bundled used on the first class is not passed to the child validator so basically these child validators resource to the default ValidatorMessages.properties but my custom message key are not there. Has anyone encounter a similar behaviour with associated objects?


Q2 and Q3: I'm trying to define a @PrePersit and @PreUpdate events in order to assign a Timestamp to the object touch field and the type of event
associated with this event. But they are never fired before a insert sql statement In fact Hibernate tried to persist the object instance normally.

session.persist(sociedad);
fail( "EL Objeto Sociedad debio ser validado" ); <-- Unit Test Fails
but not validation is fired and not prepersist or preupdate are generated


Which brings my third question my unit test didn't generated any InvalidStateException exception at all but if do the same logic if validated the object instance

Code:
       sociedad.setSociedadPK( new      SociedadPK(mandante.getMandt(),"20") ).


...

      ClassValidator<ISociedad> classValidator = new ClassValidator<ISociedad>(
            ISociedad.class, ResourceBundle.getBundle( "com/procedatos/plataforma/modelo/recursos/ValidatorMessages", new Locale("en") )
      );      

   
      InvalidValue[] validationMessages = classValidator.getInvalidValues( sociedad);

      for (InvalidValue validationMessage : validationMessages)
      {
            System.out.println(validationMessage.getPropertyName() +" > "+validationMessage.getMessage());
      }
      
      assertEquals( 0, validationMessages.length );


Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailinglists/HowToAskForHelp



Hibernate version:

Hibernate Core 3.2.5, Hibernate Annotations 3.3.1, Hibernate Validator 3.0.0

Mapping documents:

(none) Using annotations.

hibernate.cfgt.xml

Code:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Parametros Basicos -->
  <property name="connection.driver_class">org.postgresql.Driver</property>
  <property name="connection.url">jdbc:postgresql://localhost:5432/plataforma</property>
  <property name="connection.username">plataformaus</property>
  <property name="connection.password">plataforma</property>
  <property name="connection.pool_size">5</property>
  <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
  <property name="show_sql">true</property>
  <property name="transaction.factory_class">
   org.hibernate.transaction.JDBCTransactionFactory
  </property>
  <!--<property name="hibernate.hbm2ddl.auto">create</property>-->
  <property name="connection.autocommit">true</property>
  <property name="current_session_context_class">thread</property>
  <property name="use_outer_join">false</property>
  <property name="max_fetch_depth">0</property>
  <property name="hibernate.QueryCacheEnabled">true</property>
  <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  <!-- Archivos de Mapeo -->
  <mapping class="com.procedatos.plataforma.modelo.organizacion.Sociedad"/>
  <mapping class="com.procedatos.plataforma.modelo.organizacion.SociedadHistorico"/>   
  <mapping class="com.procedatos.plataforma.modelo.parametrizacion.Mandante"/>
  <event type="pre-update">
   <listener class="org.hibernate.validator.event.ValidateEventListener"/>
  </event>
  <event type="pre-insert">
   <listener class="org.hibernate.validator.event.ValidateEventListener"/>
  </event>
</session-factory>
</hibernate-configuration>





Code between sessionFactory.openSession() and session.close():


Code:
   @Test
   public void crearSociedad() //throws Exception
   {
       Session session = openSession();
      
       Transaction tx = session.beginTransaction();
      
       // Mandante 210 - Desarrollo
       IMandante mandante = (Mandante)session.get(Mandante.class, "210");
      
       ISociedad sociedad  = new Sociedad();
      
       sociedad.setSociedadPK( new SociedadPK(mandante.getMandt(),"20") ).
        setMandante(mandante).
        setNombre("Energia Eléctrica de Venezuela").
        setNombreCorto("ENELVEN").
        setRif("J-07000686-2"). // This is a error - 1 error
        setDireccionLinea1("CALLE 77 (5 DE JULIO) CON AV. 11, EDIF. ENELVEN").
       //setFechaEvento(new Date(System.currentTimeMillis()) ).
    //setEvento(EventosDataTracking.MASTER_DATA_INSERTED).
    setUsuario("ptaborda").
    setBorrado(false);            
      
      
       try
       {
        session.persist(sociedad);
        fail( "EL Objeto Sociedad debio ser validado" );
        
        tx.commit();
        tx = null;
       }
       catch( InvalidStateException hv )
       {
          assertEquals( 1, hv.getInvalidValues().length );
          
         InvalidValue[] validationMessages = hv.getInvalidValues();
         
         for (InvalidValue validationMessage : validationMessages)
         {
               System.out.println(validationMessage.getPropertyName() +" > "+validationMessage.getMessage());
         }        
       }
      finally
      {
       if ( tx != null )
       {
        tx.rollback();
       }
      
       session.close();      
      
      }
      
   


Error (1) : This is a validation rule (Pattern), so basically my unit test should had failed with Validation messages but it showed and Assertion message

session.persist(sociedad);
fail( "The Sociedad Object must had been validated!!!" );

Full stack trace of any exception that occurs:

java.lang.AssertionError: The Sociedad Object must had been validated!!!
at org.junit.Assert.fail(Assert.java:71)
at com.procedatos.plataforma.modelo.organizacion.SociedadTest1.crearSociedad(SociedadTest1.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)





Name and version of the database you are using:

Postgres SQL 8.3

The generated SQL (show_sql=true):

Code:
DEBUG main org.hibernate.cfg.Configuration - Event listeners: pre-update=org.hibernate.validator.event.ValidateEventListener
DEBUG main org.hibernate.cfg.Configuration - Event listeners: pre-insert=org.hibernate.validator.event.ValidateEventListener

...

INFO main org.hibernate.validator.Version - Hibernate Validator 3.0.0.GA
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in thread context classloader
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to org.hibernate.validator.resources.DefaultValidatorMessages
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in thread context classloader
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to org.hibernate.validator.resources.DefaultValidatorMessages
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in thread context classloader
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to org.hibernate.validator.resources.DefaultValidatorMessages
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in thread context classloader
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to org.hibernate.validator.resources.DefaultValidatorMessages
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in thread context classloader
DEBUG main org.hibernate.validator.ClassValidator - ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to org.hibernate.validator.resources.DefaultValidatorMessages
INFO main org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
INFO main org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 5
INFO main org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: true
INFO main org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/plataforma
INFO main org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=plataformaus, password=plataforma, autocommit=true}
DEBUG main org.hibernate.connection.DriverManagerConnectionProvider - total checked-out connections: 0
DEBUG main org.hibernate.connection.DriverManagerConnectionProvider - opening new JDBC connection
DEBUG main org.hibernate.connection.DriverManagerConnectionProvider - created connection to: jdbc:postgresql://localhost:5432/plataforma, Isolation Level: 2
INFO main org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 8.3.1






Classes and Interfaces


Sociedad
Code:
package com.procedatos.plataforma.modelo.organizacion;

import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreRemove;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.hibernate.annotations.Index;
import org.hibernate.annotations.NamedQueries;
import org.hibernate.annotations.NamedQuery;
import org.hibernate.validator.Valid;

import com.procedatos.plataforma.modelo.DataMaestra;
import com.procedatos.plataforma.modelo.EventosDataTracking;
import com.procedatos.plataforma.modelo.parametrizacion.IMandante;
import com.procedatos.plataforma.modelo.parametrizacion.Mandante;

/**
* Define una Sociedad registrada dentro de la Plataforma
*
* @author ptaborda
* @version $Id: Sociedad.java, v1.0.0 2008/04/14 14:16:00 ptaborda $
*/
@Entity
@org.hibernate.annotations.Entity(mutable = true)
@Table( schema="organizacion",name="tbl_sociedad",
      uniqueConstraints = {@UniqueConstraint(columnNames={"co_mandt","co_sociedad","co_rif"})})
@org.hibernate.annotations.Table( appliesTo="tbl_sociedad", indexes = { @Index(name="idx_sociedad",
      columnNames = { "co_mandt","co_sociedad" } ) } )
@NamedQueries({      
   @NamedQuery(name="Sociedad.ObtenerObjeto",query="SELECT sociedad FROM Sociedad AS sociedad WHERE sociedad.sociedadPK.mandt = :mandt AND sociedad.sociedadPK.codigo = :codigo",
          cacheable = false ),
   @NamedQuery(name="Sociedad.ObtenerObjetos",query="SELECT sociedad FROM Sociedad AS sociedad ORDER BY sociedad.nombreCorto ASC ",
         cacheable = true, cacheRegion = "organizacion.sociedad" )      
} )   
public final class Sociedad extends DataMaestra implements ISociedad
{


    /** Serial Version UID */
    private static final long serialVersionUID = 4002L;   
   
   /**
    * Identificador de una Sociedad. (Primary Key)
    * 
    */   
   private ISociedadPK sociedadPK;
   
   /**
    * Mandante
    * 
    */    
   private IMandante mandante;
   
   
   /**
    * Denominación de la Sociedad o Empresa
    * 
    */    
   private String nombre;
   

   /**
    * Denominación de la Sociedad o Empresa en forma Abreviada
    * 
    */    
   private String nombreCorto;   
   
   
   /**
    * Registro de Información Fiscal (RIF)
    * 
    */    
   private String rif;   
   

   /**
    * Número de Información Tributario (NIT)
    * 
    */    
   private String nit;   
   
   
   /**
    * Dirección Fiscal de la Sociedad (Linea 1)
    * 
    */    
   private String direccionLinea1;   
   
   
   /**
    * Dirección Fiscal de la Sociedad (Linea 2)
    * 
    */    
   private String direccionLinea2;   
      
   
   
   /**
    * Construye un Objeto Sociedad (CTOR por defecto)
    *
    *
    */
   public Sociedad()
   {
       
   }

   
   /**
    * Construye un Objeto Sociedad
    *
    *
    * @param id        The id to set.
    * @param mandante  The mandante to set.
    *
    */      
   public Sociedad( ISociedadPK sociedadPK, IMandante mandante )
   {
       this.sociedadPK  = sociedadPK;   
      this.mandante    = mandante;
   }



   
   /**
    * Construye un Objeto Sociedad
    *
    *
    * @param id              The id to set.
    * @param mandante        The mandante to set.
    * @param nombre          The nombre to set.
    * @param nombreCorto     The nombreCorto to set
    * @param rif             The rif to set.
    * @param nit             The nit to set. 
    * @param direccionLinea1 The direccionLinea1 to set.
    * @param direccionLinea2 The direccionLinea2 to set.
    *
    */      
   public Sociedad( ISociedadPK sociedadPK,
         IMandante mandante,
         String nombre,
         String nombreCorto,
         String rif,
         String nit,
         String direccionLinea1,
         String direccionLinea2 )
   {
       this.sociedadPK      = sociedadPK;
      this.mandante        = mandante;
      this.nombre          = nombre;
      this.nombreCorto     = nombreCorto;
      this.rif             = rif;
      this.nit             = nit;
      this.direccionLinea1 = direccionLinea1;
      this.direccionLinea2 = direccionLinea2;
   }
   
   
   
   /**
    * Getter of the property <tt>id</tt>
    * @return  Returns the id.
    *
    */
   @Valid
   @EmbeddedId
   @AttributeOverrides( {
         @AttributeOverride(name = "mandt"  , column = @Column(name = "co_mandt", nullable = false, length = 3)),
         @AttributeOverride(name = "codigo" , column = @Column(name = "co_sociedad", nullable = false, length = 4)) })
   public ISociedadPK getSociedadPK()
   {
      return this.sociedadPK;
   }


   /**
    * Setter of the property <tt>id</tt>
    * @param id  The id to set.
    *
    */
   public ISociedad setSociedadPK( ISociedadPK sociedadPK )
   {
       this.sociedadPK       = sociedadPK;      
      return this;
   }
   

   /**
    * Getter of the property <tt>mandante</tt>
    * @return  Returns the mandante.
    *
    */         
   @Valid
   @ManyToOne(targetEntity=Mandante.class, fetch = FetchType.LAZY)
   @JoinColumn(name = "co_mandt", nullable = false, insertable = false, updatable = false)   
   public IMandante getMandante()
   {
      return this.mandante;
   }

   /**
    * Setter of the property <tt>mandante</tt>
    * @param mandante  The mandante to set.
    *
    */   
   public ISociedad setMandante( IMandante mandante )
   {
      this.mandante = mandante;
      
      return this;
   }
   
   
   /**
    * Getter of the property <tt>nombre</tt>
    * @return  Returns the nombre.
    *
    */
    @Column( name = "no_sociedad", columnDefinition = "VARCHAR(50)")      
   public String getNombre()
   {
      return this.nombre;
   }


   /**
    * Setter of the property <tt>nombre</tt>
    * @param nombre  The nombre to set.
    *
    */
   public ISociedad setNombre(String nombre )
   {
      this.nombre = nombre;
      return this;
   }

   /**
    * Getter of the property <tt>nombreCorto</tt>
    * @return  Returns the nombreCorto.
    *
    */
    @Column( name = "no_corto_sociedad", columnDefinition = "VARCHAR(10)")      
   public String getNombreCorto()
   {
      return this.nombreCorto;
   }


   /**
    * Setter of the property <tt>nombreCorto</tt>
    * @param nombreCorto  The nombreCorto to set.
    *
    */
   public ISociedad setNombreCorto( String nombreCorto )
   {
      this.nombreCorto = nombreCorto;
      return this;
   }   
   
   
   /**
    * Getter of the property <tt>rif</tt>
    * @return  Returns the rif.
    *
    */
    @Column( updatable = true, name = "co_rif", columnDefinition = "VARCHAR(12)")      
   public String getRif()
   {
      return this.rif;
   }


   /**
    * Setter of the property <tt>rif</tt>
    * @param rif  The rif to set.
    *
    */
   public ISociedad setRif( String rif )
   {
      this.rif = rif;
      return this;
   }
   
   
   /**
    * Getter of the property <tt>nit</tt>
    * @return  Returns the nit.
    *
    */
    @Column(updatable = true, name = "co_nit", columnDefinition = "VARCHAR(10)")      
   public String getNit()
   {
      return this.nit;
   }


   /**
    * Setter of the property <tt>nit</tt>
    * @param nit  The nit to set.
    *
    */
   public ISociedad setNit( String nit )
   {
      this.nit = nit;
      return this;
   }
   

   /**
    * Getter of the property <tt>direccionLinea1</tt>
    * @return  Returns the direccionLinea1.
    *
    */
    @Column(updatable = true, name = "de_direccion_1", columnDefinition = "VARCHAR(60)")   
   public String getDireccionLinea1()
   {
      return this.direccionLinea1;
   }


   /**
    * Setter of the property <tt>direccionLinea1</tt>
    * @param direccionLinea1  The direccionLinea1 to set.
    *
    */
   public ISociedad setDireccionLinea1( String direccionLinea1 )
   {
      this.direccionLinea1 = direccionLinea1;
      return this;
   }
   
   
   /**
    * Getter of the property <tt>direccionLinea2</tt>
    * @return  Returns the direccionLinea2.
    *
    */
    @Column(updatable = true, name = "de_direccion_2", columnDefinition = "VARCHAR(60)")   
   public String getDireccionLinea2()
   {
      return this.direccionLinea2;
   }


   /**
    * Setter of the property <tt>direccionLinea2</tt>
    * @param direccionLinea2  The direccionLinea2 to set.
    *
    */
   public ISociedad setDireccionLinea2( String direccionLinea2 )
   {
      this.direccionLinea2 = direccionLinea2;
      return this;
   }   
   
   
   
   /**
    *
    * Asignaciones que deseamos que se realicen antes de realizar Insert
    * a un Objeto que implemente la interfaz IDataTracking
    *
    */
   @PrePersist
   public void onInsertEvent()
   {
      System.out.println("onInsertEvent");
    this.fechaEvento = new Date(System.currentTimeMillis());   
    this.evento      = EventosDataTracking.MASTER_DATA_INSERTED;
   }
   

   /**
    *
    * Asignaciones que deseamos que se realicen antes de realizar Insert
    * a un Objeto que implemente la interfaz IDataTracking
    *
    */
   @PreUpdate
   public void onUpdateEvent()
   {
    this.fechaEvento = new Date(System.currentTimeMillis());
    this.evento      = EventosDataTracking.MASTER_DATA_UPDATED;   
   }
   
   
   /**
    *
    * Asignaciones que deseamos que se realicen antes de realizar Insert
    * a un Objeto que implemente la interfaz IDataTracking
    *
    */
   @PreRemove
   public void onDeleteEvent()
   {
    this.fechaEvento = new Date(System.currentTimeMillis());
    this.evento      = EventosDataTracking.MASTER_DATA_DELETED;   
   }
   
   
   
   /**
    * Da formato a las Propiedades a un Objeto <tt>Sociedad</tt>
    *
    * @return Contenido del Objeto con formato
    */
   @Override      
    public String toString()
    {
        return new ToStringBuilder(this)
        .append("PKEY"              , getSociedadPK())
        .append("no_sociedad"       , getNombre())
        .append("no_corto_sociedad" , getNombreCorto())
        .append("co_rif"            , getRif())
        .append("co_nit"            , getNit())
        .append("de_direccion_1"    , getDireccionLinea1())
        .append("de_direccion_2"    , getDireccionLinea2())
        .append("DATA TYPE"         , getDataType())
        .append("co_usuario"        , getUsuario())
        .append("fe_evento"         , getFechaEvento())
        .append("ti_evento"         , getEvento())
        .append("in_borrado"        , isBorrado())
        .toString();          
    }
   
   
   /**
    * Permite determinar si un Objeto <tt>Sociedad</tt> es igual a otro Objeto <tt>Sociedad</tt>
    *
    * @param other El Otro Objeto con el cual vamos a comparar.
    * @return Si son iguales devuelve <code>Verdadero</code>, caso contrario devuelve <code>Falso</code>
    */
   @Override      
    public boolean equals(Object other)
    {
       if ( (this == other ) ) return true;
        if ( !(other instanceof ISociedad ) ) return false;
        ISociedad castOther = (Sociedad) other;
        return new EqualsBuilder()
            .append(this.getSociedadPK(), castOther.getSociedadPK())
            .isEquals();        
    }
   
   
   
   /**
    * Permite generar un "hashcode" de un Objeto <tt>Sociedad</tt>
    *
    * @return return "hascode"
    */
   @Override      
    public int hashCode()
    {
        return new HashCodeBuilder()
        .append(getSociedadPK())
        .toHashCode(); 
    }   
   
   
}



DataTracking (Super Class)

Code:

*   Modelo de la Plataforma Distribuida de Aplicaciones
*
*   Copyright (C) 2008 Procesamiento Electrónico de Datos
*
*/
package com.procedatos.plataforma.modelo;

import static javax.persistence.EnumType.STRING;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;



/**
* Define los Diferentes Tipos de Data manejados por los diferentes dominios
* de Negocio de la Plataforma
*
* @author ptaborda
* @version $Id: Data.java, v1.0.0 2008/03/31 09:58:00 ptaborda $
*/
@MappedSuperclass
public abstract class DataTracking implements IDataTracking
{
   /** Usuario que generó el Evento sobre la Data Maestra */
   protected String    usuario;
   
   /** Fecha y Hora cuando se generó el Evento sobre la Data Maestra */
   protected Date    fechaEvento;
   
   /** Tipo de Evento generado sobre la Data Maestra  */
   protected EventosDataTracking    evento;   

   /** Indicador de Borrado del Dato Maestro */
   protected boolean borrado = false;
   
   /**
    * Getter of the property <tt>dataType</tt>
    * @return  Returns the dataType.
    *
    */
   @Transient
   public abstract DataTypes getDataType();

   /**
    * Da formato a las Propiedades a un Objeto que implemente <tt>Data</tt>
    *
    * @return Contenido del Objeto con formato
    */
    public abstract String toString();

   
   /**
    * Devolver quien fué el Usuario que generó el Evento sobre la Data
    *
    * @return Usuario que generó el Evento sobre la Data
    */    
   @Column(updatable = false, name = "co_usuario", nullable = false,
         columnDefinition = "VARCHAR(20)", length = 20)      
   public String getUsuario()
   {
      return usuario;
   }

   
   /**
    * Setter of the property <tt>usuario</tt>
    * @param usuario  The usuario to set.
    *
    */   
   public DataTracking setUsuario(String usuario)
   {
      this.usuario = usuario;
      return this;
   }

   
   /**
    * Devolver cuando que generó el Evento sobre la Data
    *
    * @return Cuando que generó el Evento sobre la Data
    */     
   @Column(updatable = false, name = "fe_evento", nullable = true,
         columnDefinition = "TIMESTAMP WITH TIME ZONE")      
   public Date getFechaEvento()
   {
         if( this.fechaEvento != null )
         {
          return new Date(this.fechaEvento.getTime());
         }
         else
         {
          return null;
         }
   }

   
   /**
    * Setter of the property <tt>fechaEvento</tt>
    * @param fechaEvento  The fechaEvento to set.
    *
    */      
   public DataTracking setFechaEvento(Date fechaEvento)
   {
       if( fechaEvento != null )
       {
         this.fechaEvento = new Date(fechaEvento.getTime());
       }
       else
       {
         this.fechaEvento = null;
       }   
      
       return this;
      
   }

   
      
   
   
   /**
    * Devolver el Tipo de Evento que se generó con la Data
    *
    * @return Tipo de Evento que se generó con la Data
    */    
   @Enumerated(STRING)   
   @Column(updatable = false, name = "ti_evento", nullable = true,
         columnDefinition = "VARCHAR(30)", length = 30)      
   public EventosDataTracking getEvento()
   {
      return evento;
   }

   
   /**
    * Setter of the property <tt>porque</tt>
    * @param porque  The porque to set.
    *
    */      
   public DataTracking setEvento( EventosDataTracking evento )
   {
      this.evento = evento;
      return this;
   }

   
   
   /**
    * Devolver si el Dato ha sido borrado del Repositorio
    *
    * @return Devuelve <tt>true</tt> si el Dato Maestro ha sido borrado del Repositorio, caso
    *         contrario devuelve <tt>false</tt>
    */    
   @Column(updatable = true, name = "in_borrado", nullable = false,
         columnDefinition = "BOOLEAN")      
   public boolean isBorrado()
   {
      return borrado;
   }

   
   /**
    * Setter of the property <tt>borrado</tt>
    * @param borrado  The borrado to set.
    *
    */      
   public DataTracking setBorrado(boolean borrado)
   {
      this.borrado = borrado;
      
      return this;
   }   
   
   
   
}




[/code]

_________________
Pedro Taborda
Procedatos,S.A.
Phone: (58414)6124848


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.