Rename getSize => getHitCount
[yaz4j-moved-to-github.git] / src / main / java / org / yaz4j / ResultSet.java
index 74275a1..75bdc85 100644 (file)
@@ -1,21 +1,21 @@
 package org.yaz4j;
 
-import org.yaz4j.jni.SWIGTYPE_p_ZOOM_connection_p;
+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.yaz4jlib;
 
 public class ResultSet {
-
+    //for GC refcount
+    private Connection conn;
     private SWIGTYPE_p_ZOOM_resultset_p resultSet;
-    private SWIGTYPE_p_ZOOM_connection_p connection;
     private long size = 0;
     private boolean disposed = false;
 
-    ResultSet(SWIGTYPE_p_ZOOM_resultset_p resultSet, SWIGTYPE_p_ZOOM_connection_p connection) {
+    ResultSet(SWIGTYPE_p_ZOOM_resultset_p resultSet, Connection conn) {
         this.resultSet = resultSet;
-        this.connection = connection;
         size = yaz4jlib.ZOOM_resultset_size(this.resultSet);
+        this.conn = conn;
     }
 
     @Override
@@ -43,21 +43,28 @@ public class ResultSet {
       return this;
     }
 
-    public Record getRecord(int index) {
-      SWIGTYPE_p_ZOOM_record_p recordTemp = yaz4jlib.ZOOM_resultset_record(resultSet, index);
-      return new Record(recordTemp, this);
+    public Record getRecord(int index) throws ZoomException {
+      SWIGTYPE_p_ZOOM_record_p record = 
+        yaz4jlib.ZOOM_resultset_record(resultSet, index);
+      //may be out of range or unsupported syntax
+      if (record == null) {
+        return null;
+      }
+      int errorCode = yaz4jlib.ZOOM_record_error(record, null, null, null);
+      if (errorCode != 0) throw new ZoomException("Record excpetion, code " + errorCode);
+      return new Record(record, this);
     }
 
-    public long getSize() {
+    public long getHitCount() {
         return size;
     }
 
     void _dispose() {
         if (!disposed) {
             yaz4jlib.ZOOM_resultset_destroy(resultSet);
-            connection = null;
             resultSet = null;
+            conn = null;
             disposed = true;
         }
     }
-}
\ No newline at end of file
+}