@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; }
} else { if (!setRepositoryHelper.exists(getContext(), parameters.getSet())) throw new NoMatchesException(); if (parameters.hasFrom() && !parameters.hasUntil()) result = itemRepositoryHelper.getItems(getContext(), offset, if (results.isEmpty()) throw new NoMatchesException(); log.debug("Now adding records to the OAI-PMH Output"); for (Item i : results)
} else { if (!getRepository().getSetRepository().exists(parameters.getSet()) && !getContext().hasSet(parameters.getSet())) throw new NoMatchesException(); if (itemIdentifiers.isEmpty()) throw new NoMatchesException();
if (results.isEmpty()) throw new NoMatchesException(); for (Item i : results) res.withRecord(this.createRecord(parameters, i));