refactored AppData stream classes so they are returned from the IClientAppdata interf...
[vamsas.git] / src / uk / ac / vamsas / client / AppDataInputStream.java
diff --git a/src/uk/ac/vamsas/client/AppDataInputStream.java b/src/uk/ac/vamsas/client/AppDataInputStream.java
new file mode 100644 (file)
index 0000000..0b021aa
--- /dev/null
@@ -0,0 +1,53 @@
+/**
+ * 
+ */
+package uk.ac.vamsas.client;
+
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.jar.JarInputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author jimp
+ * LATER: this may not be a necessary or useful class to return from IClientAppdata get*InputStream() methods
+ */
+public class AppDataInputStream extends DataInputStream implements DataInput {
+  private Log log = LogFactory.getLog(AppDataInputStream.class);
+  private boolean isOpen = false;
+  /**
+   * Wrapper for writing to/from AppData Entries in a Vamsas Document.
+   */
+  public AppDataInputStream(InputStream inputstream) {
+    super(inputstream);
+    isOpen=true;
+  }
+
+  /* (non-Javadoc)
+   * @see java.io.FilterInputStream#close()
+   */
+  public void close() throws IOException {
+    if (!isOpen) {
+      log.debug("close() called on closed AppDataInputStream.");
+      // throw new IOException("Attempt to close an already closed AppDataInputStream");
+    } else {
+      isOpen=false;
+    }
+  }
+
+  /**
+   * Will return zero if stream has been closed.
+   * @see java.io.FilterInputStream#available()
+   */
+  public int available() throws IOException {
+    if (isOpen)
+      return super.available();
+    else
+      return 0;
+  }
+  
+}