de.bsvrz.dav.daf.communication.dataRepresentation
Class UndefinedValueHandler

java.lang.Object
  extended by de.bsvrz.dav.daf.communication.dataRepresentation.UndefinedValueHandler

public class UndefinedValueHandler
extends Object

Diese Klasse enthält für jeden Attributtyp den sogenannten "undefiniert Wert" und stellt Methoden zur Verfügung diesen Wert zu setzen oder zu prüfen ob ein Attribut undefiniert ist.

Author:
Kappich Systemberatung

Field Summary
private  Map<IntegerAttributeType,Long> _integerUndefinedValues
          Speichert zu jedem IntegerAttributeType den dazugehörigen undefiniert Wert.
private  Long _marker
          Dieses Objekt wird gespeichert, wenn ein undfined berechnet werden sollte, aber der Wert nicht berechnet werden konnte.
private static UndefinedValueHandler _undefinedValueHandler
           
private static long _undefinedValueReference
          Undfiniert Wert für ReferenceAttributeType
private static String _undefinedValueString
          Undefiniert Wert für StringAttributeType
private static long _undefinedValueTimeAbsolute
          Undefinierter Wert für TimeAttributeType abselute Zeitwerte.
 
Constructor Summary
private UndefinedValueHandler()
          Erzeugt ein neues Objekt ohne Parameter
 
Method Summary
static UndefinedValueHandler getInstance()
          Gibt eine Instanz der Klasse zurück.
 Long getUndefinedValueInteger(IntegerAttributeType integerAttributeType)
          Gibt eine Zahl zurück, die entweder den größten Wert darstellt, der mit den angegebenen Bytes darzustellen ist oder aber die kleinste Zahl.
 String getUndefinedValueString()
          Stellt den String zur Verfügung, der den "undefiniert Wert" eines StringAttributeType darstellt.
 long getUndefinedValueTimeAbselute()
          Gibt den "undefiniert Wert" eines TimeAttribute (abeslute Angaben) zurück.
 boolean isDefinedInteger(IntegerAttributeType attributeType, Data data, Long undefinedValue)
          Prüft ob ein Attribut vom Typ IntegerAttributeType definiert ist und damit verschickt werden kann.
 boolean isDefinedReference(Data data, ReferenceAttributeType referenceAttributeType)
          Prüft ob der Wert eines Attributes vom Typ "ReferenceAttributeType" undefiniert ist und somit nicht verschickt werden kann.
 boolean isDefinedString(Data data)
          Prüft ob das übergebene Attribut einen Wert ungleich dem "undefiniert Wert" besitzt.
 boolean isDefinedTimeAbsolute(Data data)
          Prüft, ob der Wert eines Attributes definiert ist.
 boolean isDefinedTimeRelative(Data data, byte accuracy)
          Prüft, ob eine relative Zeitangabe definiert ist.
 void setToUndefinedInteger(Data data, Long undefinedValue, IntegerAttributeType integerAttributeType)
           
 void setToUndefinedReference(Data data)
          Setzt ein Attribut vom Typ ReferenceAttributeType auf den "undefiniert Wert".
 void setToUndefinedString(Data data)
          Setzt das Attribut auf den sogenannten "undefiniert Wert".
 void setToUndefinedTimeAbsolute(Data data)
          Setzt den Wert des Attributes auf "undefiniert".
 void setToUndefinedTimeRelative(Data data, byte accuracy)
          Setzt den "undefiniert Wert" bei einem Attribut vom Typ TimeAttributeType (relative Zeitangabe).
