X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FRecord.java;h=e0a0a529d050695c9b0079f9dd266d407e5b37e4;hb=6b8d9e4304d6be4720a715f5215495228d93df5f;hp=977ee05db74712b284ac2639dce2e10e60a4c54f;hpb=4a60cc44a7daa898768cf0472af07d991192a8dd;p=yaz4j-moved-to-github.git diff --git a/src/main/java/org/yaz4j/Record.java b/src/main/java/org/yaz4j/Record.java index 977ee05..e0a0a52 100644 --- a/src/main/java/org/yaz4j/Record.java +++ b/src/main/java/org/yaz4j/Record.java @@ -1,14 +1,19 @@ package org.yaz4j; import org.yaz4j.jni.SWIGTYPE_p_ZOOM_record_p; -import org.yaz4j.jni.SWIGTYPE_p_int; import org.yaz4j.jni.yaz4jlib; -public class Record { - private SWIGTYPE_p_ZOOM_record_p record = null; +public class Record implements Cloneable { + private SWIGTYPE_p_ZOOM_record_p record; + private ResultSet rset; private boolean disposed = false; - Record(SWIGTYPE_p_ZOOM_record_p record) { + Record(SWIGTYPE_p_ZOOM_record_p record, ResultSet rset) { + this.record = record; + this.rset = rset; + } + + protected Record(SWIGTYPE_p_ZOOM_record_p record) { this.record = record; } @@ -17,8 +22,7 @@ public class Record { } public byte[] get(String type) { - SWIGTYPE_p_int length = null; - return yaz4jlib.ZOOM_record_get_bytes(record, type, length); + return yaz4jlib.ZOOM_record_get_bytes(record, type); } public String render() { @@ -37,9 +41,17 @@ public class Record { return new String(get("database")); } + public Object clone() { + SWIGTYPE_p_ZOOM_record_p clone = yaz4jlib.ZOOM_record_clone(record); + return new Record(clone); + } + void _dispose() { if (!disposed) { - yaz4jlib.ZOOM_record_destroy(record); + //was cloned, need to dealloc? + if (rset == null) + yaz4jlib.ZOOM_record_destroy(record); + rset = null; record = null; disposed = true; }