Die Klasse KeyDescriptor beschreibt die Position, Länge sowie weitere Eigenschaften eines bestimmten Schlüsselfeldes innerhalb eines Satzes einer index-sequentiellen Datei (Schlüsselbeschreibung). Sie stellt Methoden für den Zugriff auf diese Schlüsseleigenschaften einer index-sequentiellen Datei bereit.
Ein KeyDescriptor-Objekt dient zum Erzeugen oder Extrahieren eines konkreten Schlüsselwertes. Für ISAM wurden entsprechende Implementierungen dieser abstrakten Klasse bereitgestellt. Sie können also derartige KeyDescriptor-Objekte selbst erzeugen oder aber über die Methoden der Klasse KeyedAccessRecordFile bereitstellen lassen.
Arbeiten Sie auf einer ISAM-Datei mit selbst erzeugten Schlüsselbeschreibungen, müssen Sie selbstverständlich sorgfältig darauf achten, dass diese zu den in der Datei definierten Schlüsseln passen.
Ein KeyDescriptor-Objekt ist serialisierbar und kann deshalb für entfernte Methoden-Aufrufe (RMI) verwendet werden.
Methoden
Die Methode getPosition() liefert die Position des Schlüsselfeldes in einem Satz.
Die Methode getLength() liefert die Länge des Schlüsselfeldes.
Die Methode getName() liefert den Namen eines benannten Schlüssels, bzw. null bei unbenannten Schlüsseln. Bei sekundären Schlüsseln wird also immer der eindeutige Name geliefert, für den primären Schlüssel hängt es von der Implementierung ab, ob ein Name geliefert wird.
Mit der Methode hasDuplicates() wird geprüft, ob für diesen Schlüssel gleiche Schlüsselwerte in verschiedenen Sätzen erlaubt sind.
Ob es sich bei diesem Schlüssel um einen primären oder sekundären Schlüssel handelt, wird mit den Methoden isPrimary() oder isSecondary() geprüft.
PrimaryKeyDescriptorISAM
Die Klasse PrimaryKeyDescriptorISAM im Package com.fujitsu.ts.jrio.DMS ist eine Implementierung der abstrakten Klasse KeyDescriptor und repräsentiert den primären Schlüssel einer ISAM-Datei. Die Klasse bietet nur genau die Methoden, die die abstrakte Klasse vorschreibt sowie Konstruktoren zur Erzeugung von Schlüsselbeschreibungen. Folgende ISAM-spezifischen Besonderheiten gelten:
Die Schlüsselposition muss ein Wert zwischen 0 und 32767 sein. D.h. aber nicht, dass diese Werte grundsätzlich sinnvoll sind. Die tatsächlich für die I/O verwendbaren Werte hängen noch von anderen Einflussfaktoren (Blockgröße, Satzformat, Schlüssellänge) ab, die aber vom Konstruktor nicht geprüft werden können.
Die Länge des Schlüssels muss ein Wert zwischen 1 und 255 sein.
Der primäre ISAM-Schlüssel hat keinen Namen, daher liefert die Methode getName() immer null.
SecondaryKeyDescriptorISAM
Die Klasse SecondaryKeyDescriptorISAM im Package com.fujitsu.ts.jrio.DMS ist eine Implementierung der abstrakten Klasse KeyDescriptor und repräsentiert einen sekundären Schlüssel einer ISAM-Datei. Die Klasse bietet nur genau die Methoden, die die abstrakte Klasse vorschreibt sowie Konstruktoren zur Erzeugung von Schlüsselbeschreibungen. Folgende ISAM-spezifischen Besonderheiten gelten:
Die Schlüsselposition muss ein Wert zwischen 0 und 32767 sein. D.h. aber nicht, dass diese Werte grundsätzlich sinnvoll sind. Die tatsächlich für die I/O verwendbaren Werte hängen noch von anderen Einflussfaktoren (Blockgröße, Satzformat, Schlüssellänge) ab, die aber vom Konstruktor nicht geprüft werden können.
Die Länge des Schlüssels muss ein Wert zwischen 1 und 127 sein.
Ein sekundärer ISAM-Schlüssel muss einen eindeutigen Namen von maximal 8 Zeichen Länge haben, der den DMS-Vorschriften genügt. Groß-/Kleinschreibung wird bei diesen Namen ignoriert und der Name wird von getName() immer in Großbuchstaben geliefert.