Expose ZOOM query object
[yaz4j-moved-to-github.git] / src / main / java / org / yaz4j / Package.java
1 package org.yaz4j;
2
3 import org.yaz4j.jni.SWIGTYPE_p_ZOOM_package_p;
4 import org.yaz4j.jni.yaz4jlib;
5
6 /**
7  * Allows to perform an extended-service operation.
8  * 
9  * Once created, a package is configured by means of options, then the package 
10  * is send and the result is inspected (again, by means of options).
11  * 
12  * @see org.yaz4j.ConnectionExtended#getPackage(java.lang.String)
13  * 
14  * @author jakub
15  */
16 public class Package {
17
18   private SWIGTYPE_p_ZOOM_package_p pack;
19   private ConnectionExtended connection;
20   private String type;
21
22   Package(SWIGTYPE_p_ZOOM_package_p pack, ConnectionExtended connection,
23     String type) {
24     this.type = type;
25     this.connection = connection;
26     this.pack = pack;
27   }
28
29   public void finalize() {
30     _dispose();
31   }
32
33   /**
34    * Write option for a specified key
35    * @param key option name
36    * @param value option value
37    * @return package (self) for chainability
38    */
39   public Package option(String key, String value) {
40     yaz4jlib.ZOOM_package_option_set(pack, key, value);
41     return this;
42   }
43
44   /**
45    * Read option for a specified key.
46    * @param key option name
47    * @return option value
48    */
49   public String option(String key) {
50     return yaz4jlib.ZOOM_package_option_get(pack, key);
51   }
52
53   /**
54    * Send the package.
55    */
56   public void send() {
57     yaz4jlib.ZOOM_package_send(pack, type);
58   }
59
60   void _dispose() {
61     if (pack != null) {
62       yaz4jlib.ZOOM_package_destroy(pack);
63       connection = null;
64       pack = null;
65     }
66   }
67 }