public class DataIdentNode
extends java.lang.Object
Repraesentiert einen Knoten für eine Daten-Identifikation im Baum DataIdentTree.
Modifier and Type | Field and Description |
---|---|
private DinProtector |
_busyProtector |
private DinProtector |
_criticalProtector |
private static Debug |
_debug |
private java.lang.ThreadLocal<DinLock> |
_deprecatedBusyLock |
private java.lang.ThreadLocal<DinLock> |
_deprecatedCriticalLock |
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 java.lang.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 für diese DID die .changed-Datei bereits erzeugt wurde.
|
private static short |
UNASSIGNED |
Constructor and Description |
---|
DataIdentNode() |
Modifier and Type | Method and Description |
---|---|
void |
addIndexEntries(ArchiveDataKind adk,
java.lang.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.
|
java.lang.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 für 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 für diese Datenidentifikation
|
private void |
assignArrays() |
void |
assignContinuedIndexes(int adkIndex,
java.lang.String basePath,
byte[] tempMem,
int lastContNumDS)
Weist Indexe zur Weiterverwendung des letzten Eintrages zu.
|
void |
assignNewIndexes(int adkIndex)
Legt für die Datensatzart neue Indexe an, falls diese nicht existieren.
|
void |
closeIndexes(ArchiveDataKind adk,
java.lang.String basePath,
byte[] tempMem)
Schliesst die Indexe einer Datensatzart und gibt den belegten Speicher frei.
|
boolean |
enterBusyArea()
Deprecated.
|
boolean |
enterCriticalArea()
Deprecated.
|
void |
exitBusyArea()
Deprecated.
|
void |
exitCriticalArea()
Deprecated.
|
IndexResult<ArchiveTimeIndexEntry> |
getArSTimeContIDs(ArchiveDataKind adk,
java.lang.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,
java.lang.String basePath,
byte[] tempMem,
long minKey,
long maxKey) |
IndexResult<DataTimeIndexEntry> |
getDataTimeContIDs(ArchiveDataKind adk,
java.lang.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,
java.lang.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 für diese DID erzeugt wurde. |
boolean |
lastDataNoSourceAssigned() |
boolean |
lastDataWasNoSource() |
DinLock |
lockBusy()
Sichere Variante von
enterBusyArea() und exitBusyArea() , da try-with-resources benutzt werden kann. |
DinLock |
lockCritical()
Sichere Variante von
enterCriticalArea() und exitCriticalArea() , da try-with-resources benutzt werden kann. |
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 für diese DID erzeugt wurde.
|
void |
setCurContEntries(int adkIndex,
int entries)
Setzt die Anzahl der Datensätze 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.
|
java.lang.String |
toString() |
void |
updateIndexEntries(ArchiveDataKind adk,
long dataIdx,
long atime,
long dtime)
Setzt die Maximumwerte des aktuellen Indexeintrags auf die uebergebenen Werte.
|
public static final byte INVALID
public static int IDXSIZE_ONLINE
public static int IDXSIZE_REQUESTED
private static final int MONOIDX
private static final int DTIMEIDX
private static final int DINDEXIDX
private static final long ENTER_BUSY_AREA_TIMEOUT
private static final short UNASSIGNED
private static final short LAST_OA_NOSRC_TRUE
private static final short LAST_OA_NOSRC_FALSE
private Data arsParams
Parametrierung dieser Datenidentifikation
private boolean invalidAckID
Zeigt an, ob der Quittierungsaspekt ungueltig ist
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)
private int lastQueryTime
Zeitpunkt der letzten Archivanfrage zu dieser DID (in Sekunden seit Epoch). Wird im Algorithmus zur Speicherbereinigung ausgewertet.
private java.lang.Object[] indexes
Indexe. Einer pro Datensatzart und pro Datenindex/Archivzeit/Datenzeit (insges. 10)
private int[] containerEntries
Anzahl der Datensätze im jeweils pro Datensatzart aktuellen Container
private static final Debug _debug
private boolean[] rebuildIndexFlagFileCreated
Gibt an, ob für diese DID die .changed-Datei bereits erzeugt wurde. Damit spart man sich, jedesmal auf der Platte nachzusehen (Perfromance!)
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).
private final DinProtector _criticalProtector
private final DinProtector _busyProtector
private final java.lang.ThreadLocal<DinLock> _deprecatedCriticalLock
private final java.lang.ThreadLocal<DinLock> _deprecatedBusyLock
public boolean lastDataNoSourceAssigned()
public boolean lastDataWasNoSource()
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.)
lastOADataWasNoSource
- public long getLastQueryTime()
lastQueryTime
public void setLastQueryTime(long lastQueryTime)
Setzt den Zeitpunkt der letzten Archivanfrage.
lastQueryTime
- lastQueryTime
public void setFirstDataAfterSubscription(ArchiveDataKind adk, boolean flag)
Setzt die Markierung, ob seit der letzten Anmeldung bereits ein Datum der genannten Datensatzart erhalten wurde (#isFirstDataAfterSubscription()
adk
- Datensatzart (OA oder ON)flag
- 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.
adk
- Datensatzart (OA oder ON)private boolean isNA_NN(int adkIdx)
public float getIndexFillRatio(ArchiveDataKind adk)
private ATimeMonotoneIndex getATimeMonoIdx(ArchiveDataKind adk)
adk
- Datensatzartprivate ATimeMonotoneIndex getATimeMonoIdx(int adkIndex)
private DIdxATimeMonotoneIndex getDIdxATimeMonoIdx(int adkIndex)
adkIdx
- Datensatzart-Indexprivate DataTimeIndex getDTIdx(ArchiveDataKind adk)
adk
- Datensatzartprivate DataTimeIndex getDTIdx(int adkIndex)
private DataIndexIndex getDIIdx(int adkIdx)
adkIdx
- Datensatzart-Indexpublic boolean indexesAssigned(ArchiveDataKind adk)
public void assignNewIndexes(int adkIndex)
Legt für die Datensatzart neue Indexe an, falls diese nicht existieren. containerEntries
der Datensatzart werden auf INVALID
, lastDataNoSourceAssigned()()
liefert danach false
.
adkIndex
- Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)public void assignContinuedIndexes(int adkIndex, java.lang.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.
adkIndex
- Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)basePath
- Pfad der Datenidentifikation und DatensatzarttempMem
- temporaerer Speicher (benoetigt zum Einlesen der Indexe)lastContNumDS
- Anzahl der DS im letzten ContainerIndexException
public void addIndexEntries(ArchiveDataKind adk, java.lang.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.
adk
- DatensatzartbasePath
- Verzeichnis der Datenidentifikation + Datensatzart. Wird benötigt, damit der Datenzeitindex notfalls (bei einem Rücksprung) in der Datenzeitindex-Datei nachsehen kann.dataIdx
- Datenindexatime
- Archivzeitdtime
- DatenzeitcontID
- Container-IDtempMem
- 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.IndexException
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.
adk
- DatensatzartdataIdx
- Datenindexatime
- Archivzeitdtime
- DatenzeitIndexException
public void closeIndexes(ArchiveDataKind adk, java.lang.String basePath, byte[] tempMem) throws IndexException
Schliesst die Indexe einer Datensatzart und gibt den belegten Speicher frei. Dabei wird die Indexdatei upgedated.
adk
- DatensatzartbasePath
- Pfad der Datenidentifikation und DatensatzarttempMem
- temporaerer Speicher (benoetigt zum Schreiben der Indexdateien)IndexException
public int getCurContEntries(ArchiveDataKind adk)
Liefert die Anzahl der Datensätze im aktuellen Container.
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)public void setCurContEntries(int adkIndex, int entries)
Setzt die Anzahl der Datensätze im aktuellen Container. Aufruf ist nur notwendig, wenn ein Container nach Systemstart weiterbenutzt wird.
adkIndex
- Datensatzart (0:OA, 1:ON, 2:NA, 3:NN)entries
- Anzahl der Datensätzepublic long minDTime(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public long maxDTime(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public long minATime(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public long maxATime(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public long minDIdx(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public long maxDIdx(ArchiveDataKind adk) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)IndexException
public IndexResult<?> getDataIdxContIDs(ArchiveDataKind adk, java.lang.String basePath, byte[] tempMem, long minKey, long maxKey) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)basePath
- Pfad zum ContainerverzeichnistempMem
- Temporaerer Speicher (zum Einlesen der Indexdatei, falls notwendig)minKey
- Untere Grenze des DatenindexbereichsmaxKey
- Obere Grenze des DatenindexbereichsIndexException
public IndexResult<ArchiveTimeIndexEntry> getArSTimeContIDs(ArchiveDataKind adk, java.lang.String basePath, byte[] tempMem, long minKey, long maxKey) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)basePath
- Pfad zum ContainerverzeichnistempMem
- Temporärer Speicher (zum Einlesen der Indexdatei, falls notwendig)minKey
- Untere Grenze des ArchivzeitbereichsmaxKey
- Obere Grenze des ArchivzeitbereichsIndexException
public IndexResult<DataTimeIndexEntry> getDataTimeContIDs(ArchiveDataKind adk, java.lang.String basePath, byte[] tempMem, long minKey, long maxKey) throws IndexException
adk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)basePath
- Pfad zum ContainerverzeichnistempMem
- Temporärer Speicher (zum Einlesen der Indexdatei, falls notwendig)minKey
- Untere Grenze des DatenzeitbereichsmaxKey
- Obere Grenze des DatenzeitbereichsIndexException
public long getMinVal(TimingType tt, ArchiveDataKind adk, java.lang.String basePath) throws IndexException
Liefert den kleinsten jemals gespeicherten Wert der angegebenen Datensatzart und TimingType
tt
- Datenzeit, Datenindex oder Archivzeitadk
- Datensatzart (ArchiveDataKind: OA/ON/NA/NN)basePath
- Pfad zum ContainerverzeichnisIndexException
@Deprecated public boolean enterCriticalArea()
Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden:
@Deprecated 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.
@Deprecated public boolean enterBusyArea()
Muss immer vor der Benutzung von folgenden Daten eines DataIdentNodes aufgerufen werden:
@Deprecated 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.
@NotNull public DinLock lockCritical() throws java.lang.InterruptedException
Sichere Variante von enterCriticalArea()
und exitCriticalArea()
, da try-with-resources benutzt werden kann. Beispiel-Code: try(DinLock lock = din.lockCritical()) { // Tue was mit DIN }
java.lang.InterruptedException
@Nullable public DinLock lockBusy() throws java.lang.InterruptedException
Sichere Variante von enterBusyArea()
und exitBusyArea()
, da try-with-resources benutzt werden kann. Beispiel-Code: try(DinLock lock = din.lockBusy()) { if(lock == null) { logger.warning(“Lock fehlgeschlagen fuer Datenidentifikation: ” + din); return; } // Tue was mit DIN }
java.lang.InterruptedException
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.
IndexException,
- falls die Zustaende der Indexe nicht uebereinstimmen oder die ContainerIDs unterschiedlich sindIndexException
public void arsParamSetParams(Data params)
Setzt einen Zeiger auf den Datensatz mit der Parametrierung für diese Datenidentifikation
params
- public boolean arSParamIsArchivieren()
Liefert Kennzeichen, ob die Daten zu archivieren sind.
public boolean arSParamIsNachfordern()
Liefert Kennzeichen, ob bei potentiell erkannten Datenluecken bei anderen Archivsystemen nachgefordert werden soll.
public int arSParamGetAnzNachfordern()
Liefert die Anzahl der Archivsysteme, bei denen nachgefordert werden soll.
public java.lang.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.
at
- Indexpublic boolean arSParamIsSichern()
Liefert Kennzeichen, ob die Daten für diese Datenidentifikation zu sichern sind.
public long arSParamGetQuittieren()
Liefert den AspektID unter dem quittiert werden soll, -1 falls nicht quittiert werden soll.
public boolean arSParamIsQuittieren()
public boolean arSParamIsQuittierenValid()
public void arSParamMarkQuittierenInvalid(boolean invalid)
Setzt die AspektID unter dem quittiert werden soll und vermerkt ihn als nicht erfolgreich angemeldet.
quittieren
- Quittierungs-Aspekt.public long arSParamGetVorhalten()
Liefert die Vorhaltezeit in Sekunden.
public boolean isArSParameterized()
Liefert Kennzeichen, ob der DataIdentNode ueber die Archivparametrierung/Simulation angelegt wurde oder wegen einer Archivanfrage.
public void rebuildIndexFileFlagWasCreated(ArchiveDataKind adk)
Zur Kennzeichnung, dass die changed-Datei nach einem Archivvorgang für diese DID erzeugt wurde. Vermeidet einen Plattenzugriff, um dies festzustellen.
adk
- Datensatzartpublic boolean isRebuildIndexFileFlagCreated(ArchiveDataKind adk)
Gibt an, ob seit Systemstart die Datei PersistenceManager#REBUILDINDEX_FILE_FLAG_NAME
nach einem Archivvorgang für diese DID erzeugt wurde. Wenn nicht, muss der ArchivTask die Datei erzeugen und DataIdentNode#rebuildIndexFileFlagWasCreated()
aufrufen, um für den Wiederanlauf nach einem ausserplanmaessigen Systemstop zu kennzeichnen, welche Datenidentifikation ueberprueft werden muss.
adk
- DatensatzartDataIdentNode#rebuildIndexFileFlagWasCreated()
aufgerufen wurde, sonst falsch.private void assignArrays()
public java.lang.String toString()
toString
in class java.lang.Object
public boolean hasIndexAssigned()