de.bsvrz.ars.ars.mgmt.datatree
Class DataIdentNode

java.lang.Object
  extended by de.bsvrz.ars.ars.mgmt.datatree.DataIdentNode

public class DataIdentNode
extends Object

Repraesentiert einen Knoten fuer eine Daten-Identifikation im Baum DataIdentTree.

Author:
beck et al. projects GmbH, Alexander Schmidt

Field Summary
private  boolean accessed
          Markierung, ob ein Thread diesen DIN mit enterCriticalArea() betreten und noch nicht mit exitCriticalArea() verlassen hat.
private  Data arsParams
          Parametrierung dieser Datenidentifikation
private  int[] containerEntries
          Anzahl der Datensätze im jeweils pro Datensatzart aktuellen Container
private static int DINDEXIDX
           
private static int DTIMEIDX
           
private static long ENTER_BUSY_AREA_TIMEOUT
           
private  boolean firstOADataAfterSubscription
          Flag, ob nach einer Anmeldung bereits ein OA-Datum erhalten wurde (wenn nicht, darf ein erhaltener Datenindex ausnahmeweise gleich dem zuletzt archivierten Datenindex sein)
private  boolean firstONDataAfterSubscription
          Flag, ob nach einer Anmeldung bereits ein OA-Datum erhalten wurde (wenn nicht, darf ein erhaltener Datenindex ausnahmeweise gleich dem zuletzt archivierten Datenindex sein)
static int IDXSIZE_ONLINE
           
static int IDXSIZE_REQUESTED
           
private  Object[] indexes
          Indexe.
static byte INVALID
           
private  boolean invalidAckID
          Zeigt an, ob der Quittierungsaspekt ungueltig ist
private static short LAST_OA_NOSRC_FALSE
           
private static short LAST_OA_NOSRC_TRUE
           
private  short lastDataNoSourceStatus
          Hier wird vermerkt, ob der letzte waehrend der laufenden Uptime archivierte OA-Datensatz die Kennung "keine Quelle" hatte.
private  int lastQueryTime
          Zeitpunkt der letzten Archivanfrage zu dieser DID (in Sekunden seit Epoch).
private static int MONOIDX
           
private  boolean[] rebuildIndexFlagFileCreated
          Gibt an, ob fuer diese DID die .changed-Datei bereits erzeugt wurde.
private  boolean taskBusy
          Markierung, ob ein Thread diesen DIN mit enterBusyArea() betreten und noch nicht mit exitBusyArea() verlassen hat.
private static short UNASSIGNED
           
 
Constructor Summary
DataIdentNode()
           
 
Method Summary
 void addIndexEntries(ArchiveDataKind adk, String basePath, long dataIdx, long atime, long dtime, long contID, byte[] tempMem)
          Fügt den Indexen den spezifizierten Eintrag hinzu.
 int arSParamGetAnzNachfordern()
          Liefert die Anzahl der Archivsysteme, bei denen nachgefordert werden soll.
 String arSParamGetNachfordern(int at)
          Liefert aus der Liste der Archivsysteme, bei denen bei potentiell erkannten Datenluecken nachgefordert werden soll, das Archivsystem mit dem angegebenen nullbasierten Index.
 long arSParamGetQuittieren()
          Liefert den AspektID unter dem quittiert werden soll, -1 falls nicht quittiert werden soll.
 long arSParamGetVorhalten()
          Liefert die Vorhaltezeit in Sekunden.
 boolean arSParamIsArchivieren()
          Liefert Kennzeichen, ob die Daten zu archivieren sind.
 boolean arSParamIsNachfordern()
          Liefert Kennzeichen, ob bei potentiell erkannten Datenluecken bei anderen Archivsystemen nachgefordert werden soll.
 boolean arSParamIsQuittieren()
           
 boolean arSParamIsQuittierenValid()
           
 boolean arSParamIsSichern()
          Liefert Kennzeichen, ob die Daten fuer diese Datenidentifikation zu sichern sind.
 void arSParamMarkQuittierenInvalid(boolean invalid)
          Setzt die AspektID unter dem quittiert werden soll und vermerkt ihn als nicht erfolgreich angemeldet.
 void arsParamSetParams(Data params)
          Setzt einen Zeiger auf den Datensatz mit der Parametrierung fuer diese Datenidentifikation
