Add some docu on Connection
[yaz4j-moved-to-github.git] / src / main / java / org / yaz4j / Record.java
index 977ee05..e0a0a52 100644 (file)
@@ -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;
         }