X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FResultSet.java;h=e2df507fa0a563288a6078950d8ec58dc338db15;hb=0fc1f63976f5c3022a7d1cb07fc01d33cddbd869;hp=766b99894a0763e40669bc7356fe4008036f471f;hpb=2caa42f8fcdbf463e7f8e94a9a9b9c578ffc2926;p=yaz4j-moved-to-github.git diff --git a/src/main/java/org/yaz4j/ResultSet.java b/src/main/java/org/yaz4j/ResultSet.java index 766b998..e2df507 100644 --- a/src/main/java/org/yaz4j/ResultSet.java +++ b/src/main/java/org/yaz4j/ResultSet.java @@ -1,10 +1,13 @@ package org.yaz4j; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.NoSuchElementException; import org.yaz4j.exception.ZoomException; import org.yaz4j.jni.SWIGTYPE_p_ZOOM_record_p; import org.yaz4j.jni.SWIGTYPE_p_ZOOM_resultset_p; +import org.yaz4j.jni.SWIGTYPE_p_p_ZOOM_record_p; import org.yaz4j.jni.yaz4jlib; /** @@ -78,6 +81,25 @@ public class ResultSet implements Iterable { } return new Record(record, this); } + + public List getRecords(long start, int count) throws ZoomException { + List out = new ArrayList(count); + SWIGTYPE_p_p_ZOOM_record_p recs = yaz4jlib.new_zoomRecordArray(count); + yaz4jlib.ZOOM_resultset_records(resultSet, recs, start, count); + for (int i = 0; i < count; i++) { + SWIGTYPE_p_ZOOM_record_p record = + yaz4jlib.zoomRecordArray_getitem(recs, i); + if (record == null) { + continue; + } + int errorCode = yaz4jlib.ZOOM_record_error(record, null, null, null); + if (errorCode != 0) { + throw new ZoomException("Record excpetion, code " + errorCode); + } + out.add(new Record(record, this)); + } + return out; + } @Override public Iterator iterator() { @@ -104,6 +126,12 @@ public class ResultSet implements Iterable { }; } + public ResultSet sort(String type, String spec) throws ZoomException { + int ret = yaz4jlib.ZOOM_resultset_sort1(resultSet, type, spec); + if (ret != 0) throw new ZoomException("Sorting resultset failed"); + return this; + } + public long getHitCount() { return size; }