private  void writeValue(Data data, String value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_undefinedValueHandler

private static final UndefinedValueHandler _undefinedValueHandler

_undefinedValueString

private static final String _undefinedValueString
Undefiniert Wert für StringAttributeType

See Also:
Constant Field Values

_undefinedValueReference

private static final long _undefinedValueReference
Undfiniert Wert für ReferenceAttributeType

See Also:
Constant Field Values

_undefinedValueTimeAbsolute

private static final long _undefinedValueTimeAbsolute
Undefinierter Wert für TimeAttributeType abselute Zeitwerte.

See Also:
Constant Field Values

_marker

private final Long _marker
Dieses Objekt wird gespeichert, wenn ein undfined berechnet werden sollte, aber der Wert nicht berechnet werden konnte. Damit bei einem weiteren Durchlauf nicht erneut versucht den Wert zu berechnen, wird dieses Objekt gespeichert.


_integerUndefinedValues

private final Map<IntegerAttributeType,Long> _integerUndefinedValues
Speichert zu jedem IntegerAttributeType den dazugehörigen undefiniert Wert. So muss dieser nicht ständig neu berechnet werden.

Constructor Detail

UndefinedValueHandler

private UndefinedValueHandler()
Erzeugt ein neues Objekt ohne Parameter

Method Detail

getInstance

public static final UndefinedValueHandler getInstance()
Gibt eine Instanz der Klasse zurück. Es existiert nur eine Instanz der Klasse, ein erneuter Aufruf stellt das selbe Objekt zur Verfügung.

Returns:
Instanz der Klasse (Singleton)

writeValue

private void writeValue(Data data,
                        String value)
Parameters:
data - Attributwerte
value - Werte

setToUndefinedString

public void setToUndefinedString(Data data)
Setzt das Attribut auf den sogenannten "undefiniert Wert".

Parameters:
data - Attribut, dessen Wert gesetzt werden soll
Throws:
IllegalArgumentException - Der Attributtyp ist nicht StringAttributeType

isDefinedString

public boolean isDefinedString(Data data)
Prüft ob das übergebene Attribut einen Wert ungleich dem "undefiniert Wert" besitzt.

Parameters:
data - Attribut
Returns:
true = Der Wert des Attributes ist ungelich dem "undefiniert Wert"; false = sonst
Throws:
IllegalArgumentException - Der Attributtyp ist nicht StringAttributeType

getUndefinedValueString

public String getUndefinedValueString()
Stellt den String zur Verfügung, der den "undefiniert Wert" eines StringAttributeType darstellt.

Returns:
s.o.

setToUndefinedReference

public void setToUndefinedReference(Data data)
Setzt ein Attribut vom Typ ReferenceAttributeType auf den "undefiniert Wert".

Parameters:
data - Attribut, dessen Wert auf "undefiniert" gesetzt werden soll

isDefinedReference

public boolean isDefinedReference(Data data,
                                  ReferenceAttributeType referenceAttributeType)
Prüft ob der Wert eines Attributes vom Typ "ReferenceAttributeType" undefiniert ist und somit nicht verschickt werden kann.

Parameters:
data - Attribut, dessen Wert geprüft werden soll
referenceAttributeType - Bestimmt, ob die Referenz "0" als undefiniert Wert gilt, oder als normale Referenz
Returns:
true = Das Attribut ist definiert und kann verschickt werden; false = Der Wert des Attributes ist gleich dem "undefiniert Wert" und kann somit nicht verschickt werden

getUndefinedValueInteger

public Long getUndefinedValueInteger(IntegerAttributeType integerAttributeType)
Gibt eine Zahl zurück, die entweder den größten Wert darstellt, der mit den angegebenen Bytes darzustellen ist oder aber die kleinste Zahl. Die Zahl ist entweder größer als requiredMaxValue oder kleiner als requiredMinValue.

Parameters:
integerAttributeType - Enthält den ByteCount, die States und die Min/Max
Returns:
Zahl die größer als requiredMaxValue ist oder aber kleiner als requiredMinValue. Kann diese Zahl nicht gefunden werden, wird null zurückgegeben.

setToUndefinedInteger

public void setToUndefinedInteger(Data data,
                                  Long undefinedValue,
                                  IntegerAttributeType integerAttributeType)
Parameters:
data - Attribut, in das der "undefiniert Wert" eingetragen wird
undefinedValue - Undefiniert Wert des Attributtyps. null wird als "es gibt keinen undefiniert Wert" interpretiert.
integerAttributeType - Dient nur dazu, um bei einem Fehler die Pid des fehlehaften Typs anzugeben
Throws:
IllegalStateException - Es kann kein "undefiniert Wert" ermittelt werden, da alle Byte-Kombinationen gebraucht werden um die angegebenen Werte darzustellen. Dieser Fall darf eigentlich nicht auftreten, da in diesen Fällen ein default-Wert definiert sein muss.

isDefinedInteger

public boolean isDefinedInteger(IntegerAttributeType attributeType,
                                Data data,
                                Long undefinedValue)
Prüft ob ein Attribut vom Typ IntegerAttributeType definiert ist und damit verschickt werden kann.

Parameters:
attributeType - Ganzzahl-Attributtyp
data - Attribut, dessen Wert geprüft werden soll
undefinedValue - enthält den undefiniert Wert des Attributtyps. Wird null übergeben, so wird dies als "kein undefiniert festgelegt" interpretiert.
Returns:
true = Das Attribut ist definiert und kann verschickt werden; false = Der Wert des Attributes ist gleich dem "undefiniert Wert" und darf somit nicht verschickt werden

setToUndefinedTimeAbsolute

public void setToUndefinedTimeAbsolute(Data data)
Setzt den Wert des Attributes auf "undefiniert". Dieser Wert entspricht bei abseluten Zeiten 0.

Parameters:
data - Attribute, das auf den undefinierten Wert gesetzt werden soll

isDefinedTimeAbsolute

public boolean isDefinedTimeAbsolute(Data data)
Prüft, ob der Wert eines Attributes definiert ist. Der Attributwert wird als abselute Zeitangabe interpretiert.

Parameters:
data - Attribute
Returns:
true = Der Wert ist definiert; false = Der Wert ist nicht definiert

getUndefinedValueTimeAbselute

public long getUndefinedValueTimeAbselute()
Gibt den "undefiniert Wert" eines TimeAttribute (abeslute Angaben) zurück.

Returns:
Undefiniert Wert für eine abselute Zeitangabe

setToUndefinedTimeRelative

public void setToUndefinedTimeRelative(Data data,
                                       byte accuracy)
Setzt den "undefiniert Wert" bei einem Attribut vom Typ TimeAttributeType (relative Zeitangabe). Der "undefiniert Wert" ist abhängig der gewünschten Genauigkeit. Bei Millisekunden wird Long.MIN_VALUE benutzt, bei Sekunden Integer.MIN_VALUE.

Parameters:
data - Attribut
accuracy - Sekunden oder Millisekunden TimeAttributeType

isDefinedTimeRelative

public boolean isDefinedTimeRelative(Data data,
                                     byte accuracy)
Prüft, ob eine relative Zeitangabe definiert ist.

Parameters:
data - Attribut vom Typ TimeAttributeType
accuracy - Sekunden oder Millisekunden TimeAttributeType
Returns:
true = Das Attribut ist definiert und kann verschickt werden; false = Das Attribut hat als Wert den "undefiniert Wert" und kann nicht verschickt werden