@Override public ListSetsResult retrieveSets(int offset, int length) { return new ListSetsResult(offset + length < this.sets.size(), this.sets.subList(offset, Math.min(offset + length, sets.size()))); }
@Override public ListItemIdentifiersResult getItemIdentifiers(List<ScopedFilter> filters, int offset, int length) throws OAIException { return new ListItemIdentifiersResult(offset + length < list.size(), new ArrayList<ItemIdentifier>(list.subList(offset, min(offset + length, list.size())))); }
@Override public ListItemsResults getItems(List<ScopedFilter> filters, int offset, int length) throws OAIException { return new ListItemsResults(offset + length < list.size(), new ArrayList<Item>(list.subList(offset, min(offset + length, list.size())))); }
for (int i = offset; i < (offset + length); i++) results.add(statics.get(i)); return new ListSetsResult(true, results); } else { log.debug("Offset + length greater or equal than static sets size"); int newLength = length - (statics.size() - offset); ListSetsResult res = setRepository.retrieveSets(0, newLength); results.addAll(res.getResults()); if (!res.hasTotalResults()) return new ListSetsResult(res.hasMore(), results); else return new ListSetsResult(res.hasMore(), results, res.getTotalResults() + statics.size()); int newOffset = offset - statics.size(); ListSetsResult res = setRepository.retrieveSets(newOffset, length); results.addAll(res.getResults()); if (!res.hasTotalResults()) return new ListSetsResult(res.hasMore(), results); else return new ListSetsResult(res.hasMore(), results, res.getTotalResults() + statics.size());
List<Item> results = result.getResults(); if (results.isEmpty()) throw new NoMatchesException(); log.debug("Now adding records to the OAI-PMH Output"); if (parameters.hasResumptionToken()) { currentResumptionToken = parameters.getResumptionToken(); } else if (result.hasMore()) { currentResumptionToken = parameters.extractResumptionToken(); res.withResumptionToken(resumptionTokenHelper.resolve(result.hasMore()));
@Override public ListSets handle(OAICompiledRequest parameters) throws OAIException, HandlerException { ListSets result = new ListSets(); if (!getRepository().getSetRepository().supportSets()) throw new DoesNotSupportSetsException(); int length = getRepository().getConfiguration().getMaxListSets(); ListSetsResult listSetsResult = setRepositoryHelper.getSets(getContext(), getOffset(parameters), length); List<Set> sets = listSetsResult.getResults(); if (sets.isEmpty() && parameters.getResumptionToken().isEmpty()) throw new NoMatchesException(); if (sets.size() > length) sets = sets.subList(0, length); for (Set set : sets) { result.getSets().add(set.toOAIPMH()); } ResumptionToken.Value currentResumptionToken = new ResumptionToken.Value(); if (parameters.hasResumptionToken()) { currentResumptionToken = parameters.getResumptionToken(); } else if (listSetsResult.hasMore()) { currentResumptionToken = parameters.extractResumptionToken(); } ResumptionTokenHelper resumptionTokenHelper = new ResumptionTokenHelper(currentResumptionToken, getRepository().getConfiguration().getMaxListSets()); result.withResumptionToken(resumptionTokenHelper.resolve(listSetsResult.hasMore())); return result; }
List<ItemIdentifier> itemIdentifiers = listItemIdentifiersResult.getResults(); if (itemIdentifiers.isEmpty()) throw new NoMatchesException(); if (parameters.hasResumptionToken()) { currentResumptionToken = parameters.getResumptionToken(); } else if (listItemIdentifiersResult.hasMore()) { currentResumptionToken = parameters.extractResumptionToken(); result.withResumptionToken(resumptionTokenHelper.resolve(listItemIdentifiersResult.hasMore()));
List<Item> results = result.getResults(); if (results.isEmpty()) throw new NoMatchesException(); for (Item i : results) if (parameters.hasResumptionToken()) { currentResumptionToken = parameters.getResumptionToken(); } else if (result.hasMore()) { currentResumptionToken = parameters.extractResumptionToken(); res.withResumptionToken(resumptionTokenHelper.resolve(result.hasMore()));
@Override public ListSetsResult retrieveSets(int offset, int length) { logger.fine("calling retrieveSets()"); List<OAISet> dataverseOAISets = setService.findAllNamedSets(); List<Set> XOAISets = new ArrayList<Set>(); if (dataverseOAISets != null) { for (int i = 0; i < dataverseOAISets.size(); i++) { OAISet dataverseSet = dataverseOAISets.get(i); Set xoaiSet = new Set(dataverseSet.getSpec()); xoaiSet.withName(dataverseSet.getName()); XOAIMetadata xMetadata = new XOAIMetadata(); Element element = new Element("description"); element.withField("description", dataverseSet.getDescription()); xMetadata.getElements().add(element); xoaiSet.withDescription(xMetadata); XOAISets.add(xoaiSet); } } return new ListSetsResult(offset + length < XOAISets.size(), XOAISets.subList(offset, Math.min(offset + length, XOAISets.size()))); }
@Override public ListItemIdentifiersResult getItemIdentifiers(List<ScopedFilter> filters, int offset, int length, String setSpec, Date from, Date until) throws OAIException { logger.fine("calling getItemIdentifiers; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); List<OAIRecord> oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); logger.fine("total " + oaiRecords.size() + " returned"); List<ItemIdentifier> xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { OAIRecord record = oaiRecords.get(i); xoaiItems.add(new Xitem(record)); } // Run a second pass, looking for records in this set that occur // in *other* sets. Then we'll add these multiple sets to the // formatted output in the header: addExtraSets(xoaiItems, setSpec, from, until); boolean hasMore = offset + length < oaiRecords.size(); ListItemIdentifiersResult result = new ListItemIdentifiersResult(hasMore, xoaiItems); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; } return new ListItemIdentifiersResult(false, xoaiItems); }
@Override public ListItemsResults getItems(List<ScopedFilter> filters, int offset, int length, String setSpec, Date from, Date until) throws OAIException { logger.fine("calling getItems; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); List<OAIRecord> oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); logger.fine("total " + oaiRecords.size() + " returned"); List<Item> xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { OAIRecord oaiRecord = oaiRecords.get(i); Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { Xitem xItem = new Xitem(oaiRecord).withDataset(dataset); xoaiItems.add(xItem); } } addExtraSets(xoaiItems, setSpec, from, until); boolean hasMore = offset + length < oaiRecords.size(); ListItemsResults result = new ListItemsResults(hasMore, xoaiItems); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; } return new ListItemsResults(false, xoaiItems); }