X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FRecord.java;h=2793ba9a104722d814e9acd61f9dc5d3f1cfd78a;hb=9f0427337a2dbc0ca7db55ae7b6812b6d4680344;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..2793ba9 100644 --- a/src/main/java/org/yaz4j/Record.java +++ b/src/main/java/org/yaz4j/Record.java @@ -1,47 +1,65 @@ 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; - private boolean disposed = false; +public class Record implements Cloneable { - Record(SWIGTYPE_p_ZOOM_record_p record) { - this.record = record; - } + private SWIGTYPE_p_ZOOM_record_p record; + private ResultSet rset; + private boolean disposed = false; - public void finalize() { - _dispose(); - } + Record(SWIGTYPE_p_ZOOM_record_p record, ResultSet rset) { + this.record = record; + this.rset = rset; + } - public byte[] get(String type) { - SWIGTYPE_p_int length = null; - return yaz4jlib.ZOOM_record_get_bytes(record, type, length); - } + protected Record(SWIGTYPE_p_ZOOM_record_p record) { + this.record = record; + } - public String render() { - return new String(get("render")); - } + @Override + public void finalize() { + _dispose(); + } - public byte[] getContent() { - return get("raw"); - } + public byte[] get(String type) { + if (type == null) + throw new NullPointerException("type cannot be null"); + return yaz4jlib.ZOOM_record_get_bytes(record, type); + } - public String getSyntax() { - return new String(get("syntax")); - } + public String render() { + return new String(get("render")); + } - public String getDatabase() { - return new String(get("database")); - } + public byte[] getContent() { + return get("raw"); + } + + public String getSyntax() { + return new String(get("syntax")); + } + + public String getDatabase() { + return new String(get("database")); + } + + @Override + 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); - record = null; - disposed = true; - } + void _dispose() { + if (!disposed) { + //was cloned, need to dealloc? + if (rset == null) { + yaz4jlib.ZOOM_record_destroy(record); + } + rset = null; + record = null; + disposed = true; } + } }