de.bsvrz.puk.config.configFile.fileaccess
Class ConfigFileHeaderInfo

java.lang.Object
  extended by de.bsvrz.puk.config.configFile.fileaccess.ConfigFileHeaderInfo
All Implemented Interfaces:
ConfigurationAreaFileInformationReader

public class ConfigFileHeaderInfo
extends Object
implements ConfigurationAreaFileInformationReader

Diese Klasse repräsentiert den Header einer Konfigurationsdatei ("blaue Datei"). Klasse, die noch zu dokumentieren ist.

Author:
Kappich Systemberatung

Field Summary
private  short _activeVersionFile
          aktive Version, die aus der Datei gelesen wurde.
private  File _configAreaFile
          Datei, aus der der Header gelesen wird
private  String _configurationAreaPid
          Pid des Konfigurationsbereichs
private  Map<Short,Long> _configurationAuthorityVersionActivationTime
          synchronisierte Map, die den Aktivierungszeitpunkt jeder Version speichert.
private  long _configurationDataChanged
          letzter Zeitpunkt, an dem ein konfigurierender Datensatz geändert wurde.
private  long _configurationObjectChanged
          letzter Zeitpunkt, an dem ein Konfigurationsobjekt geändert wurde.
private  Debug _debug
           
private  long _dynamicObjectChanged
          letzter Zeitpunkt, an dem ein dynamisches Objekt geändert wurde.
(package private)  long _headerEnd
          Headerende
(package private)  int _headerSize
          Headerlänge.
private  short _nextActiveVersionFile
          nächste aktive Version, die aus der Datei eingelesen wurde.
private  short _nextInvalidBlockVersion
          Speichert die nächste ungültige Version.
private  short _objectVersion
           
private  Map _oldObjectBlocks
          Speichert zu jedem Block, in dem ungültige Objekte gespeichert sind, ein Objekt ab, das die Position des Blocks (relativ zum Headerende) in der Datei enthält und einen Zeitstempel (wann wurde diese Version gültig), der sich auf den Block bezieht.
private  int _serializerVersion
           
private  long _startIdIndex
          relative Position des Index, der die Id´s verwaltet.
private  long _startMixedSet
          Gibt an, wo (relativ zum Header) die Mischobjektmenge beginnt.
private  long _startOldDynamicObjects
          relative Position des Blocks, der alle ungültigen dynamischen Objekte enthält, die nach einer Reorganisation in diesem Block geschrieben wurden.
private  long _startPidHashCodeIndex
          relative Position des Index, der die hashCodes der Pid´s verwaltet verwaltet.
 
Constructor Summary
ConfigFileHeaderInfo(File configAreaFile)
          Legt ein neues Objekt vom Typ ConfigFileHeaderInfo an.
ConfigFileHeaderInfo(int headerSize, short activeVersionFile, short nextActiveVersionFile, File configAreaFile, Map oldObjectBlocks, short nextInvalidBlockVersion, Map<Short,Long> configurationAuthorityVersionActivationTime, long startOldDynamicObjects, long startIdIndex, long startPidHashCodeIndex, long startMixedSet, String configurationAreaPid, long dynamicObjectChanged, long configurationObjectChanged, long configurationDataChanged, Debug debug, int serializerVersion, short objectVersion)
          Konstruktor zu Testzwecken
 
Method Summary
 short getActiveVersionFile()
           
 File getConfigAreaFile()
           
 String getConfigurationAreaPid()
           
 Map<Short,Long> getConfigurationAuthorityVersionActivationTime()
           
 long getConfigurationDataChanged()
           
 long getConfigurationObjectChanged()
           
 long getDynamicObjectChanged()
           
 ConfigFileHeaderInfo getHeader()
           
 long getHeaderEnd()
           
 int getHeaderSize()
           
 short getNextActiveVersionFile()
           
 short getNextInvalidBlockVersion()
           
 SystemObjectInformationInterface getObject(long filePosition)
           
 short getObjectVersion()
          Versionsnummer des Dateiformates.
 Map<Short,ConfigAreaFile.OldBlockInformations> getOldObjectBlocks()
           
 int getSerializerVersion()
           
 long getStartIdIndex()
           
 long getStartMixedSet()
           
 long getStartOldDynamicObjects()
           
 long getStartPidHashCodeIndex()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_headerSize

