abk.dao.sql
Class ADataMapper<K extends Serializable,T extends IDataItem<K>>

java.lang.Object
  extended by abk.dao.sql.ADataMapper<K,T>
Type Parameters:
K - Tipo de dato de la clave de T.
T - Tipo del objeto para el que se implementa las operaciones de transmisión.

public class ADataMapper<K extends Serializable,T extends IDataItem<K>>
extends Object

Implementa las operaciones de transmisión de datos desde un ResultSet hacia una instancia y desde ésta hacia un PreparedStatement.


Nested Class Summary
static class ADataMapper.Cache
           
 
Field Summary
private  Class<T> iItemClass
          Clase correspondiente a T.
private  ADataProperty iKeyInfo
          Información para el mapeo de la propiedad de la clave primaria.
private  Map<String,ADataProperty> iProperties
          Mapa con los campos de T que forman parte del objeto de transferencia de datos.
private  String iSequenceName
          Nombre de la secuencia, si se usan secuencias (solamente para bases de datos Oracle.
private  String iTableName
          Nombre de la tabla en la base de datos.
private  String iTupla
          Caché de la tupla completa de columnas de la entidad.
private  ALogger logger
           
 
Constructor Summary
ADataMapper(Class<T> itemClass)
          Constructor.
 
Method Summary
 T createObject()
          Crea un nuevo objeto T.
protected  void finalize()
           
 Object get(T obj, String name)
          Devuelve el valor del campo de un objeto de la clase T.
<S> S
get(T obj, String name, Class<S> klass)
          Devuelve un campo de objeto con el tipo de objeto definido por la clase S.
protected
<S> S
get(T obj, String name, Class<S> wrapper, Class<?> raw)
          Devuelve un campo de objeto con el tipo de objeto definido por la clase S, soportando la equivalencia entre clases nativas y envolventes.
 Boolean getBoolean(T ot, String name)
          Devuelve como Boolean la propiedad cuyo nombre se indica.
 Byte getByte(T ot, String name)
          Devuelve como Byte la propiedad cuyo nombre se indica.
 Character getCharacter(T ot, String name)
          Devuelve como Character la propiedad cuyo nombre se indica.
 String getClassName()
          Utilería para llamar directamente a getItemClass().getName().
(package private)  Collection<ADataProperty> getColumns()
           
private static Object getDataItemValue(ResultSet rs, int col, ADataProperty info)
          Crea un nuevo objeto IDataItem y lo inicializa desde la base de datos si el tipo de objeto es Column.loadable(), en otro caso se devuelve un objeto vacío a excepción de su clave primaria.
 Double getDouble(T ot, String name)
          Devuelve como Double la propiedad cuyo nombre se indica.
private static Enum<?> getEnumValue(Class<?> type, String name)
          Devuelve la constante correspondiente a un nombre.
 Float getFloat(T ot, String name)
          Devuelve como Float la propiedad cuyo nombre se indica.
 Integer getInteger(T ot, String name)
          Devuelve como Integer la propiedad cuyo nombre se indica.
 Class<T> getItemClass()
          Devuelve la clase del tipo de objeto que se utiliza para la transmisión.
 Class<K> getKeyClass()
          Devuelve la clase de la propiedad clave ID.
 ADataProperty getKeyInfo()
          Devuelve la información sobre las propiedades de la clave primaria de la entidad.
 Long getLong(T ot, String name)
          Devuelve como Long la propiedad cuyo nombre se indica.
 Map<String,ADataProperty> getProperties()
          Devuelve el mapa de propiedades de la entidad.
 String getSequenceName()
          Devuelve el nombre de la secuencia para obtener el siguiente valor del ID en bases de datos Oracle.
 Short getShort(T ot, String name)
          Devuelve como Short la propiedad cuyo nombre se indica.
 String getString(T ot, String name)
          Devuelve como String la propiedad cuyo nombre se indica.
 String getTableName()
          Devuelve el nombre de la tabla de entidad mapeada.
static Object getValueFrom(ResultSet rs, int col, ADataProperty info)
          Recoge el valor del campo desde la posición indicada de un ResultSet.
 ADataProperty info(String name)
          Devuelve del descriptor de la propiedad correspondiente a name.
 ADataProperty infoByColumnLabel(String label)
          Recupera la información de una propiedad a partir del nombre de su columna en la base de datos.
 void set(T obj, String name, Object value)
          Establece el valor de un campo de la clase T.
static void setFrom(IDataItem<? extends Serializable> data, ResultSet rs, Collection<ADataProperty> infos)
          Actualiza los valores del objeto con las columnas homónimas del ResultSet.
 void setFrom(T data, ResultSet rs)
          Actualiza los valores del objeto con las columnas homónimas del ResultSet.
 void setKeyInfo(ADataProperty keyInfo)
          Asigna la información sobre las propiedades de la clave primaria de la entidad.
 void setProperties(Map<String,ADataProperty> properties)
          Asigna el mapa de propiedades de la entidad.
 void setSequenceName(String name)
          Establece el nombre de la secuencia para obtener el siguiente valor del ID en bases de datos Oracle.
 void setTableName(String tableName)
          Asigna el nombre de la tabla de la base de datos en la que se mapea la entidad.
 List<ADataProperty> subset(int mask)
          Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos.
 List<ADataProperty> subset(int maskYes, int maskOff)
          Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos y otra máscara con los bits que deben tener a cero.
static List<ADataProperty> subset(Iterable<ADataProperty> columns, int mask)
          Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos.
static List<ADataProperty> subset(Iterable<ADataProperty> columns, int maskYes, int maskOff)
          Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos y otra máscara con los bits que deben tener a cero.
 List<ADataProperty> subset(ResultSet rs)
          Devuelve una colección de informaciones de propiedad correspondiente a las columnas de un ResultSet en el objecto de transferencia actual.
 String tupla()
          Devuelve la tupla completa de nombres de columnas de la entidad.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private final ALogger logger

iItemClass

private final Class<T extends IDataItem<K>> iItemClass
Clase correspondiente a T.


iProperties

private Map<String,ADataProperty> iProperties
Mapa con los campos de T que forman parte del objeto de transferencia de datos. Las claves del mapa son los nombres de los campos en mayúsculas.


iTableName

private String iTableName
Nombre de la tabla en la base de datos.


iKeyInfo

private ADataProperty iKeyInfo
Información para el mapeo de la propiedad de la clave primaria.


iSequenceName

private String iSequenceName
Nombre de la secuencia, si se usan secuencias (solamente para bases de datos Oracle.


iTupla

private String iTupla
Caché de la tupla completa de columnas de la entidad.

Constructor Detail

ADataMapper

public ADataMapper(Class<T> itemClass)
Constructor. Únicamente estable el nombre de la clase. El resto de campos quedan a null.

Parameters:
itemClass - Clasde del item para la nueva instancia.
Throws:
NullArgumentException - si itemClass es null.
Method Detail

getColumns

Collection<ADataProperty> getColumns()

getTableName

public final String getTableName()
Devuelve el nombre de la tabla de entidad mapeada.

Returns:
Nombre de la tabla.

setTableName

public final void setTableName(String tableName)
Asigna el nombre de la tabla de la base de datos en la que se mapea la entidad.

Parameters:
tableName - Nuevo nombre de la tabla.

getItemClass

public final Class<T> getItemClass()
Devuelve la clase del tipo de objeto que se utiliza para la transmisión.

Returns:
Clase del tipo de objeto T.

getClassName

public final String getClassName()
Utilería para llamar directamente a getItemClass().getName().

Returns:
Nombre de la clase del item.

getProperties

public final Map<String,ADataProperty> getProperties()
Devuelve el mapa de propiedades de la entidad.

Returns:
Mapa de propiedades.

setProperties

public final void setProperties(Map<String,ADataProperty> properties)
Asigna el mapa de propiedades de la entidad.

Parameters:
properties - Nuevo mapa de propiedades.

createObject

public final T createObject()
Crea un nuevo objeto T.

Returns:
Objeto creado, que no puede ser null.
Throws:
IllegalStateException - si ClassUtils.createObject(Class) la lanza.
SecurityException - si ClassUtils.createObject(Class) la lanza.
ExceptionInInitializerError - si ClassUtils.createObject(Class) la lanza.

getKeyInfo

public final ADataProperty getKeyInfo()
Devuelve la información sobre las propiedades de la clave primaria de la entidad.

Returns:
Arreglo con la información sobre las propiedades de la clave primaria.

setKeyInfo

public final void setKeyInfo(ADataProperty keyInfo)
Asigna la información sobre las propiedades de la clave primaria de la entidad.

Parameters:
keyInfo - Información a asignar.

getSequenceName

public final String getSequenceName()
Devuelve el nombre de la secuencia para obtener el siguiente valor del ID en bases de datos Oracle.

Returns:
Nombre de la secuencia disponible, o null si no se ha definido ninguna secuencia para la generación automática de ID's de fila.

setSequenceName

public final void setSequenceName(String name)
Establece el nombre de la secuencia para obtener el siguiente valor del ID en bases de datos Oracle.

Parameters:
name - Nombre de la secuencia en la base de datos.

getKeyClass

public Class<K> getKeyClass()
Devuelve la clase de la propiedad clave ID.

Returns:
Clase de la propiedad clave de la entidad.

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable

info

public ADataProperty info(String name)
Devuelve del descriptor de la propiedad correspondiente a name.

Parameters:
name - Nombre de la propiedad.
Returns:
Información asociada a la propiedad, o null si existe un propiedad con ese nombre.
Throws:
NullArgumentException - si name es null.

infoByColumnLabel

public final ADataProperty infoByColumnLabel(String label)
Recupera la información de una propiedad a partir del nombre de su columna en la base de datos.

Parameters:
label - Columna de la base de datos asociada a la propiedad.
Returns:
Información asociada a la propiedad, o null si existe un propiedad con ese nombre de columna.
Throws:
NullPointerException - si label es null.

tupla

public final String tupla()
Devuelve la tupla completa de nombres de columnas de la entidad. Es decir, la cadena "COL_LABEL_1,COL_LABEL_2,...,COL_LABEL_N", donde COL_LABEL_X es cada una de las columnas correspondientes a las propiedades en iProperties.

Returns:
Cadena de texto con la tupla.

subset

public static final List<ADataProperty> subset(Iterable<ADataProperty> columns,
                                               int mask)
Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos.

Parameters:
columns - Vector completo de columnas a filtrar.
mask - Entero con la máscara bits que deben estar puestos a uno.
Returns:
Subconjunto de columns con las propiedades que tienen activada la máscara.
See Also:
ADataProperty.iFlags

subset

public static final List<ADataProperty> subset(Iterable<ADataProperty> columns,
                                               int maskYes,
                                               int maskOff)
Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos y otra máscara con los bits que deben tener a cero.

Parameters:
columns - Vector completo de columnas a filtrar.
maskYes - Entero con la máscara bits que deben estar puestos a uno.
maskOff - Entero con la máscar de bits que deben estar puestos a cero.
Returns:
Colección de propiedades que cumplen las condiciones pedidas.
See Also:
ADataProperty.iFlags

subset

public final List<ADataProperty> subset(int mask)
Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos.

Parameters:
mask - Entero con la máscara bits que deben estar puestos a uno.
Returns:
Subconjunto de columns con las propiedades que tienen activada la máscara.
See Also:
ADataProperty.iFlags

subset

public final List<ADataProperty> subset(int maskYes,
                                        int maskOff)
Devuelve una colección de propiedades filtrando por una máscara de bits que deben tener activos y otra máscara con los bits que deben tener a cero.

Parameters:
maskYes - Entero con la máscara bits que deben estar puestos a uno.
maskOff - Entero con la máscar de bits que deben estar puestos a cero.
Returns:
Colección de propiedades que cumplen las condiciones pedidas.
See Also:
ADataProperty.iFlags

subset

public List<ADataProperty> subset(ResultSet rs)
                           throws SQLException
Devuelve una colección de informaciones de propiedad correspondiente a las columnas de un ResultSet en el objecto de transferencia actual.

Parameters:
rs - Objeto a procesar.
Returns:
Lista de infos. Si alguna columna no tiene correspondencia con el objeto de transferencia, estará puesta a null en los valores devueltos.
Throws:
NullPointerException - si rs es null.
SQLException - si se produce algún error.

getEnumValue

private static final Enum<?> getEnumValue(Class<?> type,
                                          String name)
Devuelve la constante correspondiente a un nombre. Es semejante a Enum.valueOf(Class, String) excepto en que no exige que la clase esté vinculada a un genérico T extends Enum&lt;T&gt;.

Parameters:
type - Clase asociada a la enumeración.
name - Nombre de la constantes que buscamos.
Returns:
Constante pedida.
Throws:
IllegalArgumentException - si type no es una enumeración o si name no se corresponde a ninguna constante.
NullArgumentException - si type o name son null.

getDataItemValue

private static final Object getDataItemValue(ResultSet rs,
                                             int col,
                                             ADataProperty info)
                                      throws SQLException
Crea un nuevo objeto IDataItem y lo inicializa desde la base de datos si el tipo de objeto es Column.loadable(), en otro caso se devuelve un objeto vacío a excepción de su clave primaria.

Parameters:
rs - Valores de una fila recuperada desde una petición SQL.
col - Índice de la columna del ResultSet desde donde recuperar el valor. Si la clave primaria tuviese más columnas, éstas deben continuar en las columnas posteriores
info - Campo que se inicializa desde el ResultSet.
Returns:
Objeto con el ID inicializado, o null si el valor del ID en el ResultSet era null.
Throws:
IllegalClassException - si info no representa un tipo de dato compatible con IDataItem.
SQLException - si se produce un error en el acceso a la base de datos.

getValueFrom

public static final Object getValueFrom(ResultSet rs,
                                        int col,
                                        ADataProperty info)
                                 throws SQLException
Recoge el valor del campo desde la posición indicada de un ResultSet.

Parameters:
info - Campo que se inicializa desde el ResultSet.
rs - Valores de una fila recuperada desde una petición SQL.
col - Índice de la columna del ResultSet desde donde recuperar el valor.
Returns:
Valor de la columna pedida, mapeada conforme el tipo de dato de la propiedad.
Throws:
NullPointerException - si info o rs son null.
SQLException - si se recibe una excepción SQLException.

setFrom

public static final void setFrom(IDataItem<? extends Serializable> data,
                                 ResultSet rs,
                                 Collection<ADataProperty> infos)
                          throws SQLException
Actualiza los valores del objeto con las columnas homónimas del ResultSet.

Parameters:
data - Objeto que se actualiza.
rs - ResultSet desde donde se recogen los valores a poner.
infos - Colección con la información de las propiedades en el mismo orden que vienen en el ResultSet.
Throws:
NullPointerException - si cualquiera de sus argumentos es null.
SQLException - si se produce un error en el acceso a los datos.

setFrom

public void setFrom(T data,
                    ResultSet rs)
             throws SQLException
Actualiza los valores del objeto con las columnas homónimas del ResultSet.

Puede sobrecargar este método si quiere mapear directamente el ResultSet para reducir el tiempo de procesamiento.

Parameters:
data - Objeto que se actualiza.
rs - ResultSet desde donde se recogen los valores a poner.
Throws:
NullPointerException - si cualquiera de sus argumentos es null.
SQLException - si se produce un error en el acceso a los datos.
See Also:
setFrom(IDataItem,ResultSet,Collection), subset(ResultSet)

set

public final void set(T obj,
                      String name,
                      Object value)
Establece el valor de un campo de la clase T.

Parameters:
obj - Objeto cuyo campo se establece.
name - Nombre del campo.
value - Nuevo valor del campo.
Throws:
NullPointerException - si name o obj son null.
UnsupportedOperationException - si no hay ninguna propiedad con el nombre name.
See Also:
ADataProperty.set(Object,Object...)

get

public final Object get(T obj,
                        String name)
Devuelve el valor del campo de un objeto de la clase T.

Parameters:
obj - Objeto cuyo valor de campo se pide.
name - Nombre del campo.
Returns:
Valor del campo.
Throws:
NullPointerException - si name o obj son null.
UnsupportedOperationException - si no hay ninguna propiedad con el nombre name.
See Also:
ADataProperty.get(Object, Object...)

get

public final <S> S get(T obj,
                       String name,
                       Class<S> klass)
Devuelve un campo de objeto con el tipo de objeto definido por la clase S.

Type Parameters:
S - Tipo de objeto que se devuelve.
Parameters:
obj - Objeto cuyo campo se consulta.
name - Nombre del campo que se consulta.
klass - Clase del tipo de objeto que se desea devolver.
Returns:
Valor del objeto dado como tipo S.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo S.

get

protected final <S> S get(T obj,
                          String name,
                          Class<S> wrapper,
                          Class<?> raw)
Devuelve un campo de objeto con el tipo de objeto definido por la clase S, soportando la equivalencia entre clases nativas y envolventes.

Type Parameters:
S - Tipo de objeto que se devuelve.
Parameters:
obj - Objeto cuyo campo se consulta.
name - Nombre del campo que se consulta.
wrapper - Clase del tipo de objeto que se desea devolver. Por ejemplo Integer.class.
raw - Tipo de dato nativo vinculado correspondiente a una clase envolvente. Por ejemplo, int.class.
Returns:
Valor del objeto dado como tipo S.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo S.

getString

public final String getString(T ot,
                              String name)
Devuelve como String la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo String.

getBoolean

public final Boolean getBoolean(T ot,
                                String name)
Devuelve como Boolean la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Boolean.

getInteger

public final Integer getInteger(T ot,
                                String name)
Devuelve como Integer la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Integer.

getLong

public final Long getLong(T ot,
                          String name)
Devuelve como Long la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Long.

getShort

public final Short getShort(T ot,
                            String name)
Devuelve como Short la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Short.

getByte

public final Byte getByte(T ot,
                          String name)
Devuelve como Byte la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Byte.

getCharacter

public final Character getCharacter(T ot,
                                    String name)
Devuelve como Character la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Character.

getFloat

public final Float getFloat(T ot,
                            String name)
Devuelve como Float la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Float.

getDouble

public final Double getDouble(T ot,
                              String name)
Devuelve como Double la propiedad cuyo nombre se indica.

Parameters:
ot - Objeto cuya propiedad se consulta.
name - Nombre de la propiedad que consultamos.
Returns:
Valor de la propiedad.
Throws:
ClassCastException - si el tipo de la propiedad no es asignable al tipo Double.


Copyright © 2024. All rights reserved.