Apache CMIS: Paging-Abfrageergebnis

Vor kurzem habe ich angefangen, Apache CMIS zu verwenden und die offizielle Dokumentation und Beispiele gelesen. Ich habe nichts über Paging-Abfrageergebnisse bemerkt.

Es gibt ein Beispiel zum Auflisten von Ordnerelementen und zum Festlegen von maxItemsPerPage mithilfe von operationContext. Es scheint jedoch, dass operationContext in der getChilder-Methode verwendet werden kann:

int maxItemsPerPage = 5;
int skipCount = 10;
CmisObject object = session.getObject(session.createObjectId(folderId));
Folder folder = (Folder) object;
OperationContext operationContext = session.createOperationContext();
operationContext.setMaxItemsPerPage(maxItemsPerPage);
ItemIterable<CmisObject> children = folder.getChildren(operationContext);
ItemIterable<CmisObject> page = children.skipTo(skipCount).getPage();

Dies ist in Ordnung, wenn es darum geht, einen Ordner aufzulisten. In meinem Fall geht es jedoch darum, Ergebnisse aus benutzerdefinierten Suchabfragen zu erhalten. Der grundlegende Ansatz ist:

String myType = "my:documentType";
ObjectType type = session.getTypeDefinition(myType);
PropertyDefinition<?> objectIdPropDef = type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID);
String objectIdQueryName = objectIdPropDef.getQueryName();
String queryString = "SELECT " + objectIdQueryName + " FROM " + type.getQueryName();
ItemIterable<QueryResult> results = session.query(queryString, false);
for (QueryResult qResult : results) {
    String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName);
    Document doc = (Document) session.getObject(session.createObjectId(objectId));
}

Dieser Ansatz ruft alle Dokumente in einem queryResult ab, ich möchte jedoch startIndex und limit einschließen. Die Idee wäre, so etwas zu schreiben:

ItemIterable<QueryResult> results = session.query(queryString, false).skipTo(startIndex).getPage(limit);

Ich bin mir bei diesem Teil nicht sicher: getPage (limit). Ist das der richtige Ansatz für Paging? Außerdem möchte ich die Gesamtzahl der Artikel abrufen, damit ich weiß, wie ich die maximale Anzahl der Artikel in der Tabelle festlegen kann, in der meine Artikel angezeigt werden. Es gibt eine Methode, aber etwas Merkwürdiges ist in der Dokumentation geschrieben, wie zum Beispiel, dass das Repository manchmal nicht über die maximalen Elemente informiert ist. Dies ist die Methode:

results.getTotalNumItems();

Ich habe etwas ausprobiert wie:

SELECT COUNT(*)...

aber das hat nicht geholfen :)

Könnten Sie mir bitte einen Rat geben, wie Sie aus einem Abfrageergebnis ein korrektes Paging durchführen können?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage