package org.yaz4j;
-import org.yaz4j.jni.SWIGTYPE_p_ZOOM_connection_p;
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 {
+ //for GC refcount
+ private Connection conn;
+ private SWIGTYPE_p_ZOOM_resultset_p resultSet;
+ private long size = 0;
+ private boolean disposed = false;
- ResultSetOptionsCollection getResultSetOptions()
- {
- return new ResultSetOptionsCollection(resultSet);
+ ResultSet(SWIGTYPE_p_ZOOM_resultset_p resultSet, Connection conn) {
+ this.resultSet = resultSet;
+ size = yaz4jlib.ZOOM_resultset_size(this.resultSet);
+ this.conn = conn;
}
-
- 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;
- }
- }
+ @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 record =
+ yaz4jlib.ZOOM_resultset_record(resultSet, index);
+ return new Record(record, this);
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ void _dispose() {
+ if (!disposed) {
+ yaz4jlib.ZOOM_resultset_destroy(resultSet);
+ resultSet = null;
+ conn = null;
+ disposed = true;
+ }
+ }
}