|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.puk.config.configFile.fileaccess.ConfigAreaFile
public class ConfigAreaFile
Diese Klasse stellt eine Konfigurationsbereichsdatei dar und speichert alle Objekte des Bereichs mit Historie.
Nested Class Summary | |
---|---|
private class |
ConfigAreaFile.FileIterator
Diese Klasse stellt einen Iterator zur Verfügung, der alle Objekte eines Konfigurationsbereichs zur Verfügung stellt. |
static class |
ConfigAreaFile.OldBlockInformations
Diese Klasse speichert die Dateiposition eines Blocks, der Konfigurationsobjekte enthält, die ungültig sind und durch eine Reorganisation verschoben wurden und sich nicht mehr in der Mischobjektmenge befinden. |
(package private) static class |
ConfigAreaFile.OldObject
Ein Objekt, das als "ungültig" markiert ist enthält den HashCode der Pid und die Id des Objekts. |
private class |
ConfigAreaFile.OldObjectIdReference
Diese Klasse stellt ein Objekt dar, das ungültig ist und eine Methode um dieses Objekte anzufordern. |
private static class |
ConfigAreaFile.OldObjectTypeIdInfo
Diese Klasse speichert alle Inforamtionen, die benötigt werden um ein Objekt, das sich in der Mischmenge befindet aber nicht komplett in den Speicher geladen wurde, eventuell nachzuladen falls es gebraucht wird. |
private static class |
ConfigAreaFile.SortObject
Diese Klasse wird mehrfach mit unterschiedlichen Aufgaben benutzt. |
private static class |
ConfigAreaFile.SortObjectPid
|
Field Summary | |
---|---|
private short |
_activeVersion
aktive Version, diese wird durch einen Neustart der Konfiguration gesetzt (durch den Konstruktor) |
private short |
_activeVersionFile
aktive Version, die aus der Datei gelesen wurde. |
private Map<Long,SystemObjectInformationInterface> |
_actualObjects
Speichert alle (dynamisch und Konf.) aktuellen Objekte, als Schlüssel dient die Id. |
private Map<Long,List<SystemObjectInformationInterface>> |
_actualObjectsTypeId
Speichert zu allen TypeId´s die aktuellen Objekte. |
private FileLock |
_areaFileLock
Mit diesem Objekt wird ein mehrfacher Zugriff auf diese Datei verhindert. |
private File |
_configAreaFile
Wo befindet sich die Datei |
private ConfigurationObjectInfo |
_configAreaObject
Stellt das Objekt dar, das den Konfigurationsbereich repräsentiert. |
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 static Debug |
_debug
DebugLogger für Debug-Ausgaben |
private long |
_dynamicObjectChanged
letzter Zeitpunkt, an dem ein dynamisches Objekt geändert wurde. |
private ConfigFileManager |
_fileManager
Alle Änderungen an einem dynamischen Objekt oder an einem Konfigurationsobjekt, die den Zustand von "gültig" auf "ungültig" setzen oder ein Objekt hinzufügen müssen an dieses Objekt gemeldet werden |
private long[] |
_globalActivationTimes
Array mit den globalen Aktivierungszeiten der Versionen dieses Bereichs. |
private long |
_greatestId
Speichert die größte Id, die im Konfigurationsbereich vergeben wurde. |
private long |
_headerEnd
Speichert, wo der Header endet. |
private long[] |
_localActivationTimes
Array mit den lokalen Aktivierungszeiten der Versionen dieses Bereichs. |
private Map<Short,Long> |
_localVersionActivationTime
Synchronisierte Map, die zu jeder Version den lokalen Aktivierungszeitpunkt speichert. |
private Set<SystemObjectInformationInterface> |
_modifiedObjects
In dieser Menge werden alle dynamischen Objekte und Konfigurationsobjekte gespeichert, die modifiziert wurden und die aus diesem Grund noch in der Datei zu speichern sind. |
private Map<Long,SystemObjectInformationInterface> |
_newObjects
Speichert alle Objekte, die in Zukunft aktuell werden, als Schlüssel dient die Id. |
private short |
_nextActiveVersion
Speichert die Version, die als nächstes gültig wird. |
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
Mit welcher Version wurden die Objekte geschrieben. |
private Map<Short,ConfigAreaFile.OldBlockInformations> |
_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 Map<Long,ConfigAreaFile.OldObjectIdReference> |
_oldObjectsId
Speichert alle ungültig markierte Objekte, die sich in der Mischmenge befinden. |
private Map<Integer,Set<Long>> |
_oldObjectsPid
Speichert zu einer Pid (Key = HashCode Integer), alle Dateipositionen der alten Objekte, die sich in der Mischmenge befinden. |
private Map<Long,List<ConfigAreaFile.OldObjectTypeIdInfo>> |
_oldObjectsTypeId
Speichert zu allen TypeId´s die alten Objekte. |
private Object |
_restructureLock
Wird angefordert, wenn die Reorganisation der Datei statt findet. |
private int |
_serializerVersion
Mit dieser Version werden alle Daten in der Daten serialisiert. |
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. |
private short |
ACTUAL_OBJECT_VERSION
Legt die aktuelle Version fest, mit der Objekte codiert werden |
Constructor Summary | |
---|---|
ConfigAreaFile(File configAreaFile,
short activeVersion,
ConfigFileManager configFileManager,
List<VersionInfo> localActivatedVersionTimes)
Dieser Konstruktor wird benutzt, wenn eine Datei für einen Konfigurationsbereich bereits existiert. |
|
ConfigAreaFile(File configAreaFile,
String pid,
short activeVersion,
int serializerVersion,
ConfigFileManager configFileManager)
Erzeugt eine Datei, die einen Konfigurationsbereich abbildet. |
Method Summary | |
---|---|
private List<SystemObjectInformationInterface> |
binarySearch(long value,
boolean searchId)
Diese Methode sucht zu einem Value alle Objekte, die als ungültig markiert sind. |
void |
close()
Diese Methode wird aufgerufen, wenn das System heruntergefahren soll. |
ConfigurationObjectInfo |
createConfigurationObject(long objectID,
long typeID,
String pid,
String name)
Diese Methode erzeugt ein Konfigurationsobjekt. |
DynamicObjectInfo |
createDynamicObject(long objectID,
long typeID,
String pid,
short simulationVariant,
String name,
DynamicObjectType.PersistenceMode persistenceMode)
Diese Methode erzeugt ein dynamisches Objekt, das sofort gültig ist. |
(package private) void |
declareObjectAsAGap(long filePosition)
|
private void |
declareObjectAsAGap(long filePosition,
RandomAccessFile file)
Setzt die Id eines Objekts auf 0 und erklärt es somit als Lücke. |
(package private) void |
dontSaveObject(SystemObjectInformationInterface object)
Diese Methode entfernt ein Objekt aus Menge zu speichernden Objekte |
void |
flush()
Diese Methode wird aufgerufen, wenn alle modifizierten Objekte des Konfigurationsbereichs persistent gespeichert werden sollen. |
private long |
getAbsoluteFilePositionForInvalidObjects(long relativeFilePosition)
Diese Methode berechnet die absolute Position eines Objekts in der Konfigurationsbereichsdatei. |
private long |
getActivationTime(int version,
long[] activationTimes)
Bestimmt den Aktivierungszeitpunkt einer vorgegebenen Version. |
private long[] |
getActivationTimeArray(Map<Short,Long> activationTimeMap)
Erzeugt ein Array mit den Aktivierungszeiten der Versionen dieses Bereichs. |
(package private) short |
getActiveVersion()
|
short |
getActiveVersion(long startTime,
ConfigurationAreaTime kindOfTime)
Gibt zu einem Zeitpunkt die Version zurück, die aktiv war. |
SystemObjectInformationInterface[] |
getActualObjects(long typeId)
Gibt alle aktuellen Objekte zurück, die als TypeId die übergebene TypeId besitzen. |
String |
getConfigAreaPid()
Gibt die Pid des Konfigurationsbereichs zurück. |
ConfigurationObjectInfo |
getConfigurationAreaInfo()
Methode, die das Objekt, das den Konfigurationsbereich darstellt, zurück gibt. |
SystemObjectInformationInterface[] |
getCurrentObjects()
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die in der aktuellen Version aktuell sind. |
long |
getGreatestId()
Diese Methode gibt die größte vergebene laufende Nummer einer Id des Konfigurationsbereichs zurück. |
Collection |
getMixedObjectSetObjects()
Lädt alle "aktuellen" und in "Zukunft aktuellen" Objekte. |
SystemObjectInformationInterface[] |
getNewObjects()
Diese Methode gibt alle Konfigurationsobjekte zurück, die in einer zukünftigen Version aktuell werden. |
short |
getNextActiveVersion()
Liefert die Version, ab der neu erstellte Konfigurationsobjekte gültig werden. |
SystemObjectInformationInterface[] |
getObjects(long startTime,
long endTime,
ConfigurationAreaTime kindOfTime,
TimeSpecificationType timeSpecificationType,
Collection<Long> typeIds)
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die innerhalb des angegebenen Zeitbereichs gültig waren und deren TypeId gleich einer der übergebenen TypeId´s ist. |
SystemObjectInformationInterface[] |
getObjects(String pid,
long startTime,
long endTime,
ConfigurationAreaTime kindOfTime)
Diese Methode gibt Objekte zurück, die in dem angegebenen Zeibereich gültig waren. |
SystemObjectInformationInterface |
getOldObject(long id)
Diese Methode gibt ein Objekt zurück, das als ungültig markiert wurde. |
private long |
getRunningNumber(long wholeNumber)
Maskiert die ersten 40 Bits einer Id |
int |
getSerializerVersion()
Alle Daten, die als Byte-Array gespeichert werden müssen, werden mit einem Serializer Serializer erstellt. |
boolean |
initialVersionRestructure()
Diese Methode wird aufgerufen, wenn der Konfigurationsverantwortliche eine neue Version aktiviert. |
private boolean |
isValueAtTheMiddle(long start,
long middle,
long end)
Diese Methode prüft ob folgende Gleichung wahr ist: start <= middle <= end |
Iterator<SystemObjectInformationInterface> |
iterator()
Stellt alle dynamischen Objekte und Konfigurationsobjekte zur Verfügung. |
(package private) SystemObjectInformation |
loadObjectFromFile(long filePosition)
Lädt ein Objekt aus einer Datei |
private SystemObjectInformation |
loadObjectFromFile(long filePosition,
ConfigAreaFile.FileIterator fileIterator)
Lädt ein Objekt aus einer Datei und setzt im Objekt fileIterator die Position, an der das nächste Objekt gefunden werden kann (relative Position bezogen auf den Header). |
(package private) void |
objectModified(SystemObjectInformationInterface modifiedObject)
Diese Methode wird von einem Objekt aufgerufen, wenn Informationen des Objekts geändert wurden. |
(package private) boolean |
objectValid(Object objectInfo,
long queryIntervalStart,
long queryIntervalEnd,
ConfigurationAreaTime kindOfTime,
TimeSpecificationType timeSpecificationType)
Diese Methode prüft, ob ein Objekte im angegebenen Zeitraum gültig war/ist. |
(package private) void |
printIdIndex()
Gibt die Indizes am Bildschirm aus, diese Methode ist nur für Debug-Zwecke geeignet. |
private void |
putActualObject(SystemObjectInformationInterface actualObjekt)
Fügt das Objekt zu allen Datenstrukturen hinzu, die für den schnellen Zugriff(mit Id) auf aktuelle Objekte benötigt werden |
private void |
putActualObjectTypeId(SystemObjectInformationInterface actualObject)
Speichert ein Objekt in der Map, die alle aktuellen Objekte nach deren TypeId verwaltet |
private void |
putNewObject(SystemObjectInformationInterface newObjekt)
Fügt das Objekt zu allen Datenstrukturen hinzu, die für den schnellen Zugriff auf "in Zukunft gültige" Objekte benötigt werden |
private void |
putOldObject(ConfigAreaFile.OldObject oldObject)
Fügt ein als "ungültig" markiertes Objekt in alle interenen Datenstrukturen hinzu, die für einen schnellen Zugriff auf ungültige Objekte benötigt werden. |
private void |
putOldObjectTypeId(long typeId,
long firstValid,
long firstInvalid,
boolean configurationObject,
ConfigAreaFile.OldObjectIdReference oldObjectIdReference)
Speichert alle benötigten Ladeinforamtionen zu einem Objekt in der Map, die alle alten Objekte verwaltet. |
private void |
putUnknownObject(SystemObjectInformationInterface unknownObject)
Legt ein dynamisches Objekt oder ein Konfigurationsobjekt in die entsprechende Datenstruktur für aktuelle oder in Zukunft gültige Objekte ab. |
private SystemObjectInformation |
readObjectFromFile(long filePosition,
int objectsize,
long id,
long typeId,
long firstInvalid,
long firstValid,
byte objecttype,
RandomAccessFile file)
Lädt ein dynamischen Objekt oder ein Konfigurationsobjekt aus der Datei des Konfigurationsbereichs. |
(package private) void |
removeDynamicSimulationObject(DynamicObjectInformation dynamicObjectInfo)
Entfernt ein dynamisches Objekt aus alle Datenstrukturen(auch ConfigFileManager). |
(package private) void |
removeNewObject(ConfigurationObjectInfo newObject)
Diese Methode entfernt ein Objekt, das in zukünftigen Versionen gültig werden soll aus allen Datenstrukturen (auch dem ConfigFileManager), die den schnellen Zugriff auf diese Art von Objekten ermöglichen. |
boolean |
restructure()
Diese Methode reorganisiert eine Konfigurationsbereichsdatei. |
(package private) void |
setDynamicObjectInvalid(DynamicObjectInformation invalidObject)
Diese Methode wird aufgerufen, wenn ein dynamisches Objekt auf "ungültig" gesetzt wird. |
void |
setNextActiveVersion(short nextActiveVersion)
Legt die Version fest mit der Konfigurationsobjekte, die mit ConfigurationAreaFile.createConfigurationObject(long, long, java.lang.String, java.lang.String) erzeugt werden, gültig werden. |
private byte[] |
unzip(byte[] zippedData)
|
private long |
writeConfigurationObjectToFile(ConfigurationObjectInformation configurationObject,
RandomAccessFile file,
boolean declareGap,
boolean setNewFilePosition)
Speichert ein Objekt ans Ende der übergebenen Datei. |
(package private) void |
writeDynamicObject(DynamicObjectInformation object)
Speicher ein dynamisches Objekt in die Datei des Konfigurationsbereichs. |
private long |
writeDynamicObjectToFile(DynamicObjectInformation dynamicObject,
RandomAccessFile file,
boolean declareGap,
boolean setNewFilePosition)
Speichert ein Objekt ans Ende der übergebenen Datei. |
private void |
writeHeader(RandomAccessFile file)
Schreibt einen Header in die übergebene Datei. |
private void |
writeSystemObjectWithoutIdAndTypeId(SystemObjectInformationInterface object,
Serializer serializer)
Speichert die Pid, den Namen des SystemObjects und alle konfigurierenden Datensätze . |
private byte[] |
zip(byte[] data)
Packt ein Byte-Array mit dem Packer "ZIP" und gibt die Daten gepackt zurück |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final Debug _debug
private final File _configAreaFile
private final short _activeVersion
private short _activeVersionFile
private short _nextActiveVersion
private short _nextActiveVersionFile
private int _serializerVersion
private long _headerEnd
private final Map<Short,ConfigAreaFile.OldBlockInformations> _oldObjectBlocks
private final Map<Short,Long> _configurationAuthorityVersionActivationTime
private long[] _globalActivationTimes
private short _nextInvalidBlockVersion
private long _startOldDynamicObjects
private long _startIdIndex
private long _startPidHashCodeIndex
private long _startMixedSet
private short _objectVersion
private final short ACTUAL_OBJECT_VERSION
private String _configurationAreaPid
private long _dynamicObjectChanged
private long _configurationObjectChanged
private long _configurationDataChanged
private final Set<SystemObjectInformationInterface> _modifiedObjects
objectModified(de.bsvrz.puk.config.configFile.fileaccess.SystemObjectInformationInterface)
in die Liste ein.
private final Map<Long,SystemObjectInformationInterface> _actualObjects
private final Map<Long,SystemObjectInformationInterface> _newObjects
private final Map<Long,ConfigAreaFile.OldObjectIdReference> _oldObjectsId
private final Map<Integer,Set<Long>> _oldObjectsPid
private final ConfigFileManager _fileManager
private final Object _restructureLock
private ConfigurationObjectInfo _configAreaObject
createConfigurationObject(long, long, java.lang.String, java.lang.String)
erzeugt, auch in
diesem Fall wird das Objekt über die Pid identifiziert.
private final Map<Short,Long> _localVersionActivationTime
private long[] _localActivationTimes
private long _greatestId
private final Map<Long,List<SystemObjectInformationInterface>> _actualObjectsTypeId
private final Map<Long,List<ConfigAreaFile.OldObjectTypeIdInfo>> _oldObjectsTypeId
private final FileLock _areaFileLock
Constructor Detail |
---|
public ConfigAreaFile(File configAreaFile, short activeVersion, ConfigFileManager configFileManager, List<VersionInfo> localActivatedVersionTimes) throws IOException
configAreaFile
- Datei, in der der Konfigurationsberich gespeichert istactiveVersion
- aktive Version mit der der Konfigurationsbereich gestartet wirdconfigFileManager
- Objekt, das alle Konfigurationsbereiche verwaltetlocalActivatedVersionTimes
- Liste, die zu jeder Version, die lokal aktiviert wurde, den Zeitpunkt enthält, wann die Version aktiviert wurde
IOException
public ConfigAreaFile(File configAreaFile, String pid, short activeVersion, int serializerVersion, ConfigFileManager configFileManager) throws IOException
configAreaFile
- Datei, in der die Objekte gespeichert werdenpid
- Pid des KonfigurationsbereichsactiveVersion
- aktuelle VersionserializerVersion
- Version, mit der alle Daten in der Datei serialisiert werden müssen. Alle Daten, dieconfigFileManager
-
IOException
Method Detail |
---|
private long[] getActivationTimeArray(Map<Short,Long> activationTimeMap)
activationTimeMap
- Map mit der globalen oder lokalen Zuordnung von aktivierten Versionen zum jeweiligen Zeitpunkt
private long getActivationTime(int version, long[] activationTimes)
version
- Version deren Aktivierungszeitpunkt bestimmt werden soll.activationTimes
- Array mit den globalen bzw. lokalen Aktivierungszeitpunkten
public void setNextActiveVersion(short nextActiveVersion)
ConfigurationAreaFile
ConfigurationAreaFile.createConfigurationObject(long, long, java.lang.String, java.lang.String)
erzeugt werden, gültig werden.
setNextActiveVersion
in interface ConfigurationAreaFile
nextActiveVersion
- Version, mit der Konfigurationsobjekte gültig werden. Die erste Version, mit der ein Objekt gültig sein kann, ist die 1. Die
Versionen sind positive Ganzzahlen, die fortlaufend nummeriert sind.public short getNextActiveVersion()
ConfigurationAreaFile
getNextActiveVersion
in interface ConfigurationAreaFile
public ConfigurationObjectInfo getConfigurationAreaInfo()
getConfigurationAreaInfo
in interface ConfigurationAreaFile
null
, wenn der Bereich gerade erzeugt wurde.public void flush() throws IOException
ConfigurationAreaFile
flush
in interface ConfigurationAreaFile
IOException
- Fehler beim Zugriff auf die Datei in der der Konfigurationsbereich gespeichert istpublic void close() throws IOException
ConfigurationAreaFile
ConfigurationAreaFile.flush()
und ein Zustand
hergestellt werden, mit dem das System zu einem späteren Zeitpunkt wieder hochgefahren werden kann.
close
in interface ConfigurationAreaFile
IOException
- Fehler beim Zugriff auf die Datei in der der Konfigurationsbereich gespeichert istvoid writeDynamicObject(DynamicObjectInformation object)
object
- zu speicherndes Objektspublic DynamicObjectInfo createDynamicObject(long objectID, long typeID, String pid, short simulationVariant, String name, DynamicObjectType.PersistenceMode persistenceMode)
ConfigurationAreaFile
createDynamicObject
in interface ConfigurationAreaFile
objectID
- ID des ObjektstypeID
- Typ des Objekts, der Typ wird über die ID festgelegtpid
- Pid des ObjektssimulationVariant
- Simulationsvariante unter der das dynamische Objekt gültig istname
- Name des Objekts, null
wird als "" interpretiertpersistenceMode
- Soll das dynamische Objekte persistent gespeichert werden
ConfigurationAreaFile.getGreatestId()
public ConfigurationObjectInfo createConfigurationObject(long objectID, long typeID, String pid, String name)
ConfigurationAreaFile
createConfigurationObject
in interface ConfigurationAreaFile
objectID
- ID des ObjektstypeID
- Typ des Objekts, der Typ wird über die ID festgelegtpid
- Pid des Objektsname
- Name des Objekts, null
wird als "" interpretiert
ConfigurationAreaFile.getGreatestId()
private long getRunningNumber(long wholeNumber)
wholeNumber
- Id, die maksiert werden soll
public SystemObjectInformationInterface[] getCurrentObjects()
ConfigurationAreaFile
getCurrentObjects
in interface ConfigurationAreaFile
public SystemObjectInformationInterface[] getActualObjects(long typeId)
ConfigurationAreaFile
getActualObjects
in interface ConfigurationAreaFile
typeId
- TypeId, die ein Objekt besitzen muss, damit es zurückgegeben wird
public SystemObjectInformationInterface[] getObjects(long startTime, long endTime, ConfigurationAreaTime kindOfTime, TimeSpecificationType timeSpecificationType, Collection<Long> typeIds)
ConfigurationAreaFile
timeSpecificationType
bestimmt, wann/wie lange ein Objekt gültig gewesen sein muss um
in die Lösung aufgenommen zu werden.
getObjects
in interface ConfigurationAreaFile
startTime
- Zeitpunkt, ab der ein Objekt gültig sein muss, um zurückgegeben zu werdenendTime
- Zeitpunkt, bis zu der Objekte zurückgegeben werdenkindOfTime
- Ein Konfigurationsobjekt wird mit der Aktivierung einer Version gültig. Da der Konfigurationsverantwortliche die Version zu
einem früheren Zeitpunkt aktiviert haben kann, als die lokale Konfiguration, legt dieser Parameter fest, welcher Zeitpunkt für
ein Konfigurationsobjekt benutzt werden soll an dem es als "gültig" markiert wurde.timeSpecificationType
- Gibt die Art und Weise an, wie der Zeitraum zu betrachten ist.typeIds
- Liste von TypeId´s. Damit ein Objekt zurückgegeben wird, muss die TypeId des Objekts mit einer TypeId in der Liste
übereinstimmen
private boolean isValueAtTheMiddle(long start, long middle, long end)
public short getActiveVersion(long startTime, ConfigurationAreaTime kindOfTime)
startTime
- Zeitpunkt, zu dem die Version aktiv gewesen sein musskindOfTime
- Soll die Aktivierungszeit des Konfigurationsverantwortlichen oder die lokale Aktivierung zur Berechnung der Version benutzt werden
public SystemObjectInformationInterface[] getNewObjects()
ConfigurationAreaFile
getNewObjects
in interface ConfigurationAreaFile
public Iterator<SystemObjectInformationInterface> iterator()
ConfigurationAreaFile
iterator
in interface ConfigurationAreaFile
private void writeHeader(RandomAccessFile file) throws IOException
file
-
IOException
public Collection getMixedObjectSetObjects() throws IOException, NoSuchVersionException
IOException
NoSuchVersionException
private void putUnknownObject(SystemObjectInformationInterface unknownObject)
unknownObject
- Objekt, das eingetragen werden sollprivate void putOldObject(ConfigAreaFile.OldObject oldObject)
oldObject
- Objekt, das Id, PidHashCode und die Dateipostion enthält. Das configAreaFileObjekt wird nicht benötigt.private void putNewObject(SystemObjectInformationInterface newObjekt)
newObjekt
- Objekt, das in die Datenstruktur aufgenommen werden sollvoid removeNewObject(ConfigurationObjectInfo newObject)
newObject
- Objekt, das aus allen Datenstrukturen entfernt werden soll.void removeDynamicSimulationObject(DynamicObjectInformation dynamicObjectInfo)
dynamicObjectInfo
- Objekt, das entfernt werden sollprivate void putActualObject(SystemObjectInformationInterface actualObjekt)
actualObjekt
- public SystemObjectInformationInterface getOldObject(long id)
ConfigurationAreaFile
null
zurückgegeben.
getOldObject
in interface ConfigurationAreaFile
id
- Id des geforderten Objekts
null
private void putOldObjectTypeId(long typeId, long firstValid, long firstInvalid, boolean configurationObject, ConfigAreaFile.OldObjectIdReference oldObjectIdReference)
typeId
- TypeId des Objekt, das nicht vollständig geladen wurdefirstValid
- Zeitpunkt oder Version mit der das Objekt gültig wurdefirstInvalid
- Zeitpunkt oder Version mit der das Objekt ungültig wurdeconfigurationObject
- true = Es handelt sich um ein Konfigurationsobjekt (firstValid wird als Version interpretiert); false = Es handelt sich um ein
dynamisches Objekt (firstValid wird als Zeitpunkt interpertiert)oldObjectIdReference
- Objekt zum anfordert des Objekts (Datei oder Speicher)private void putActualObjectTypeId(SystemObjectInformationInterface actualObject)
actualObject
- Objekt, das in die Map aufgenommen werden sollpublic SystemObjectInformationInterface[] getObjects(String pid, long startTime, long endTime, ConfigurationAreaTime kindOfTime)
ConfigurationAreaFile
getObjects
in interface ConfigurationAreaFile
pid
- Pid, über die die Objekte identifiziert werdenstartTime
- Zeitpunkt, ab dem ein Objekt mit der angegebenen Pid gültig gewesen sein muss um zurückgegeben zu werden. War das Objekt vor dem
angegebenen Zeitraum bereits gültig, so wird es ebenfalls zurückgegeben.endTime
- Zeitpunkt, bis zu dem ein Objekt mit der angegebenen Pid gültig gewesen sein muss um zurückgegeben zu werden. Ist das Objekt über diesen
Zeitraum hinweg gültig, so wird es ebenfalls zurückgegeben. Der Zeitpunkt darf nicht in der Zukunft liegen, der größt mögliche Zeitpunkt
ist die aktuelle Zeit.kindOfTime
- Legt fest, welcher Zeitpunkt bei einer aktivierten Version benutzt wird. Der Zeitpunkt der lokalen Aktivierung einer Version oder aber der
Zeitpunkt der Aktivierung durch den Konfigurationsverantwortlichen.
boolean objectValid(Object objectInfo, long queryIntervalStart, long queryIntervalEnd, ConfigurationAreaTime kindOfTime, TimeSpecificationType timeSpecificationType)
objectInfo
- Objekt, das geprüft werden sollqueryIntervalStart
- Startzeitpunkt ab dem ein Objekte gültig sein mussqueryIntervalEnd
- Endzeitpunkt, bis zu dem ein Objekt gültig geworden sein musskindOfTime
- Zeit des Konfigurationsverantwortlichen oder die lokale Zeit zu der eine Version gültig geworden isttimeSpecificationType
- Gibt an, ab wann ein Objekt als "gültig" deklariert werden darf. Es gibt 2 Fälle: Fall 1) Das Objekt muss im angegebnen Bereich
irgendwann gültig gewesen sein (Darf aber auch in dem Bereich ungültig geworden sein). Fall 2) Das Objekt muss im gesamten
Zeitbereich gültig gewesen sein, die entspricht TimeSpecificationType.VALID_DURING_PERIOD
public int getSerializerVersion()
ConfigurationAreaFile
Serializer
erstellt. Die benutzte Version ist in der
gesamten Datei identisch. Ein Versionswechsel innerhalb der Datei ohne die Konvertierung aller Daten auf die neue Version ist nicht gestattet.
getSerializerVersion
in interface ConfigurationAreaFile
SystemObjectInformation loadObjectFromFile(long filePosition) throws IOException, NoSuchVersionException
filePosition
- Position in der Datei, an der das Objekt beginnt
IOException
NoSuchVersionException
private SystemObjectInformation loadObjectFromFile(long filePosition, ConfigAreaFile.FileIterator fileIterator) throws IOException, NoSuchVersionException
filePosition
- Position in der Datei, an der das Objekt beginntfileIterator
- Objekt, an dem die Position des nächsten zu ladenden Objekts gespeichert wird. Wird null
übergeben, so wird die Psoition
des nächsten Objekts nicht gesetzt. Wird eine -1 gesetzt,so gibt es kein nächstes Objekt mehr
IOException
NoSuchVersionException
private SystemObjectInformation readObjectFromFile(long filePosition, int objectsize, long id, long typeId, long firstInvalid, long firstValid, byte objecttype, RandomAccessFile file) throws IOException, NoSuchVersionException
filePosition
- Position in der Datei, an der das Objekt gespeichert istobjectsize
- Gesamtegröße des Objekts (einschließlich der schon geladenen Daten)id
- Id des ObjektstypeId
- Id des Types des ObjektsfirstInvalid
- Version oder Zeitpunkt, an dem das Objekt ungültig wurde/wirdfirstValid
- Version oder Zeitpunkt, an dem das Objekt gültig wird/wurdeobjecttype
- 0 = Konfigurationsobjekt, Valid und Invalid sind als Versionen zu interpretieren; 1 = dynamisches Objekt, Valid und Invalid sind als
Zeitpunkte zu interpretierenfile
- Datei, aus der das Objekt gelesen werden soll, der fileDescriptor steht bei dynamsichen Objekten auf der Simulationsvariante, bei
Konfigurationsobjekten auf den gepackten Daten
IOException
NoSuchVersionException
private long writeDynamicObjectToFile(DynamicObjectInformation dynamicObject, RandomAccessFile file, boolean declareGap, boolean setNewFilePosition) throws IOException, IllegalStateException
dynamicObject
- Objekt, das gesichert werden sollfile
- Datei, in der das Objekt gespeichert werden soll. Das Objekt wird ans Ende der Datei geschriebendeclareGap
- true = (Normalfall) Das Objekt wird gespeichert, es existiert aber noch eine ältere Version des Objekts in der Datei und diese
wird als Lücke deklariert (ID wird auf 0 gesetzt); false = (Anlegen einer neuen Konfigurationsbereichsdatei oder bei
Reorganisation) Das Objekt wird in der Datei gespeichert (es wird keine Lücke erzeugt). Dies ist aber die erste Version des
Objekts in der Datei und somit gibt es auch keinen Vorgänger der als Lücke deklariert werden sollsetNewFilePosition
- true = (Normalfall) Das Objekt wird in der Datei gespeichert und die neue Position in der Datei wird am Objekt, das sich im
Speicher befindet, gespeichert; false = Das Objekt wird in der Datei gespeichert, aber die neue Dateiposition wird nicht am Objekt
gespeichert sondern muss nachträglich am Objekt, das sich im Speicher befindet, gesetzt werden. Ein Beispiel wäre die
Reorganisation. Das Objekt wird in der neue Datei gespeichert, aber die Dateiposition wird am Objekt im Speicher erst dann
gesetzt, wenn die Reorganisation erfolgreich abgeschlossen werden konnte.
IOException
- Fehler beim schreiben in die Datei, Teile des Datensatzes wurden bereits geschrieben
IllegalStateException
- Fehler beim sammeln der Daten, die Datei wurde noch nicht verändertprivate long writeConfigurationObjectToFile(ConfigurationObjectInformation configurationObject, RandomAccessFile file, boolean declareGap, boolean setNewFilePosition) throws IOException, IllegalStateException
configurationObject
- Objekt, das gespeichert werden sollfile
- Datei, in der das Objekt gespeichert werden soll.declareGap
- true = (Normalfall) Das Objekt wird gespeichert, es existiert aber noch eine ältere Version des Objekts in der Datei und diese
wird als Lücke deklariert (ID wird auf 0 gesetzt); false = (Anlegen einer neuen Konfigurationsbereichsdatei oder bei
Reorganisation) Das Objekt wird in der Datei gespeichert (es wird keine Lücke erzeugt). Dies ist aber die erste Version des
Objekts in der Datei und somit gibt es auch keinen Vorgänger der als Lücke deklariert werden sollsetNewFilePosition
- true = (Normalfall) Das Objekt wird in der Datei gespeichert und die neue Position in der Datei wird am Objekt, das sich im
Speicher befindet, gespeichert; false = Das Objekt wird in der Datei gespeichert, aber die neue Dateiposition wird nicht am
Objekt gespeichert sondern muss nachträglich am Objekt, das sich im Speicher befindet, gesetzt werden. Ein Beispiel wäre die
Reorganisation. Das Objekt wird in der neue Datei gespeichert, aber die Dateiposition wird am Objekt im Speicher erst dann
gesetzt, wenn die Reorganisation erfolgreich abgeschlossen werden konnte.
IOException
- Fehler beim schreiben in die Datei, Teile des Datensatzes wurden bereits geschrieben
IllegalStateException
- Fehler beim sammeln der Daten, die Datei wurde noch nicht verändertprivate void declareObjectAsAGap(long filePosition, RandomAccessFile file) throws IOException
filePosition
- Position des Objekts (Länge des Objekts). Der Wert -1 bedeutet, dass dieses Objekt noch nie gespeichert wurde. Es muss also kein altes
Objekt als Lücke definiert werdenfile
- Dateiobjekt, mit dem auf die Platte zugegriffen werden kann
IOException
void declareObjectAsAGap(long filePosition)
private byte[] zip(byte[] data) throws IOException
data
- ungepackte Daten
IOException
private byte[] unzip(byte[] zippedData)
private void writeSystemObjectWithoutIdAndTypeId(SystemObjectInformationInterface object, Serializer serializer) throws IOException
object
- Objekt, von dem nur gewissen Teile gespeichert werdenserializer
- Byte-Strom, in den die Daten eingefügt werden
IOException
short getActiveVersion()
void objectModified(SystemObjectInformationInterface modifiedObject)
ConfigurationFileManager.saveConfigurationAreaFiles()
aufgerufen wird. Die Methode kann mehrfach vom selben Objekt aufgerufen werden, es
wird nur einmal gespeichert.
Es muss außerdem geprüft werden, ob das Objekt Auswirkungen auf die drei Zeitstempel _dynamicObjectChanged,_configurationDataChanged,_configurationObjectChanged
hat (siehe TPuK1-51).
modifiedObject
- dynamisches Objekt oder Konfigurationsobjekt, dessen Informationen geändert wurden und das somit persistent in der Datei des
Konfigurationsbereichs gespeichert werden mussvoid dontSaveObject(SystemObjectInformationInterface object)
object
- Objekt, das nicht gespeichert werden sollvoid setDynamicObjectInvalid(DynamicObjectInformation invalidObject)
invalidObject
- Objekt, das "ungültig" geworden istpublic boolean initialVersionRestructure()
initialVersionRestructure
in interface ConfigurationAreaFile
restructure()
public long getGreatestId()
ConfigurationAreaFile
getGreatestId
in interface ConfigurationAreaFile
public boolean restructure()
ConfigurationAreaFile
restructure
in interface ConfigurationAreaFile
private List<SystemObjectInformationInterface> binarySearch(long value, boolean searchId) throws NoSuchVersionException, IOException
value
- Id oder Pid, nach der die Objekte gesucht werden sollensearchId
- true = value wird als Id interpretiert; false = value wird als HashCode einer Pid interpretiert (siehe Methodenbeschreibung!)
null
zurückgegeben,
falls kein Objekt gefunden werden konnte
IllegalStateException
- Zu einer Id wurden zwei Elemente gefunden
NoSuchVersionException
IOException
private long getAbsoluteFilePositionForInvalidObjects(long relativeFilePosition)
relativeFilePosition
- relative Position des Objekts. Ein negativer Wert (einschliesslich 0) wird als ungültiges Konfigurationsobjekt interpretiert.
Ein positiver Wert als ungültiges dynamisches Objekt. Beide Objekte befinden sich in den nGa Bereichen oder im dyn. nGa
Bereich.
public String getConfigAreaPid()
void printIdIndex()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |