@Override protected PageProviderDefinition getPageProviderDefinition() { String query = extractQueryFromRequest(ctx.getRequest()); CoreQueryPageProviderDescriptor desc = new CoreQueryPageProviderDescriptor(); desc.setPattern(query); if (maxResults != null && !maxResults.isEmpty() && !maxResults.equals("-1")) { // set the maxResults to avoid slowing down queries desc.getProperties().put("maxResults", maxResults); } return desc; }
@SuppressWarnings("unchecked") @OperationMethod public PaginableDocumentModelListImpl run() throws Exception { PageProviderService pps = Framework.getLocalService(PageProviderService.class); List<SortInfo> sortInfos = null; if (sortInfoAsStringList != null) { sortInfos = new ArrayList<SortInfo>(); for (String sortInfoDesc : sortInfoAsStringList) { SortInfo sortInfo; if (sortInfoDesc.contains("|")) { String[] parts = sortInfoDesc.split("|"); sortInfo = new SortInfo(parts[0], Boolean.parseBoolean(parts[1])); } else { sortInfo = new SortInfo(sortInfoDesc, true); } sortInfos.add(sortInfo); } } Object[] parameters = null; if (strParameters != null && !strParameters.isEmpty()) { parameters = strParameters.toArray(new String[strParameters.size()]); // expand specific parameters for (int idx = 0; idx < parameters.length; idx++) { String value = (String) parameters[idx]; if (value.equals(CURRENT_USERID_PATTERN)) { parameters[idx] = session.getPrincipal().getName(); } else if (value.equals(CURRENT_REPO_PATTERN)) { parameters[idx] = session.getRepositoryName(); } } } Map<String, Serializable> props = new HashMap<String, Serializable>(); props.put(CoreQueryDocumentPageProvider.CORE_SESSION_PROPERTY, (Serializable) session); if (query == null && (providerName == null || providerName.length() == 0)) { // provide a defaut query query = "SELECT * from Document"; } Long targetPage = null; if (page != null) { targetPage = Long.valueOf(page.longValue()); } Long targetPageSize = null; if (pageSize != null) { targetPageSize = Long.valueOf(pageSize.longValue()); } if (query != null) { CoreQueryPageProviderDescriptor desc = new CoreQueryPageProviderDescriptor(); desc.setPattern(query); return new PaginableDocumentModelListImpl( (PageProvider<DocumentModel>) pps.getPageProvider("", desc, sortInfos, targetPageSize, targetPage, props, parameters)); } else { return new PaginableDocumentModelListImpl( (PageProvider<DocumentModel>) pps.getPageProvider( providerName, sortInfos, targetPageSize, targetPage, props, parameters)); } }