private  void assignArrays()
           
 void assignContinuedIndexes(int adkIndex, String basePath, byte[] tempMem, int lastContNumDS)
          Weist Indexe zur Weiterverwendung des letzten Eintrages zu.
 void assignNewIndexes(int adkIndex)
          Legt fuer die Datensatzart neue Indexe an, falls diese nicht existieren.
 void closeIndexes(ArchiveDataKind adk, String basePath, byte[] tempMem)
          Schliesst die Indexe einer Datensatzart und gibt den belegten Speicher frei.
 boolean enterBusyArea()
          Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden: Zugriff auf abgeschlossene Container (lesen und schreiben)
Wenn ein anderer Task sich im Busy-Bereich befindet, blockiert diese Methode.
 boolean enterCriticalArea()
          Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden: Index (lesen und schreiben) Aktueller Container (nur schreiben)
Wenn ein anderer Task sich im kritischen Bereich befindet, blockiert diese Methode bis der kritische Bereich wieder frei ist.
 void exitBusyArea()
          Muss immer nach der Benutzung von Daten eines DataIdentNodes aufgerufen werden, wenn zuvor enterBusyArea() augfgerufen worden ist.
 void exitCriticalArea()
          Muss immer nach der Benutzung von Daten eines DataIdentNodes aufgerufen werden, wenn zuvor enterCriticalArea() augfgerufen worden ist.
 IndexResult getArSTimeContIDs(ArchiveDataKind adk, String basePath, byte[] tempMem, long minKey, long maxKey)
           
private  ATimeMonotoneIndex getATimeMonoIdx(ArchiveDataKind adk)
           
private  ATimeMonotoneIndex getATimeMonoIdx(int adkIndex)
           
 int getCurContEntries(ArchiveDataKind adk)
          Liefert die Anzahl der Datensätze im aktuellen Container.
 IndexResult getDataIdxContIDs(ArchiveDataKind adk, String basePath, byte[] tempMem, long minKey, long maxKey)
           
 IndexResult getDataTimeContIDs(ArchiveDataKind adk, String basePath, byte[] tempMem, long minKey, long maxKey)
           
private  DIdxATimeMonotoneIndex getDIdxATimeMonoIdx(int adkIndex)
           
private  DataIndexIndex getDIIdx(int adkIdx)
           
private  DataTimeIndex getDTIdx(ArchiveDataKind adk)
           
private  DataTimeIndex getDTIdx(int adkIndex)
           
 float getIndexFillRatio(ArchiveDataKind adk)
           
 long getLastQueryTime()
           
 long getMinVal(TimingType tt, ArchiveDataKind adk, String basePath)
          Liefert den kleinsten jemals gespeicherten Wert der angegebenen Datensatzart und TimingType
 long getOpenContID(ArchiveDataKind adk)
          Liefert die ID des aktuell offenen Containers.
 boolean hasIndexAssigned()
           
 boolean indexesAssigned(ArchiveDataKind adk)
           
 boolean isArSParameterized()
          Liefert Kennzeichen, ob der DataIdentNode ueber die Archivparametrierung/Simulation angelegt wurde oder wegen einer Archivanfrage.
 boolean isFirstDataAfterSubscription(ArchiveDataKind adk)
          Sagt, ob nach einer Anmeldung bereits ein Datum der genannten Datensatzart erhalten wurde.
