r01f.guids
Class HighLowKey

java.lang.Object
  extended by r01f.guids.HighLowKey
All Implemented Interfaces:
java.io.Serializable

 class HighLowKey
extends java.lang.Object
implements java.io.Serializable

Modela una clave (HIGH o LOW)


Field Summary
private  byte[] _value
           
private static byte MAX_VALUE
           
private static byte MIN_VALUE
           
private static long serialVersionUID
           
 
Constructor Summary
HighLowKey(int newLength)
          ConStruye una clave con el tamaño que se pasa (que equivala a dicho tamaño por 8 en bytes)
HighLowKey(java.lang.String inStr)
          Construye una clave a partir de su representacion en forma de String
 
Method Summary
private static byte[] _fromStringOfHexToByteArray(java.lang.String str)
          Devuelve una representacion en formato array de bytes de una cadena Cada byte se representa en la cadena como dos caracteres debido a la representacion Hexadecimal del byte 0=00 .... 255=FF
private  byte[] _increment(byte[] array)
          Incrementa el valor del array de bytes en uno pero en orden inverso.
private  byte[] _incrementElement(byte[] array, int index)
          Método recursivo para aumentar un array de bytes en uno pero en orden inverso
 void increment()
          Incrementa el valor de la clave en una unidad.
 void setToZero()
          Reinicializa la clave al valor minimo
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

MAX_VALUE

private static byte MAX_VALUE

MIN_VALUE

private static byte MIN_VALUE

_value

private byte[] _value
Constructor Detail

HighLowKey

public HighLowKey(int newLength)
ConStruye una clave con el tamaño que se pasa (que equivala a dicho tamaño por 8 en bytes)


HighLowKey

public HighLowKey(java.lang.String inStr)
Construye una clave a partir de su representacion en forma de String

Parameters:
inStr - la representacion en cadena de la clave
Method Detail

setToZero

public void setToZero()
Reinicializa la clave al valor minimo


increment

public void increment()
               throws HighLowMaxForKeyReachedException
Incrementa el valor de la clave en una unidad.

Throws:
HighLowMaxForKeyReachedException

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

_increment

private byte[] _increment(byte[] array)
                   throws HighLowMaxForKeyReachedException
Incrementa el valor del array de bytes en uno pero en orden inverso. Esto se hace para evitar el efecto HotSpot en los indices debido a que hay muchos valores del indice consecutivos con el mismo principio Lo que se hace es: Si el array de bytes en formato binario tiene la forma: 00000000|00000000.....00000000|00000000 Lo normal a la hora de aumentar en una unidad seria: 00000000|00000000.....00000000|00000001 Sin embargo, lo que se hace es aumentar al reves (primero el entero que esta en primer lugar) 00000000|00000001.....00000000|00000000 De esta forma dos llamadas consecutivas a aumentar la clave, darán como resultado series de numeros muy diferentes.

Throws:
HighLowMaxForKeyReachedException

_incrementElement

private byte[] _incrementElement(byte[] array,
                                 int index)
                          throws HighLowMaxForKeyReachedException
Método recursivo para aumentar un array de bytes en uno pero en orden inverso

Throws:
HighLowMaxForKeyReachedException

_fromStringOfHexToByteArray

private static byte[] _fromStringOfHexToByteArray(java.lang.String str)
Devuelve una representacion en formato array de bytes de una cadena Cada byte se representa en la cadena como dos caracteres debido a la representacion Hexadecimal del byte 0=00 .... 255=FF