Topic-Name-Types

Seit dem Datenmodell XTM 2.0 können Topic-Names auch genau einen Topic-Name-Type zugewiesen bekommen. Diesen Typ, können Sie ähnlich wie die Scopes, direkt beim Erstellen oder nachträglich zuweisen. Das folgende Beispiel zeigt zunächst das Zuweisen beim Erstellen des Topic-Names:

// Topic für den Type Seitentitel
Topic pageTitle = tm.createTopic();

// Versuch des Hinzufügens des neuen Topic-Name-Types
try {
  // Erstellen des Topic-Names mit Type
  TopicName tn1 = t1.createTopicName("Website der TU Ilmenau", pageTitle, null);
}
// Fehlerbehandlung bei altem Datenmodell
catch (UnsupportedOperationException usoe) {
  // Ausgabe der Fehlermeldung
  System.err.println("Das Datenmodell unterstützt keine Topic-Name-Types");
}
// Fehlerbehandlung bei Merging-Fehlern
catch (MergeException me) {
  // Ausgabe bei Merging-Fehlern
  System.err.println("Fehler beim Merging");
}

Beim Erstellen des Topic-Names wird als zweiter Parameter das Topic das den Type bestimmt übergeben. In diesem Fall wird ein Topic-Name erstellt, der als Seitenname fungieren soll.

Natürlich kann der Topic-Name-Type auch nachträglich hinzugefügt werden. Dabei gibt es allerdings vier Sachen zu beachten:

  1. Nur das Datenmodell XTM 2.0 unterstützt Topic-Name-Types. Verwenden Sie ein anderes Datenmodell, dass Topic-Name-Types nicht unterstützt, wird der Fehler UnsupportedOperationException ausgelöst. Diesen Fehler sollten Sie in jedem Fall mit einer Fehlerbehandlung abfangen.
  2. Durch das Zuweisen des Topic-Name-Types kann es notwendig werden, dass das aktuelle Topic gemerged wird. Dabei kann es zu Fehlern kommen und es wird eine MergeException ausgelöst. Diesen Fehler können Sie ebenfalls mit einer entsprechenden Fehlerbehandlung abfangen.
  3. Sollte der Topic-Name bereits einen Topic-Name-Type besitzen, wird dieser bei der Zuweisung des neuen Types überschrieben.
  4. Wenn Sie als Topic-Name-Type null übergeben, wird der Topic-Name-Type entfernt. Der Topic-Name hat dann keinen Type mehr.

Um diese zu verdeutlichen, wird im folgenden Beispiel zunächst ein neuer Topic-Name-Type zugewiesen und eine entsprechende Fehlerbehandlung implementiert.

// neue Topic für Type
Topic documentTitle = tm.createTopic();

// Versuch des Hinzufügens des neuen Topic-Name-Types
try {
  // Type setzen
  tn1.setType(documentTitle);
}
// Fehlerbehandlung bei altem Datenmodell
catch (UnsupportedOperationException usoe) {
  // Ausgabe der Fehlermeldung
  System.err.println("Das Datenmodell unterstützt keine Topic-Name-Types");
}
// Fehlerbehandlung bei Merging-Fehlern
catch (MergeException me) {
  // Ausgabe bei Merging-Fehlern
  System.err.println("Fehler beim Merging");
}

Als letztes Beispiel soll nun das Löschen eines Topic-Name-Types demonstriert werden. Wie bereits o.g. muss dazu der Funktion null übergeben werden. Auf die nötige Fehlerbehandlung soll verzichtet werden. Sie entspricht den vorangegangen Beispielen und soll durch die Punkte nur angedeutet werden.

...
// Löschen eines Topic-Name-Types
tn1.setType(null);
...

Durch die Vorgehensweise können den Type, der ein Topic-Name näher beschreibt, entfernen.

Im nächsten Abschnitt soll kurz das Löschen eines kompletten Topic-Names erläutert werden.

Leave a Reply