Refactor.
[yaz4j-moved-to-github.git] / src / main / java / org / yaz4j / ResultSet.java
index b70a03e..74275a1 100644 (file)
@@ -5,62 +5,59 @@ 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
-{
-       private SWIGTYPE_p_ZOOM_resultset_p resultSet;  
-       private SWIGTYPE_p_ZOOM_connection_p connection;
-       private long size = 0 ;
-       private Record[] records = null ;
-       private boolean disposed = false;       
-       
-       ResultSet(SWIGTYPE_p_ZOOM_resultset_p resultSet, SWIGTYPE_p_ZOOM_connection_p connection)
-       {
-               this.resultSet = resultSet ;
-               this.connection = connection ;
-               size = yaz4jlib.ZOOM_resultset_size(this.resultSet);
-               records = new Record[(int)size];
-       }
-       
-       public void finalize()
-       {
-               this.Dispose();         
-       }       
+public class ResultSet {
 
-    ResultSetOptionsCollection getResultSetOptions()
-    {
-       return new ResultSetOptionsCollection(resultSet);
+    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) {
+        this.resultSet = resultSet;
+        this.connection = connection;
+        size = yaz4jlib.ZOOM_resultset_size(this.resultSet);
+    }
+
+    @Override
+    public void finalize() {
+        this._dispose();
+    }
+
+    /**
+     * Read option by name.
+     * @param name option name
+     * @return option value
+     */
+    public String option(String name) {
+      return yaz4jlib.ZOOM_resultset_option_get(resultSet, name);
+    }
+
+    /**
+     * Write option with a given name.
+     * @param name option name
+     * @param value option value
+     * @return result set (self) for chainability
+     */
+    public ResultSet option(String name, String value) {
+      yaz4jlib.ZOOM_resultset_option_set(resultSet, name, value);
+      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)
-       {
-               if ( records[index] == null)
-               {
-                       SWIGTYPE_p_ZOOM_record_p recordTemp = yaz4jlib.ZOOM_resultset_record(resultSet, index);
-                       records[index] = new Record(recordTemp, this);
-               }
-       
-               return this.records[index];
-       }
-       
-       public int getSize()
-       {
-               return (int)size ;
-       }
-       
-       public void Dispose()
-       {
-               if (! disposed )
-               {
-                       for( int i=0 ; i<records.length ; i++)
-                       {
-                               if (records[i] != null)
-                                       records[i].Dispose();
-                       }
 
-                       yaz4jlib.ZOOM_resultset_destroy(resultSet);
-                       connection = null;
-                       resultSet = null;
-                       disposed = true;
-               }
-       }
-}
+    public long getSize() {
+        return size;
+    }
+
+    void _dispose() {
+        if (!disposed) {
+            yaz4jlib.ZOOM_resultset_destroy(resultSet);
+            connection = null;
+            resultSet = null;
+            disposed = true;
+        }
+    }
+}
\ No newline at end of file