int _headerSize
Headerlänge. dieser Wert steht vor dem eigentlichen Header


_headerEnd

long _headerEnd
Headerende


_activeVersionFile

private short _activeVersionFile
aktive Version, die aus der Datei gelesen wurde.


_nextActiveVersionFile

private short _nextActiveVersionFile
nächste aktive Version, die aus der Datei eingelesen wurde.


_configAreaFile

private File _configAreaFile
Datei, aus der der Header gelesen wird


_oldObjectBlocks

private Map _oldObjectBlocks
Speichert zu jedem Block, in dem ungültige Objekte gespeichert sind, ein Objekt ab, das die Position des Blocks (relativ zum Headerende) in der Datei enthält und einen Zeitstempel (wann wurde diese Version gültig), der sich auf den Block bezieht. Als Key dient die Versionsnummer. Sind keine Elemente vorhanden, so wurde noch kein Block angelegt. Wenn die Datei neu erzeugt wird, ist dies der Fall. Der erste Block entsteht nach der ersten Reorganisation, nach dem die aktuelle Version erhöht wurde.

WARNUNG: Beim Zugriff mit .get() muss der Key auf short gecastet werden (.get((short) XXX)) !!!

Diese Informationen werden für die Reorganisation gebraucht, bei einem Neustart wird aus diesen Informationen die Map _configurationAuthorityVersionActivationTime rekonstruiert.

Es sind zwei Maps nötig, da die _oldObjectBlocks-Map speichert wie weit die Reorganisation gekommen ist und die Map _configurationAuthorityVersionActivationTime wird im Konstruktor gesetzt und wird dann die nächste gültige Vesion enthalten und ist dadurch um mindestens eine Version größer als jede Version die _oldObjectBlocks speichert.

Findet kein Versionswechsel statt, sind die Version/Zeitstempel Paare in _oldObjectBlocks und _configurationAuthorityVersionActivationTime identisch.


_nextInvalidBlockVersion

private short _nextInvalidBlockVersion
Speichert die nächste ungültige Version. Es ist die größte Version aus _oldObjectBlocks plus 1. Ist noch kein Block vorhanden, so ist die "nächste" ungültige Version, Version 2 (Version 1 ist die erste mögliche gültige Version)


_configurationAuthorityVersionActivationTime

private Map<Short,Long> _configurationAuthorityVersionActivationTime
synchronisierte Map, die den Aktivierungszeitpunkt jeder Version speichert. Als Key dient die Version, als value wird der Zeitpunkt zurückgegbeen, an dem das Konfigurationsverantwortliche die Version aktiviert hat. Siehe auch Kommentar _oldObjectBlocks.

WARNUNG: Beim Zugriff mit .get() muss der Key auf short gecastet werden (.get((short) XXX)) !!!


_startOldDynamicObjects

private long _startOldDynamicObjects
relative Position des Blocks, der alle ungültigen dynamischen Objekte enthält, die nach einer Reorganisation in diesem Block geschrieben wurden.


_startIdIndex

private long _startIdIndex
relative Position des Index, der die Id´s verwaltet.


_startPidHashCodeIndex

private long _startPidHashCodeIndex
relative Position des Index, der die hashCodes der Pid´s verwaltet verwaltet. (-1 bedeutet, dass dieser Wert nicht aus dem Header ausgelesen werden konnte oder beim erzeugen des Headers nicht bekannt war (Datei erzeugen))


_startMixedSet

