Yes - A ResultSet isn't Iterable because you can only read it once
unless you do something like ResultSetFactory.makeRewindable,
Hence converting to a stream (.sequential() if ordered!)) is nice.
If you are throwing away the part of the results outside the
startOffset/rowsCount slice, you can add OFFSET & LIMIT to the query
then the query engine/server can do it, resulting in less bytes.
If you want the client to control it, the streams way is good.
Andy
On 16/09/15 16:27, [email protected] wrote:
One option: Jena is now using Java 8, so you can use the Streams API to do this:
https://stackoverflow.com/questions/29273705/how-to-paginate-a-list-of-objects-in-java-8
ResultSet is an Iterator, so you can convert it to a Stream.
---
A. Soroka
The University of Virginia Library
On Sep 16, 2015, at 11:19 AM, Zen 98052 <[email protected]> wrote:
Any idea on how to do the paging on the results set?
For example in this code:
ResultSet rs = qe.execSelect();
I was thinking to use com.google.common.collect.FluentIterable, so let say I
have the start offset and rows count values.
To do the paging logic in naive way would be something like:
FluentIterable<QuerySolution> newIterator = FluentIterable.from(rs);
newIterator.skip(startOffset);
newIterator.limit(rowsCount);
Unfortunately the first line doesn't work (the ResultSet type is not type of
Iterable as expected by FluentIterable).
Let me know the right way of paging the query results.
Thanks,
Z