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


Reply via email to