diff options
Diffstat (limited to 'sql/src/main/java/SQLite/Blob.java')
-rw-r--r-- | sql/src/main/java/SQLite/Blob.java | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/sql/src/main/java/SQLite/Blob.java b/sql/src/main/java/SQLite/Blob.java deleted file mode 100644 index 3de9f8a..0000000 --- a/sql/src/main/java/SQLite/Blob.java +++ /dev/null @@ -1,323 +0,0 @@ -package SQLite; - -import java.io.*; - -/** - * Internal class implementing java.io.InputStream on - * SQLite 3.4.0 incremental blob I/O interface. - */ - -class BlobR extends InputStream { - - /** - * Blob instance - */ - - private Blob blob; - - /** - * Read position, file pointer. - */ - - private int pos; - - /** - * Contruct InputStream from blob instance. - */ - - BlobR(Blob blob) { - this.blob = blob; - this.pos = 0; - } - - /** - * Return number of available bytes for reading. - * @return available input bytes - */ - - public int available() throws IOException { - int ret = blob.size - pos; - return (ret < 0) ? 0 : ret; - } - - /** - * Mark method; dummy to satisfy InputStream class. - */ - - public void mark(int limit) { - } - - /** - * Reset method; dummy to satisfy InputStream class. - */ - - public void reset() throws IOException { - } - - /** - * Mark support; not for this class. - * @return always false - */ - - public boolean markSupported() { - return false; - } - - /** - * Close this blob InputStream. - */ - - public void close() throws IOException { - blob.close(); - blob = null; - pos = 0; - } - - /** - * Skip over blob data. - */ - - public long skip(long n) throws IOException { - long ret = pos + n; - if (ret < 0) { - ret = 0; - pos = 0; - } else if (ret > blob.size) { - ret = blob.size; - pos = blob.size; - } else { - pos = (int) ret; - } - return ret; - } - - /** - * Read single byte from blob. - * @return byte read - */ - - public int read() throws IOException { - byte b[] = new byte[1]; - int n = blob.read(b, 0, pos, b.length); - if (n > 0) { - pos += n; - return b[0]; - } - return -1; - } - - /** - * Read byte array from blob. - * @param b byte array to be filled - * @return number of bytes read - */ - - public int read(byte b[]) throws IOException { - int n = blob.read(b, 0, pos, b.length); - if (n > 0) { - pos += n; - return n; - } - return -1; - } - - /** - * Read slice of byte array from blob. - * @param b byte array to be filled - * @param off offset into byte array - * @param len length to be read - * @return number of bytes read - */ - - public int read(byte b[], int off, int len) throws IOException { - if (off + len > b.length) { - len = b.length - off; - } - if (len < 0) { - return -1; - } - if (len == 0) { - return 0; - } - int n = blob.read(b, off, pos, len); - if (n > 0) { - pos += n; - return n; - } - return -1; - } -} - -/** - * Internal class implementing java.io.OutputStream on - * SQLite 3.4.0 incremental blob I/O interface. - */ - -class BlobW extends OutputStream { - - /** - * Blob instance - */ - - private Blob blob; - - /** - * Read position, file pointer. - */ - - private int pos; - - /** - * Contruct OutputStream from blob instance. - */ - - BlobW(Blob blob) { - this.blob = blob; - this.pos = 0; - } - - /** - * Flush blob; dummy to satisfy OutputStream class. - */ - - public void flush() throws IOException { - } - - /** - * Close this blob OutputStream. - */ - - public void close() throws IOException { - blob.close(); - blob = null; - pos = 0; - } - - /** - * Write blob data. - * @param v byte to be written at current position. - */ - - public void write(int v) throws IOException { - byte b[] = new byte[1]; - b[0] = (byte) v; - pos += blob.write(b, 0, pos, 1); - } - - /** - * Write blob data. - * @param b byte array to be written at current position. - */ - - public void write(byte[] b) throws IOException { - if (b != null && b.length > 0) { - pos += blob.write(b, 0, pos, b.length); - } - } - - /** - * Write blob data. - * @param b byte array to be written. - * @param off offset within byte array - * @param len length of data to be written - */ - - public void write(byte[] b, int off, int len) throws IOException { - if (b != null) { - if (off + len > b.length) { - len = b.length - off; - } - if (len <= 0) { - return; - } - pos += blob.write(b, off, pos, len); - } - } -} - -/** - * Class to represent SQLite3 3.4.0 incremental blob I/O interface. - * - * Note, that all native methods of this class are - * not synchronized, i.e. it is up to the caller - * to ensure that only one thread is in these - * methods at any one time. - */ - -public class Blob { - - /** - * Internal handle for the SQLite3 blob. - */ - - private long handle = 0; - - /** - * Cached size of blob, setup right after blob - * has been opened. - */ - - protected int size = 0; - - /** - * Return InputStream for this blob - * @return InputStream - */ - - public InputStream getInputStream() { - return (InputStream) new BlobR(this); - } - - /** - * Return OutputStream for this blob - * @return OutputStream - */ - - public OutputStream getOutputStream() { - return (OutputStream) new BlobW(this); - } - - /** - * Close blob. - */ - - public native void close(); - - /** - * Internal blob write method. - * @param b byte array to be written - * @param off offset into byte array - * @param pos offset into blob - * @param len length to be written - * @return number of bytes written to blob - */ - - native int write(byte[] b, int off, int pos, int len) throws IOException; - - /** - * Internal blob read method. - * @param b byte array to be written - * @param off offset into byte array - * @param pos offset into blob - * @param len length to be written - * @return number of bytes written to blob - */ - - native int read(byte[] b, int off, int pos, int len) throws IOException; - - /** - * Destructor for object. - */ - - protected native void finalize(); - - /** - * Internal native initializer. - */ - - private static native void internal_init(); - - static { - internal_init(); - } -} |