Hi Tim,
thans for your advice. My code checkes the returend limit and offset, and uses them to calculate next offset and limit. Besides that, what I exepct it that endOfRecords shoud be true if returned fragment is the end of recoeds.
org.gbif.api.model.common.paging.PagingResponse#isEndOfRecords() contains
if (count != null) { return count < offset + limit; } else if (results != null) { return results.size() < limit; }
I suspect it should be
if (count != null) { return count <= offset + limit; } else if (results != null) { return results.size() <= limit; }
It doesn't explain, however, the result of
http://api.gbif.org/v1/species/search?q=Puma&rank=GENUS&limit=60&...
which satisfies count < offset + limit. I guess org.gbif.api.model.common.paging.PagingResponse.endOfRecord is set to be Boolean.FALSE so it returns false endOfRecord.
Regards, James
============================= From: Tim Robertson trobertson@gbif.org Subject: Re: [API-users] Usage of endOfRecords Date: Mon, 22 Dec 2014 10:49:13 +0100
The APIs will respect the limit you pass in (e.g. 20 or 50 etc) but sometimes will impose a hard ceiling on the limit (e.g. you may request 10000 but only get 1000 or less back in some APIs). Therefore you should always check the count returned in the response in order to know how to calculate your next offset.