private  boolean isNA_NN(int adkIdx)
           
 boolean isRebuildIndexFileFlagCreated(ArchiveDataKind adk)
          Gibt an, ob seit Systemstart die Datei PersistenceManager#REBUILDINDEX_FILE_FLAG_NAME nach einem Archivvorgang fuer diese DID erzeugt wurde.
 boolean lastDataNoSourceAssigned()
           
 boolean lastDataWasNoSource()
           
 long maxATime(ArchiveDataKind adk)
           
 long maxDIdx(ArchiveDataKind adk)
           
 long maxDTime(ArchiveDataKind adk)
           
 long minATime(ArchiveDataKind adk)
           
 long minDIdx(ArchiveDataKind adk)
           
 long minDTime(ArchiveDataKind adk)
           
 void rebuildIndexFileFlagWasCreated(ArchiveDataKind adk)
          Zur Kennzeichnung, dass die changed-Datei nach einem Archivvorgang fuer diese DID erzeugt wurde.
 void setCurContEntries(int adkIndex, int entries)
          Setzt die Anzahl der Datensaetze im aktuellen Container.
 void setFirstDataAfterSubscription(ArchiveDataKind adk, boolean flag)
          Setzt die Markierung, ob seit der letzten Anmeldung bereits ein Datum der genannten Datensatzart erhalten wurde (#isFirstDataAfterSubscription()
 void setLastOAWasNoSource(boolean lastOADataWasNoSource)
          Setzt die Markierung, ob der letzte waehrend der laufenden Uptime archivierte OA-Datensatz die Kennung "keine Quelle" hatte.
 void setLastQueryTime(long lastQueryTime)
          Setzt den Zeitpunkt der letzten Archivanfrage.
 String toString()
           
 void updateIndexEntries(ArchiveDataKind adk, long dataIdx, long atime, long dtime)
          Setzt die Maximumwerte des aktuellen Indexeintrags auf die uebergebenen Werte.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INVALID

public static final byte INVALID
See Also:
Constant Field Values

IDXSIZE_ONLINE

public static int IDXSIZE_ONLINE

IDXSIZE_REQUESTED

public static int IDXSIZE_REQUESTED

MONOIDX

private static final int MONOIDX
See Also:
Constant Field Values

DTIMEIDX

private static final int DTIMEIDX
See Also:
Constant Field Values

DINDEXIDX

private static final int DINDEXIDX
See Also:
Constant Field Values

ENTER_BUSY_AREA_TIMEOUT

private static final long ENTER_BUSY_AREA_TIMEOUT
See Also:
Constant Field Values

UNASSIGNED

private static final short UNASSIGNED
See Also:
Constant Field Values

LAST_OA_NOSRC_TRUE

private static final short LAST_OA_NOSRC_TRUE
See Also:
Constant Field Values

LAST_OA_NOSRC_FALSE

private static final short LAST_OA_NOSRC_FALSE
See Also:
Constant Field Values

arsParams

private Data arsParams
Parametrierung dieser Datenidentifikation


invalidAckID

private boolean invalidAckID
Zeigt an, ob der Quittierungsaspekt ungueltig ist


firstOADataAfterSubscription

private boolean firstOADataAfterSubscription
Flag, ob nach einer Anmeldung bereits ein OA-Datum erhalten wurde (wenn nicht, darf ein erhaltener Datenindex ausnahmeweise gleich dem zuletzt archivierten Datenindex sein)


firstONDataAfterSubscription

private boolean firstONDataAfterSubscription
Flag, ob nach einer Anmeldung bereits ein OA-Datum erhalten wurde (wenn nicht, darf ein erhaltener Datenindex ausnahmeweise gleich dem zuletzt archivierten Datenindex sein)


lastQueryTime

private int lastQueryTime
Zeitpunkt der letzten Archivanfrage zu dieser DID (in Sekunden seit Epoch). Wird im Algorithmus zur Speicherbereinigung ausgewertet.


indexes

private Object[] indexes
Indexe. Einer pro Datensatzart und pro Datenindex/Archivzeit/Datenzeit (insges. 10)


containerEntries

private int[] containerEntries
Anzahl der Datensätze im jeweils pro Datensatzart aktuellen Container


accessed

private boolean accessed
Markierung, ob ein Thread diesen DIN mit enterCriticalArea() betreten und noch nicht mit exitCriticalArea() verlassen hat. Es darf stets nur ein Thread im krit. Bereich sein. Dieser Semaphor regelt (blockiert) den Kurzzeit-Zugang zum DataIndentNode.


taskBusy

private boolean taskBusy
Markierung, ob ein Thread diesen DIN mit enterBusyArea() betreten und noch nicht mit exitBusyArea() verlassen hat. Es darf stets nur ein Thread im busy Bereich sein. Dieser Semaphor regelt den Langzeit-Zugang zum DataIndentNode (z.B. damit Loesch- und Nachfordern- Task nicht kollidieren.


rebuildIndexFlagFileCreated

private boolean[] rebuildIndexFlagFileCreated
Gibt an, ob fuer diese DID die .changed-Datei bereits erzeugt wurde. Damit spart man sich, jedesmal auf der Platte nachzusehen (Perfromance!)


lastDataNoSourceStatus

private short lastDataNoSourceStatus
Hier wird vermerkt, ob der letzte waehrend der laufenden Uptime archivierte OA-Datensatz die Kennung "keine Quelle" hatte. Zu Beginn ist der Status nicht gesetzt, was bedeutet, dass man im Container nachsehen muss (sufwendig).

Constructor Detail

DataIdentNode

public DataIdentNode()
Method Detail

lastDataNoSourceAssigned

public boolean lastDataNoSourceAssigned()
Returns:
Wahr, falls der keine-Quelle-Status des letzten waehrend der laufenden Uptime archivierten OA-Datensatzes gesetzt wurde. Falls er nicht gesetzt wurde, muss im Container nachgesehen werden (aufwendig)

lastDataWasNoSource

public boolean lastDataWasNoSource()
Returns:
Wahr, falls der letzte waehrend der laufenden Uptime archivierte online-aktuelle Datensatz die Kennung "keine Quelle" hatte. Dies wird hier vermerkt, damit nicht jedesmal im Container nachgesehen werden muss.

setLastOAWasNoSource

public void setLastOAWasNoSource(boolean lastOADataWasNoSource)
Setzt die Markierung, ob der letzte waehrend der laufenden Uptime archivierte OA-Datensatz die Kennung "keine Quelle" hatte. (In diesem Fall muss kein Datenluecken-Datensatz erzeugt werden.)

Parameters:
lastOADataWasNoSource -

getLastQueryTime

public long getLastQueryTime()
Returns:
Zeitpunkt der letzten Archivanfrage, falls schon mal angefragt, 0 sonst.
See Also:
lastQueryTime

setLastQueryTime

public void setLastQueryTime(long lastQueryTime)
Setzt den Zeitpunkt der letzten Archivanfrage.

Parameters:
lastQueryTime -
See Also:
lastQueryTime

setFirstDataAfterSubscription

public void setFirstDataAfterSubscription(ArchiveDataKind adk,
                                          boolean flag)
Setzt die Markierung, ob seit der letzten Anmeldung bereits ein Datum der genannten Datensatzart erhalten wurde (#isFirstDataAfterSubscription()

Parameters:
adk - Datensatzart (OA oder ON)
flag -

isFirstDataAfterSubscription

public boolean isFirstDataAfterSubscription(ArchiveDataKind adk)
Sagt, ob nach einer Anmeldung bereits ein Datum der genannten Datensatzart erhalten wurde. Wenn dies nicht der Fall ist, darf der Datenindex gleich dem letzten archvierten Datenindex sein.

Parameters:
adk - Datensatzart (OA oder ON)
Returns:
Wahr oder falsch

isNA_NN

private boolean isNA_NN(int adkIdx)

getIndexFillRatio

public float getIndexFillRatio(ArchiveDataKind adk)

getATimeMonoIdx

private ATimeMonotoneIndex getATimeMonoIdx(ArchiveDataKind adk)
Parameters:
adk - Datensatzart
Returns:
den in der Archivzeit monotonen Index der Datensatzart

getATimeMonoIdx

private ATimeMonotoneIndex getATimeMonoIdx(int adkIndex)

getDIdxATimeMonoIdx

private DIdxATimeMonotoneIndex getDIdxATimeMonoIdx(int adkIndex)
Parameters:
adkIdx - Datensatzart-Index
Returns:
den in Datenindex und Archivzeit monotonen Index der Datensatzart (ergibt Fehler, wenn fuer nachgeforderte Datensatzarten aufgerufen)

getDTIdx

private DataTimeIndex getDTIdx(ArchiveDataKind adk)
Parameters:
adk - Datensatzart
Returns:
den (aufgrund der Rueckspruenge in der Datenzeit) nicht monotonen Datenzeitindex

getDTIdx

private DataTimeIndex getDTIdx(int adkIndex)

getDIIdx

private DataIndexIndex getDIIdx(int adkIdx)
Parameters:
adkIdx - Datensatzart-Index
Returns:
den (aufgrund der Index-Rueckspruenge in nachgelieferten Datensaetzen) nicht monotonen Datenindex-Index. Ergibt Fehler, wenn fuer aktuelle Datensatzarten aufgerufen.

indexesAssigned

public boolean indexesAssigned(ArchiveDataKind adk)

assignNewIndexes

public void assignNewIndexes(int adkIndex)
Legt fuer die Datensatzart neue Indexe an, falls diese nicht existieren. containerEntries der Datensatzart werden auf INVALID, lastDataNoSourceAssigned()() liefert danach false.

Parameters:
adkIndex - Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)

assignContinuedIndexes

public void assignContinuedIndexes(int adkIndex,
                                   String basePath,
                                   byte[] tempMem,
                                   int lastContNumDS)
                            throws IndexException
Weist Indexe zur Weiterverwendung des letzten Eintrages zu. Der Aufrufer muss im letzten Container nachzaehlen und containerEntries der Datensatzart auf den entsprechenden Wert setzen.

Parameters:
adkIndex - Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)
basePath - Pfad der Datenidentifikation und Datensatzart
tempMem - temporaerer Speicher (benoetigt zum Einlesen der Indexe)
lastContNumDS - Anzahl der DS im letzten Container
Throws:
IndexException

addIndexEntries

public void addIndexEntries(ArchiveDataKind adk,
                            String basePath,
                            long dataIdx,
                            long atime,
                            long dtime,
                            long contID,
                            byte[] tempMem)
                     throws IndexException
Fügt den Indexen den spezifizierten Eintrag hinzu. containerEntries der Datensatzart wird auf 1 gesetzt.

Parameters:
adk - Datensatzart
basePath - Verzeichnis der Datenidentifikation + Datensatzart. Wird benötigt, damit der Datenzeitindex notfalls (bei einem Rücksprung) in der Datenzeitindex-Datei nachsehen kann.
dataIdx - Datenindex
atime - Archivzeit
dtime - Datenzeit
contID - Container-ID
tempMem - Speicherbereich, den der Datenzeitindex notfalls (bei einem Rücksprung) zum Einlesen der Datenzeitindexdatei verwenden kann. Wird als Parameter übergeben werden, um GC/Speicher zu sparen.
Throws:
IndexException

updateIndexEntries

public void updateIndexEntries(ArchiveDataKind adk,
                               long dataIdx,
                               long atime,
                               long dtime)
                        throws IndexException
Setzt die Maximumwerte des aktuellen Indexeintrags auf die uebergebenen Werte. Die Indexe muessen bereits (durch addIndexEntries(ArchiveDataKind, String,long,long,long,long,byte[]) angelegt worden sein; andernfalls ist dies ein schwerer Programmfehler. containerEntries der Datensatzart wird um 1 hochgezaehlt.

Parameters:
adk - Datensatzart
dataIdx - Datenindex
atime - Archivzeit
dtime - Datenzeit
Throws:
IndexException

closeIndexes

public void closeIndexes(ArchiveDataKind adk,
                         String basePath,
                         byte[] tempMem)
                  throws IndexException
Schliesst die Indexe einer Datensatzart und gibt den belegten Speicher frei. Dabei wird die Indexdatei upgedated.

Parameters:
adk - Datensatzart
basePath - Pfad der Datenidentifikation und Datensatzart
tempMem - temporaerer Speicher (benoetigt zum Schreiben der Indexdateien)
Throws:
IndexException

getCurContEntries

public int getCurContEntries(ArchiveDataKind adk)
Liefert die Anzahl der Datensätze im aktuellen Container.

Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Anzahl der Datensätze im aktuellen Container.

setCurContEntries

public void setCurContEntries(int adkIndex,
                              int entries)
Setzt die Anzahl der Datensaetze im aktuellen Container. Aufruf ist nur notwendig, wenn ein Container nach Systemstart weiterbenutzt wird.

Parameters:
adkIndex - Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)
entries - Anzahl der Datensaetze

minDTime

public long minDTime(ArchiveDataKind adk)
              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Datenzeit-Minimum des aktuellen Containers
Throws:
IndexException

maxDTime

public long maxDTime(ArchiveDataKind adk)
              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Datenzeit-Maximum des aktuellen Containers
Throws:
IndexException

minATime

public long minATime(ArchiveDataKind adk)
              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Archivzeit-Minimum des aktuellen Containers
Throws:
IndexException

maxATime

public long maxATime(ArchiveDataKind adk)
              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Archivzeit-Maximum des aktuellen Containers
Throws:
IndexException

minDIdx

public long minDIdx(ArchiveDataKind adk)
             throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Datenindex-Minimum des aktuellen Containers
Throws:
IndexException

maxDIdx

public long maxDIdx(ArchiveDataKind adk)
             throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
Returns:
Datenindex-Maximum des aktuellen Containers
Throws:
IndexException

getDataIdxContIDs

public IndexResult getDataIdxContIDs(ArchiveDataKind adk,
                                     String basePath,
                                     byte[] tempMem,
                                     long minKey,
                                     long maxKey)
                              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
basePath - Pfad zum Containerverzeichnis
tempMem - Temporaerer Speicher (zum Einlesen der Indexdatei, falls notwendig)
minKey - Untere Grenze des Datenindexbereichs
maxKey - Obere Grenze des Datenindexbereichs
Returns:
Liste von ContainerIDs die Datensätze aus dem gewünschten Bereich enthalten.
Throws:
IndexException

getArSTimeContIDs

public IndexResult getArSTimeContIDs(ArchiveDataKind adk,
                                     String basePath,
                                     byte[] tempMem,
                                     long minKey,
                                     long maxKey)
                              throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
basePath - Pfad zum Containerverzeichnis
tempMem - Temporärer Speicher (zum Einlesen der Indexdatei, falls notwendig)
minKey - Untere Grenze des Archivzeitbereichs
maxKey - Obere Grenze des Archivzeitbereichs
Returns:
Liste von ContainerIDs die Datensätze aus dem gewünschten Bereich enthalten.
Throws:
IndexException

getDataTimeContIDs

public IndexResult getDataTimeContIDs(ArchiveDataKind adk,
                                      String basePath,
                                      byte[] tempMem,
                                      long minKey,
                                      long maxKey)
                               throws IndexException
Parameters:
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
basePath - Pfad zum Containerverzeichnis
tempMem - Temporärer Speicher (zum Einlesen der Indexdatei, falls notwendig)
minKey - Untere Grenze des Datenzeitbereichs
maxKey - Obere Grenze des Datenzeitbereichs
Returns:
Liste von ContainerIDs die Datensätze aus dem gewünschten Bereich enthalten.
Throws:
IndexException

getMinVal

public long getMinVal(TimingType tt,
                      ArchiveDataKind adk,
                      String basePath)
               throws IndexException
Liefert den kleinsten jemals gespeicherten Wert der angegebenen Datensatzart und TimingType

Parameters:
tt - Datenzeit, Datenindex oder Archivzeit
adk - Datensatzart (ArchiveDataKind: OA/ON/NA/NN)
basePath - Pfad zum Containerverzeichnis
Returns:
kleinster Wert
Throws:
IndexException

enterCriticalArea

public boolean enterCriticalArea()
Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden:
Wenn ein anderer Task sich im kritischen Bereich befindet, blockiert diese Methode bis der kritische Bereich wieder frei ist. Der Aufrufer muss den Rueckgabewert der Methode auswerten und darf nur bei erfolgreichem Betreten des kritischen Bereichs mit dem DIN arbeiten.

Returns:
Wahr, wenn der Zugang in den kritischen Bereich erlaubt ist, falsch, wenn auf den Task interrupt() aufgerufen worden ist und deshalb das Warten auf den Zugang zum kritischen Bereich unterbrochen worden ist ohne den Zugang zu erhalten.

exitCriticalArea

public void exitCriticalArea()
Muss immer nach der Benutzung von Daten eines DataIdentNodes aufgerufen werden, wenn zuvor enterCriticalArea() augfgerufen worden ist. Eine der wartenden Tasks kann nun den kritischen Bereich betreten. Dieses Verfahren erfordert korrekte Verwendung, da nicht geprüft wird, ob der Aufrufer dieser Methode auch derjenige ist, der im kritischen Bereich ist.


enterBusyArea

public boolean enterBusyArea()
Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden:
Wenn ein anderer Task sich im Busy-Bereich befindet, blockiert diese Methode. Die Blockierung endet spaetestens nach 10 Minuten und die Methode liefert den Rueckgabewert. Der Aufrufer muss den Rueckgabewert auswerten und darf nur bei erfolgreichem Betreten des Busy-Bereichs mit den Daten des DIN arbeiten.

Returns:
Wahr, wenn der Zugang in den Busy-Bereich erlaubt ist, falsch, wenn das Warten auf den Zugang zum kritischen Bereich unterbrochen worden ist ohne den Zugang zu erhalten (durch Aufruf von interrupt() auf den Task oder durch Ablaufen des Timeouts beim Warten).

exitBusyArea

public void exitBusyArea()
Muss immer nach der Benutzung von Daten eines DataIdentNodes aufgerufen werden, wenn zuvor enterBusyArea() augfgerufen worden ist. Eine der wartenden Tasks kann nun den Busy-Bereich betreten. Dieses Verfahren erfordert korrekte Verwendung, da nicht geprüft wird, ob der Aufrufer dieser Methode auch derjenige ist, der im Busy-Bereich ist.


getOpenContID

public long getOpenContID(ArchiveDataKind adk)
                   throws IndexException
Liefert die ID des aktuell offenen Containers. Ein Container ist offen, wenn darin Daten archiviert werden. Wenn kein Container offen ist weil keine Daten vorhanden sind, das ArS mit einem geschlossenen Container gestartet wurde oder ein Container wegen einer Parameteraenderung geschlossen wurde, wird -1 zurueckgeliefert.

Returns:
Container-ID oder -1 falls bisher kein offener Container verwendet wurde.
Throws:
IndexException, - falls die Zustaende der Indexe nicht uebereinstimmen oder die ContainerIDs unterschiedlich sind
IndexException

arsParamSetParams

public void arsParamSetParams(Data params)
Setzt einen Zeiger auf den Datensatz mit der Parametrierung fuer diese Datenidentifikation

Parameters:
params -

arSParamIsArchivieren

public boolean arSParamIsArchivieren()
Liefert Kennzeichen, ob die Daten zu archivieren sind.

Returns:
Kennzeichen

arSParamIsNachfordern

public boolean arSParamIsNachfordern()
Liefert Kennzeichen, ob bei potentiell erkannten Datenluecken bei anderen Archivsystemen nachgefordert werden soll.

Returns:
Kennzeichen

arSParamGetAnzNachfordern

public int arSParamGetAnzNachfordern()
Liefert die Anzahl der Archivsysteme, bei denen nachgefordert werden soll.

Returns:
Anzahl Archivsysteme

arSParamGetNachfordern

public String arSParamGetNachfordern(int at)
Liefert aus der Liste der Archivsysteme, bei denen bei potentiell erkannten Datenluecken nachgefordert werden soll, das Archivsystem mit dem angegebenen nullbasierten Index.

Parameters:
at - Index
Returns:
Archivsystem

arSParamIsSichern

public boolean arSParamIsSichern()
Liefert Kennzeichen, ob die Daten fuer diese Datenidentifikation zu sichern sind.

Returns:
Kennzeichen

arSParamGetQuittieren

public long arSParamGetQuittieren()
Liefert den AspektID unter dem quittiert werden soll, -1 falls nicht quittiert werden soll.

Returns:
Quittierungs-AspektID.

arSParamIsQuittieren

public boolean arSParamIsQuittieren()
Returns:
ob Datensaetze dieser Datenidentifikation zu quittieren sind.

arSParamIsQuittierenValid

public boolean arSParamIsQuittierenValid()
Returns:
ob quittiert werden soll und der Quittierungsaspekt erfolgreich angemeldet werden konnte.

arSParamMarkQuittierenInvalid

public void arSParamMarkQuittierenInvalid(boolean invalid)
Setzt die AspektID unter dem quittiert werden soll und vermerkt ihn als nicht erfolgreich angemeldet.

Parameters:
quittieren - Quittierungs-Aspekt.

arSParamGetVorhalten

public long arSParamGetVorhalten()
Liefert die Vorhaltezeit in Sekunden.

Returns:
Vorhaltezeit

isArSParameterized

public boolean isArSParameterized()
Liefert Kennzeichen, ob der DataIdentNode ueber die Archivparametrierung/Simulation angelegt wurde oder wegen einer Archivanfrage.

Returns:
wahr: ueber Archivparametrierung, falsch: wegen Archivanfrage

rebuildIndexFileFlagWasCreated

public void rebuildIndexFileFlagWasCreated(ArchiveDataKind adk)
Zur Kennzeichnung, dass die changed-Datei nach einem Archivvorgang fuer diese DID erzeugt wurde. Vermeidet einen Plattenzugriff, um dies festzustellen.

Parameters:
adk - Datensatzart

isRebuildIndexFileFlagCreated

public boolean isRebuildIndexFileFlagCreated(ArchiveDataKind adk)
Gibt an, ob seit Systemstart die Datei PersistenceManager#REBUILDINDEX_FILE_FLAG_NAME nach einem Archivvorgang fuer diese DID erzeugt wurde. Wenn nicht, muss der ArchivTask die Datei erzeugen und DataIdentNode#rebuildIndexFileFlagWasCreated() aufrufen, um fuer den Wiederanlauf nach einem ausserplanmaessigen Systemstop zu kennzeichnen, welche Datenidentifikation ueberprueft werden muss.

Parameters:
adk - Datensatzart
Returns:
Wahr, wenn seit Systemstart DataIdentNode#rebuildIndexFileFlagWasCreated() aufgerufen wurde, sonst falsch.

assignArrays

private void assignArrays()

toString

public String toString()
Overrides:
toString in class Object

hasIndexAssigned

public boolean hasIndexAssigned()