r01f.guids
Class HighLowGUIDDispenser

java.lang.Object
  extended by r01f.guids.HighLowGUIDDispenser
All Implemented Interfaces:
GUIDDispenser

public class HighLowGUIDDispenser
extends java.lang.Object
implements GUIDDispenser

Maneja un GUID en base a un valor HIGH, un valor LOW que se incrementa localmente y un identificador unico de dominio: HIGH + LOW + UniqueID El GUIDDispenser puede utilizarse en los siguientes casos: CASO 1: Los GUIDs generados han de ser unicos SIEMPRE ----------------------------------------------------- En este caso hay que almacenar el valor HIGH en base de datos ya que si se reinicia el dispenser (reinicio de la maquina, etc) el siguiente guid ha de ser unico y para ello el valor de high ha de guardarse... Un ejemplo de este caso son los oid de los objetos que van a utilizarse como clave primaria de las tablas en bd CASO 2: Los UIDs generados han de ser unicos EN LA SESION --------------------------------------------------------- En este caso no importa que si se reinicia el dispense (reinicio de la maquina, etc) se repitan GUIDs. Un ejemplo de este caso son los identificadores de token para las peticiones de paginas html.


Nested Class Summary
(package private) static interface HighLowGUIDDispenser.HighLowGUIDDispenserFactory
           
 
Field Summary
private  HighLowKey _currHighKey
           
private  HighLowKey _currLowKey
           
private  GUIDDispenserDef _dispDef
           
private  HighLowGUIDPersist _guidPersist
           
private  java.util.Map<java.lang.String,HighLowGUIDPersist> _highLowGUIDPersistFactories
          Mapa de factorías de objetos HighLowGUIDPersist que relaciona el ID del HighLowGUIDPersist con su factoría IMPORTANTE!!
 
Constructor Summary
HighLowGUIDDispenser(GUIDDispenserDef dispDef, java.util.Map<java.lang.String,HighLowGUIDPersist> highLowGUIDPersistFactories)
           
 
Method Summary
private  boolean _moveToNextHighKey()
          Incrementa en uno el valor actual de la parte high, y luego a al objeto de persistencia para actualizar el valor almacenado
private static java.lang.String _xPathBase(java.lang.String sequenceName)
           
 java.lang.String generateGUID()
          Obtiene un guid
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_highLowGUIDPersistFactories

private java.util.Map<java.lang.String,HighLowGUIDPersist> _highLowGUIDPersistFactories
Mapa de factorías de objetos HighLowGUIDPersist que relaciona el ID del HighLowGUIDPersist con su factoría IMPORTANTE!! El mapa de factorías se "cablea" en el módulo GUIDDispenserGuiceModule, así que cuando aparece una nueva implementación de un HighLowGUIDPersist, hay que incluirlo en la clase GUIDDispenserGuiceModule


_dispDef

private GUIDDispenserDef _dispDef

_guidPersist

private HighLowGUIDPersist _guidPersist

_currHighKey

private HighLowKey _currHighKey

_currLowKey

private HighLowKey _currLowKey
Constructor Detail

HighLowGUIDDispenser

@Inject
public HighLowGUIDDispenser(GUIDDispenserDef dispDef,
                                   java.util.Map<java.lang.String,HighLowGUIDPersist> highLowGUIDPersistFactories)
Method Detail

_xPathBase

private static java.lang.String _xPathBase(java.lang.String sequenceName)

generateGUID

public java.lang.String generateGUID()
Description copied from interface: GUIDDispenser
Obtiene un guid

Specified by:
generateGUID in interface GUIDDispenser
Returns:
el guid generado o null si NO se puede generar un guid

_moveToNextHighKey

private boolean _moveToNextHighKey()
Incrementa en uno el valor actual de la parte high, y luego a al objeto de persistencia para actualizar el valor almacenado