private long _startMixedSet
Gibt an, wo (relativ zum Header) die Mischobjektmenge beginnt. Dies steht entweder im Header, oder bei einener neuen Datei beginnt dieser Bereich genau hinter dem Header.


_configurationAreaPid

private String _configurationAreaPid
Pid des Konfigurationsbereichs


_dynamicObjectChanged

private long _dynamicObjectChanged
letzter Zeitpunkt, an dem ein dynamisches Objekt geändert wurde. Der Wert -1 zeigt an, dass dieser Wert noch unbekannt ist.


_configurationObjectChanged

private long _configurationObjectChanged
letzter Zeitpunkt, an dem ein Konfigurationsobjekt geändert wurde. Der Wert -1 zeigt an, dass dieser Wert noch unbekannt ist.


_configurationDataChanged

private long _configurationDataChanged
letzter Zeitpunkt, an dem ein konfigurierender Datensatz geändert wurde. Der Wert -1 zeigt an, dass dieser Wert noch unbekannt ist.


_debug

private Debug _debug

_serializerVersion

private int _serializerVersion

_objectVersion

private short _objectVersion
Constructor Detail

ConfigFileHeaderInfo

public ConfigFileHeaderInfo(int headerSize,
                            short activeVersionFile,
                            short nextActiveVersionFile,
                            File configAreaFile,
                            Map oldObjectBlocks,
                            short nextInvalidBlockVersion,
                            Map<Short,Long> configurationAuthorityVersionActivationTime,
                            long startOldDynamicObjects,
                            long startIdIndex,
                            long startPidHashCodeIndex,
                            long startMixedSet,
                            String configurationAreaPid,
                            long dynamicObjectChanged,
                            long configurationObjectChanged,
                            long configurationDataChanged,
                            Debug debug,
                            int serializerVersion,
                            short objectVersion)
Konstruktor zu Testzwecken


ConfigFileHeaderInfo

public ConfigFileHeaderInfo(File configAreaFile)
                     throws IOException
Legt ein neues Objekt vom Typ ConfigFileHeaderInfo an. Aus der Datei, die als Parameter übergeben wird, wird der Header seriell ausgelesen und die entsprechenden Variabelen gespeichert.

Parameters:
configAreaFile - "blaue Datei" aus der der Header gelesen wird.
Throws:
IOException - falls beim Einlesen ein Fehler auftritt.
Method Detail

getHeaderEnd

public long getHeaderEnd()

getActiveVersionFile

public short getActiveVersionFile()

getNextActiveVersionFile

public short getNextActiveVersionFile()

getConfigAreaFile

public File getConfigAreaFile()

getOldObjectBlocks

public Map<Short,ConfigAreaFile.OldBlockInformations> getOldObjectBlocks()

getNextInvalidBlockVersion

public short getNextInvalidBlockVersion()

getConfigurationAuthorityVersionActivationTime

public Map<Short,Long> getConfigurationAuthorityVersionActivationTime()

getStartOldDynamicObjects

public long getStartOldDynamicObjects()

getStartIdIndex

public long getStartIdIndex()

getStartPidHashCodeIndex

public long getStartPidHashCodeIndex()

getStartMixedSet

public long getStartMixedSet()

getConfigurationAreaPid

public String getConfigurationAreaPid()

getDynamicObjectChanged

public long getDynamicObjectChanged()

getConfigurationObjectChanged

public long getConfigurationObjectChanged()

getConfigurationDataChanged

public long getConfigurationDataChanged()

getSerializerVersion

public int getSerializerVersion()

getObjectVersion

public short getObjectVersion()
Versionsnummer des Dateiformates.

Returns:
Versionsnummer des Dateiformates

getObject

public SystemObjectInformationInterface getObject(long filePosition)
Specified by:
getObject in interface ConfigurationAreaFileInformationReader

getHeader

public ConfigFileHeaderInfo getHeader()
Specified by:
getHeader in interface ConfigurationAreaFileInformationReader

getHeaderSize

public int getHeaderSize()