Недавно я начал использовать Apache CMIS и прочитал официальную документацию и примеры. Я ничего не заметил о результатах поискового запроса.Apache CMIS: Результат запроса подкачки
Существует пример, показывающий, как элементы списка папок, установка maxItemsPerPage с помощью OperationContext, но мне кажется, что OperationContext может быть использован внутри метода getChilder:
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();
Это нормально, когда дело доходит до листинга папки и. Но мое дело - получение результатов пользовательского поискового запроса. Основной подход:
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));
}
Этот подход будет получать все документы в queryResult, но я хотел бы включить STARTINDEX и предел. Идея заключалась бы в следующем:
ItemIterable<QueryResult> results = session.query(queryString, false).skipTo(startIndex).getPage(limit);
Я не уверен в этой части: getPage (limit). Это правильный подход для подкачки? Также я хотел бы получить общее количество элементов, поэтому я мог бы знать, как настроить максимальные элементы в сетке, где будут отображаться мои элементы. Существует метод, но что-то странное написано в документах, например, иногда репозиторий не может знать о максимальных элементах. Это тот метод:
results.getTotalNumItems();
Я пытался что-то вроде:
SELECT COUNT(*)...
, но это не сделать трюк :)
Пожалуйста, не могли бы вы дать мне несколько советов, как это сделать правильный пейджинг из результата запроса?
Заранее спасибо.
спасибо, что получил. – Banana