public PageResponse<QueryPageRow> queryMetaData(QueryMetadataPageRequest request) throws SerializationException { if (request == null) { throw new IllegalArgumentException("request cannot be null"); } if (request.getPageSize() != null && request.getPageSize() < 0) { throw new IllegalArgumentException("pageSize cannot be less than zero."); } // Setup parameters for generic repository query Map<String, String[]> queryMap = createQueryMap(request.getMetadata()); DateQuery[] dates = createDateQueryForRepository(request); long start = System.currentTimeMillis(); AssetItemIterator iterator = rulesRepository.query(queryMap, request.isSearchArchived(), dates); log.debug("Search time: " + (System.currentTimeMillis() - start)); List<QueryPageRow> rowList = new QueryMetadataPageRowBuilder().withPageRequest(request).withContent(iterator).build(); boolean bHasMoreRows = iterator.hasNext(); PageResponse<QueryPageRow> response = new PageResponseBuilder<QueryPageRow>() .withStartRowIndex(request.getStartRowIndex()) .withPageRowList(rowList) .withLastPage(!bHasMoreRows) .buildWithTotalRowCount( -1); // its impossible to know the exact selected count until we'v reached // the end of iterator long methodDuration = System.currentTimeMillis() - start; log.debug("Queried repository (Metadata) in " + methodDuration + " ms."); return response; }
/** @deprecated in favour of {@link #queryMetaData(QueryMetadataPageRequest)} */ public TableDataResult queryMetaData( final MetaDataQuery[] qr, Date createdAfter, Date createdBefore, Date modifiedAfter, Date modifiedBefore, boolean seekArchived, int skip, int numRows) throws SerializationException { if (numRows == 0) { throw new DetailedSerializationException( "Unable to return zero results (bug)", "probably have the parameters around the wrong way, sigh..."); } Map<String, String[]> q = new HashMap<String, String[]>() { { for (MetaDataQuery aQr : qr) { String vals = (aQr.valueList == null) ? "" : aQr.valueList.trim(); if (vals.length() > 0) { put(aQr.attribute, vals.split(",\\s?")); } } } }; DateQuery[] dates = new DateQuery[2]; dates[0] = new DateQuery( "jcr:created", DateUtil.isoDate(createdAfter), DateUtil.isoDate(createdBefore)); dates[1] = new DateQuery( AssetItem.LAST_MODIFIED_PROPERTY_NAME, DateUtil.isoDate(modifiedAfter), DateUtil.isoDate(modifiedBefore)); AssetItemIterator it = rulesRepository.query(q, seekArchived, dates); // Add Filter to check Permission List<AssetItem> resultList = new ArrayList<AssetItem>(); RepositoryFilter categoryFilter = new CategoryFilter(); while (it.hasNext()) { AssetItem ai = it.next(); resultList.add(ai); } return new TableDisplayHandler("searchresults").loadRuleListTable(resultList, skip, numRows); }