Rework:ZugriffAnnotationsdienst
From Wiki
| « Packages und Klassen | Übersicht | Annotations-Ontologie » |
Contents |
Verwendungsbeispiele Annotationsdienst
Erstellen einer neuen Instanz
Beispiel:
BackendAnnotationService backendService = new BackendAnnotationServiceProxy(); AnnotationService annotationService = new AnnotationService(backendService);
Der (Frontend-) Annotationsdienst erwartet als Argument einen Backend-Annotationsdienst (Interface BackendAnnotationService). Übergibt man ihm eine Instanz der Klasse BackendAnnotationServiceProxy, so wird die Kommunikation von dieser Klasse automatisch über das Daffodil-Framework abgewickelt.
Annotation erstellen
Beispiel:
Annotation annotation = new Annotation();
annotation.setAnnotationType(Collections.singletonList(“Definition”));
annotation.setCreator(new Person(userId));
annotation.setTitle("Annotation title");
annotation.setText("Annotation text");
annotation.setSource(new Document(documentId));
Instanzen der Klasse Annotation speichern alle zu einer Annotation gehörigen Daten. Werden andere Objekte des Packages de.unidu.is.annotation.rework.ontology.classes.ServiceObjects verwendet wie z.B. Person, Folder oder Document, so ist zu beachten, dass die übergebene ID Teil einer URL wird und somit den Spezifikationen für URLs genügen muss. Annotation muss keine ID übergeben werden, da diese automatisch gesetzt wird.
Annotation hinzufügen
Beispiel:
Annotation annotation = new Annotation(annotationTypes, creator, title, source); annotationService.addAnnotation(annotation);
Eine Annotation wird mit Hilfe der Methode addAnnotation hinzugefügt.
Annotationen suchen
Annotation annotationPattern = new Annotation(); annotationPattern.setCreator(new Person(creatorId)); annotation.setAnnotationType(Collections.singletonList(“Definition”)); List annotations = annotationService.getAnnotations(annotationPattern,term,max);
Eine Suche kann mit der Methode getAnnotations durchgeführt werden. Die Suchkriterien werden als Argumente übergeben. Wird als erstes Argument eine Annotation übergeben, so werden nur die Annotationen zurückgeliefert, die die gleichen Werte haben (Query by Example). Die als zweites Argument übergebenen Terme werden für die Volltextsuche (Title, Text) mit PIRE verwendet. Das letzte Argument gibt die maximale Anzahl der Suchergebnisse an. Die beiden Suchkriterien können kombiniert werden oder auch beide null sein. In diesem Fall werden alle Annotationen zurückgegeben. Das Ergebnis ist eine Liste von Annotation-Instanzen.
Annotation laden
AnnotationUri annotationUri = (AnnotationUri) annotation.getSource(); Annotation anno = annotationService.getAnnotation(annoUri);
Damit nicht alle verknüpften Annotationen zu einer bestimmten Annotation immer mitübertragen werden, wird beispielsweise bei getSource nur eine Instanz der Klasse AnnotationUri zurückgegeben. Um die dazugehörige Annotation nachzuladen, muss diese Instanz nur an die Methode getAnnotation übergeben werden. Auch die Übergabe eines URI-Strings ist möglich.
Diskussionen (Annotations-Threads) laden
Document document = new Document(documentID) annotationList = annotationService.getAnnotationThread(document);
Alle Annotationen, die ein bestimmtes (annotierbares) Objekt (AnnotableObject) annotieren, erhält man, indem man dieses Objekt der Methode getAnnotationThread übergibt. Neben den direkten Annotationen - beispielsweise zu einem Dokument - erhält man so auch die Annotationen zu den Annotationen.
Ändern von Annotationen
… annotation.setTitle(newTitle); annotation.setText(newText); annotationService.saveAnnotation(new Person(userID), annotation);
Um eine Annotation zu ändern, können einfach die neuen Werte gesetzt werden und die geänderte Annotation der Methode saveAnnotation übergeben werden. Als erstes Argument wird der Benutzer erwartet, der diese Änderung durchführen möchte.
Löschen einer Annotation
… annotationService.removeAnnotation(new Person(authorID), annotation);
Die zu löschende Annotation wird zusammen mit der Person, die diese Annotation entfernen möchte, an die Methode removeAnnotation übergeben.
Ontologie laden
CheckNode rootElement = annotationService.getAnnotationOntology(new Person(userId));
getAnnotationOntology liefert die Annotations-Ontologie als Baum. Zurückgegeben wird das Wurzelelement. Als Argument wird der Benutzer erwartet.
Indexierung mit PIRE
Zum Indexieren aller Annotationen mit PIRE muss die Methode indexAllAnnotations im Annotationsagenten aufgerufen werden. Dazu muss eine entsprechende XML-Nachricht an den Service annotation gesendet werden, die wie folgt automatisch erstellt werden kann.
String xmlMessage =
AnnotationRequestMessage.createRequestMessage(
AnnotationRequestMessage.METHOD_indexAllAnnotations, null, null);
Hinweise
Wird die Klasse BackendAnnotationServiceProxy verwendet, so müssen alle Methoden der Klasse AnnotationService, die einen Rückgabewert haben, in einem eigenen Thread ausgeführt werden. Sonst wird eine Warnung ausgegeben.
| « Packages und Klassen | Übersicht | Annotations-Ontologie » |
