08fd6794f74b8c18400e1628e9cad1bce9278de0
[yaz4j-moved-to-github.git] / src / main / java / org / yaz4j / Record.java
1 package org.yaz4j;
2
3 import org.yaz4j.jni.SWIGTYPE_p_ZOOM_record_p;
4 import org.yaz4j.jni.yaz4jlib;
5
6 public class Record implements Cloneable {
7
8   private SWIGTYPE_p_ZOOM_record_p record;
9   private ResultSet rset;
10   private boolean disposed = false;
11
12   Record(SWIGTYPE_p_ZOOM_record_p record, ResultSet rset) {
13     this.record = record;
14     this.rset = rset;
15   }
16
17   protected Record(SWIGTYPE_p_ZOOM_record_p record) {
18     this.record = record;
19   }
20
21   public void finalize() {
22     _dispose();
23   }
24
25   public byte[] get(String type) {
26     return yaz4jlib.ZOOM_record_get_bytes(record, type);
27   }
28
29   public String render() {
30     return new String(get("render"));
31   }
32
33   public byte[] getContent() {
34     return get("raw");
35   }
36
37   public String getSyntax() {
38     return new String(get("syntax"));
39   }
40
41   public String getDatabase() {
42     return new String(get("database"));
43   }
44
45   public Object clone() {
46     SWIGTYPE_p_ZOOM_record_p clone = yaz4jlib.ZOOM_record_clone(record);
47     return new Record(clone);
48   }
49
50   void _dispose() {
51     if (!disposed) {
52       //was cloned, need to dealloc?
53       if (rset == null) {
54         yaz4jlib.ZOOM_record_destroy(record);
55       }
56       rset = null;
57       record = null;
58       disposed = true;
59     }
60   }
61 }