All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src-main.org.awakefw.commons.jdbc.abstracts.AbstractBlob Maven / Gradle / Ivy

Go to download

Awake FILE is a secure Open Source framework that allows to program very easily file uploads/downloads and RPC through http. File transfers include powerful features like file chunking and automatic recovery mechanism. Security has been taken into account from the design: server side allows to specify strong security rules in order to protect the files and to secure the RPC calls.

There is a newer version: 3.0
Show newest version
/*
 * This file is part of Awake FILE. 
 * Awake FILE: Easy file upload & download over HTTP with Java.                                    
 * Copyright (C) 2014,  KawanSoft SAS
 * (http://www.kawansoft.com). All rights reserved.                                
 *                                                                               
 * Awake FILE is free software; you can redistribute it and/or                 
 * modify it under the terms of the GNU Lesser General Public                    
 * License as published by the Free Software Foundation; either                  
 * version 2.1 of the License, or (at your option) any later version.            
 *                                                                               
 * Awake FILE is distributed in the hope that it will be useful,               
 * but WITHOUT ANY WARRANTY; without even the implied warranty of                
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             
 * Lesser General Public License for more details.                               
 *                                                                               
 * You should have received a copy of the GNU Lesser General Public              
 * License along with this library; if not, write to the Free Software           
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
 * 02110-1301  USA
 *
 * Any modifications to this file must keep this entire header
 * intact.
 */
package org.awakefw.commons.jdbc.abstracts;

import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;

/**
 * Blob Wrapper. 
* Implements all the Connection methods. Usage is exactly the same as a Blob. */ public abstract class AbstractBlob implements Blob { /** SQL Blob container. */ private Blob blob; /** * Constructor * * @param blob * actual SQL/JDBC Blob in use to wrap. */ public AbstractBlob(Blob blob) { this.blob = blob; } /** * Returns the number of bytes in the BLOB value designated by * this Blob object. * * @return length of the BLOB in bytes * @exception SQLException * if there is an error accessing the length of the * BLOB * @since 1.2 */ public long length() throws SQLException { return this.blob.length(); } /** * Retrieves all or part of the BLOB value that this * Blob object represents, as an array of bytes. This * byte array contains up to length consecutive * bytes starting at position pos. * * @param pos * the ordinal position of the first byte in the * BLOB value to be extracted; the first byte is at * position 1 * @param length * the number of consecutive bytes to be copied * @return a byte array containing up to length consecutive * bytes from the BLOB value designated by this * Blob object, starting with the byte at position * pos * @exception SQLException * if there is an error accessing the BLOB value * @see #setBytes * @since 1.2 */ public byte[] getBytes(long pos, int length) throws SQLException { return this.blob.getBytes(pos, length); } /** * Retrieves the BLOB value designated by this * Blob instance as a stream. * * @return a stream containing the BLOB data * @exception SQLException * if there is an error accessing the BLOB value * @see #setBinaryStream * @since 1.2 */ public InputStream getBinaryStream() throws SQLException { return this.blob.getBinaryStream(); } /** * Retrieves the byte position at which the specified byte array * pattern begins within the BLOB value that this * Blob object represents. The search for pattern * begins at position start. * * @param pattern * the byte array for which to search * @param start * the position at which to begin searching; the first position * is 1 * @return the position at which the pattern appears, else -1 * @exception SQLException * if there is an error accessing the BLOB * @since 1.2 */ public long position(byte[] pattern, long start) throws SQLException { return this.blob.position(pattern, start); } /** * Retrieves the byte position in the BLOB value designated by * this Blob object at which pattern begins. The * search begins at position start. * * @param pattern * the Blob object designating the BLOB * value for which to search * @param start * the position in the BLOB value at which to begin * searching; the first position is 1 * @return the position at which the pattern begins, else -1 * @exception SQLException * if there is an error accessing the BLOB value * @since 1.2 */ public long position(Blob pattern, long start) throws SQLException { return this.blob.position(pattern, start); } // // // -------------------------- JDBC 3.0 ----------------------------------- // // /** * Writes the given array of bytes to the BLOB value that this * Blob object represents, starting at position * pos, and returns the number of bytes written. * * @param pos * the position in the BLOB object at which to start * writing * @param bytes * the array of bytes to be written to the BLOB * value that this Blob object represents * @return the number of bytes written * @exception SQLException * if there is an error accessing the BLOB value * @see #getBytes * @since 1.4 */ public int setBytes(long pos, byte[] bytes) throws SQLException { return this.blob.setBytes(pos, bytes); } /** * Writes all or part of the given byte array to the * BLOB value that this Blob object represents and * returns the number of bytes written. Writing starts at position * pos in the BLOB value; len bytes * from the given byte array are written. * * @param pos * the position in the BLOB object at which to start * writing * @param bytes * the array of bytes to be written to this BLOB * object * @param offset * the offset into the array bytes at which to start * reading the bytes to be set * @param len * the number of bytes to be written to the BLOB * value from the array of bytes bytes * @return the number of bytes written * @exception SQLException * if there is an error accessing the BLOB value * @see #getBytes * @since 1.4 */ public int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException { return this.blob.setBytes(pos, bytes, offset, len); } /** * Retrieves a stream that can be used to write to the BLOB * value that this Blob object represents. The stream begins at * position pos. * * @param pos * the position in the BLOB value at which to start * writing * @return a java.io.OutputStream object to which data can be * written * @exception SQLException * if there is an error accessing the BLOB value * @see #getBinaryStream * @since 1.4 */ public OutputStream setBinaryStream(long pos) throws SQLException { return this.blob.setBinaryStream(pos); } /** * Truncates the BLOB value that this Blob object * represents to be len bytes in length. * * @param len * the length, in bytes, to which the BLOB value * that this Blob object represents should be * truncated * @exception SQLException * if there is an error accessing the BLOB value * @since 1.4 */ public void truncate(long len) throws SQLException { this.blob.truncate(len); } /** * This method frees the Blob object and releases the resources * that it holds. The object is invalid once the free method is * called. *

* After free has been called, any attempt to invoke a method * other than free will result in a SQLException * being thrown. If free is called multiple times, the * subsequent calls to free are treated as a no-op. *

* * @throws SQLException * if an error occurs releasing the Blob's resources * @exception SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void free() throws SQLException { this.blob.free(); } /** * Returns an InputStream object that contains a partial * Blob value, starting with the byte specified by pos, which * is length bytes in length. * * @param pos * the offset to the first byte of the partial value to be * retrieved. The first byte in the Blob is at * position 1 * @param length * the length in bytes of the partial value to be retrieved * @return InputStream through which the partial * Blob value can be read. * @throws SQLException * if pos is less than 1 or if pos is greater than the number of * bytes in the Blob or if pos + length is greater * than the number of bytes in the Blob * * @exception SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public InputStream getBinaryStream(long pos, long length) throws SQLException { return this.blob.getBinaryStream(pos, length); } } // EOF





© 2015 - 2024 Weber Informatics LLC | Privacy Policy