diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml index 32db2b0038dd54eedf56fec6c6c8c26cd1c56e50..33cd7525fbfc1b22edc7ea87ae2e57ae0d3f26cf 100644 --- a/oaipmh-core/pom.xml +++ b/oaipmh-core/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>oaipmh</artifactId> <groupId>info.textgrid.middleware</groupId> - <version>3.3.4</version> + <version>3.3.5</version> </parent> <groupId>info.textgrid.middleware</groupId> <artifactId>oaipmh-core</artifactId> diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java index 302675328eac3cb1df94daa028754fdc74967bc3..890419d4ac11403eb71c28c6171732f6044c62ed 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -168,57 +168,63 @@ public class OAIPMHUtilities { * @return A resumption token if applicable, null otherwise. */ public static ResumptionTokenType getResumptionToken(final long completeListSize, - final String resumptionToken, Map<String, Integer> cursorCollector, final String scrollID, - final int searchResponseSize, final int i) { - - log.info("Creating a ResumptionToken:\n " + - "CompleteListSize: " + completeListSize + "\n" + - "ResumptionToken: " + resumptionToken + "\n" + - "CursorCollector: " + cursorCollector + "\n" + - "ScrollID: " + scrollID + "\n" + - "SearchResponseSize: " + scrollID + "\n" + - "IterationStep: " + i); - - int cursor; - - // Three cases here: - // 1. Complete list size is > searchResponseSize and a token already is existing: we need to - // check hash map! - // 2. Complete list size is > searchResponseSize and we have no token: we do need one! - // 3. Complete list size is <= searchResponseSize (we do not need a token! do nothing!) - - if (completeListSize > searchResponseSize) { - ResumptionTokenType resTokenForResponse = new ResumptionTokenType(); - - if (resumptionToken != null && cursorCollector.containsKey(resumptionToken)) { - cursor = cursorCollector.get(resumptionToken).intValue() + i; - resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor)); - cursorCollector.put(scrollID, cursor); - } else { - resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize)); - cursorCollector.put(scrollID, searchResponseSize); - cursor = 0; - } - - // Set resumption token string if cursor is less then complete list size: More objects can be - // delivered! - if (cursor < completeListSize) { - resTokenForResponse.setValue(scrollID); - } - - // Remove resumption token string if cursor is bigger then or equal complete list size: This - // is the last response, no more objects are available! - if (cursor >= completeListSize) { - resTokenForResponse.setValue(""); - } - - // Set complete list size. - resTokenForResponse.setCompleteListSize(BigInteger.valueOf(completeListSize)); - - return resTokenForResponse; - } - - return null; - } + final String resumptionToken, Map<String, Integer> cursorCollector, final String scrollID, + final int searchResponseSize, final int i) { + + log.info("Creating a ResumptionToken:\n " + + "CompleteListSize: " + completeListSize + "\n" + + "ResumptionToken: " + resumptionToken + "\n" + + "CursorCollector: " + cursorCollector + "\n" + + "ScrollID: " + scrollID + "\n" + + "SearchResponseSize: " + scrollID + "\n" + + "IterationStep: " + i); + + int cursor; + + // Three cases here: + // 1. Complete list size is > searchResponseSize and a token already is existing: we need to + // check hash map! + // 2. Complete list size is > searchResponseSize and we have no token: we do need one! + // 3. Complete list size is <= searchResponseSize (we do not need a token! do nothing!) + + if (completeListSize > searchResponseSize) { + ResumptionTokenType resTokenForResponse = new ResumptionTokenType(); + + if (resumptionToken != null && cursorCollector.containsKey(resumptionToken)) { + cursor = cursorCollector.get(resumptionToken).intValue() + i; + if(cursor-searchResponseSize == 0) { + cursor *= 2; + } + resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor)); + cursorCollector.put(scrollID, cursor); + } else { + resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize)); + cursorCollector.put(scrollID, searchResponseSize); + cursor = searchResponseSize; + resTokenForResponse.setCursor(BigInteger.valueOf((long) cursor)); + + } + + // Set resumption token string if cursor is less then complete list size: More objects can be + // delivered! + if (cursor < completeListSize) { + resTokenForResponse.setValue(scrollID); + } + + // Remove resumption token string if cursor is bigger then or equal complete list size: This + // is the last response, no more objects are available! + if (cursor >= completeListSize) { + //cursor =; + resTokenForResponse.setValue(""); + } + + // Set complete list size. + resTokenForResponse.setCompleteListSize(BigInteger.valueOf(completeListSize)); + + return resTokenForResponse; + } + + return null; + } } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java index 50b75c1a22427eacf2067912695c3314144bd6f0..6652590d037622cbbcb58ee6bd82a467db7ea485 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -97,6 +97,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { String scrollID = scrollResp.getScrollId(); long completeListSize = scrollResp.getHits().totalHits(); + //long completeListSize = 70; //System.out.println(completeListSize); //System.out.println(completeListSize + " || " + artefactURIs.size()); if (completeListSize > 0) { diff --git a/oaipmh-webapp/pom.xml b/oaipmh-webapp/pom.xml index 5d49cbac1b189f893e8b2d2a0f46aa525e04eeb4..22da6ae4a3156c572759624f3f9c04557e47ae9a 100644 --- a/oaipmh-webapp/pom.xml +++ b/oaipmh-webapp/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>oaipmh</artifactId> <groupId>info.textgrid.middleware</groupId> - <version>3.3.4</version> + <version>3.3.5</version> </parent> <groupId>info.textgrid.middleware</groupId> <artifactId>oaipmh-webapp</artifactId> diff --git a/pom.xml b/pom.xml index a565323a92893435d9eb66a9967ced917ef955d5..572f428c4babcd646b2cc8e5fd4d41b99aaacca6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>info.textgrid.middleware</groupId> <artifactId>oaipmh</artifactId> - <version>3.3.4</version> + <version>3.3.5</version> <packaging>pom</packaging> <name>DARIAHDE :: OAI-PMH DataProvider</name> <properties>