X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FResultSet.java;h=3d89bd7495b3b750aed389efa24b72b98887c94d;hb=33d1aad77498f4da7efd5623a10ca4a423dd5885;hp=300cbad2838454e5378d104d942a4f228ed6c5cd;hpb=1182e040f5a025caff6565e6e37a3a669e9354fb;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 300cbad..3d89bd7 100644 --- a/src/main/java/org/yaz4j/ResultSet.java +++ b/src/main/java/org/yaz4j/ResultSet.java @@ -1,57 +1,62 @@ 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 { - + //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 Record[] records = null; 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); - records = new Record[(int) size]; + this.conn = conn; } + @Override public void finalize() { - this.Dispose(); + this._dispose(); } - ResultSetOptionsCollection getResultSetOptions() { - return new ResultSetOptionsCollection(resultSet); + /** + * Read option by name. + * @param name option name + * @return option value + */ + public String option(String name) { + return yaz4jlib.ZOOM_resultset_option_get(resultSet, name); } - 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); - } + /** + * 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; + } - return this.records[index]; + public Record getRecord(int index) { + SWIGTYPE_p_ZOOM_record_p record = + yaz4jlib.ZOOM_resultset_record(resultSet, index); + return new Record(record, this); } - public int getSize() { - return (int) size; + public long getSize() { + return size; } - public void Dispose() { + 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; + conn = null; disposed = true; } }