Nutzung vorhandener Topic-Maps eines Topic-Map-Systems
Der Schlüssel zur Nutzung vorhandener Topic-Maps eines Topic-Map-Systems ist der Base-Locator. Er dient, wie bereits erwähnt, als eindeutiger Identifier jeder Topic-Map innerhalb eines Topic-Map-System. Mit seiner Hilfe können vorhandene Topic-Maps abgefragt werden.
Das folgende Beispiel demonstriert dieses Vorgehen, wenn die den Base-Locator kennen:
// Abfragen einer Topic-Map
TopicMap tm = tmSystem.getTopicMap("http://www.ilmenau-guide.com");
// Ist die Topic-Map überhaupt vorhanden?
if (tm == null) {
System.err.println("Topic Map nicht vorhanden");
}
Mit getTopicMap des Topic-Map-System erhalten Sie die entsprechende Topic-Map, oder null wenn keine Topic Map mit dem entsprechenden Base-Locator vorhanden ist. Mit Hilfe der Abfrage if (tm == null) können Sie sicherstellen, dass eine Topic-Map vorhanden ist. Überprüfen Sie dies nicht explizit, kann ein Fehler (NullPointerException) auftreten und Ihre Anwendung stürzt ab. Diese Abfrage soll also sicherstellen, dass auch wirklich eine Topic-Map vorhanden ist und abgefragt werden konnte.
Da ein Topic-Map-System mehrere Topic-Maps verwaltet, soll nun demonstriert werden, wie Sie alle Topic-Maps eines Systems abfragen. Auch hierbei ist der Base-Locator wieder der Schlüssel zu den Topic-Maps. Behilflich dabei ist die Funktion getBaseLocators des Topic-Map-Systems. Diese Funktion gibt eine Menge von Base-Locators zurück. Das folgende Beispiel demonstriert einen möglichen Ansatz zur Abfrage aller vorhandenen Topic-Maps eines Topic-Map-Systems:
// ermitteln aller Base-Locator
HashSet baseLocators = tmSystem.getBaseLocators();
// Iterator der Base-Locator erstellen
Iterator locatorIterator = baseLocators.iterator();
// Ausgabe Anzahl der Topic-Maps innerhalb des Systems
System.out.println("Anzahl der Topic-Maps: " + baseLocators.size());
// Iterieren über alle Base-Locator
while (locatorIterator.hasNext()) {
// nächsten Locator ermitteln
Locator tmLocator = (Locator) locatorIterator.next();
// Topic-Map abfragen
TopicMap tm = tmSystem.getTopicMap(tmLocator);
}
Die Funktion getBaseLocators liefert niemals null, sondern immer eine Menge zurück. Diese Menge kann auch eine leere Menge sein, also keine Base-Locators enthalten. Dann sind keine Topic-Maps im Topic-Map-System vorhanden.
Innerhalb der while-Schleife können Sie beliebige Abfragen mit Hilfe der Base-Locator vornehmen, um eine ganz bestimmte Topic-Map zu erhalten.
Neben der Erzeugung und der Nutzung einer Topic-Map, kann es erforderlich sein, eine Topic Map aus einem Topic-Map-System zu entfernen. Das Vorgehen soll im nächsten Abschnitt besprechen werden.