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

com.aceql.jdbc.commons.main.abstracts.AbstractBlob Maven / Gradle / Ivy

Go to download

The AceQL Java Client JDBC Driver allows to wrap the AceQL HTTP APIs and eliminates the tedious works of handling communications errors and parsing JSON results. Android and Java Desktop application developers can access remote SQL databases and/or SQL databases in the cloud by simply including standard JDBC calls in their code, just like they would for a local database.

The newest version!
/*
 * This file is part of AceQL JDBC Driver.
 * AceQL JDBC Driver: Remote JDBC access over HTTP with AceQL HTTP.
 * Copyright (c) 2023,  KawanSoft SAS
 * (http://www.kawansoft.com). All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.aceql.jdbc.commons.main.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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override 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 */ @Override public void free() throws SQLException, SQLFeatureNotSupportedException { 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 */ @Override public InputStream getBinaryStream(long pos, long length) throws SQLException, SQLFeatureNotSupportedException { return this.blob.getBinaryStream(pos, length); } } // EOF





© 2015 - 2024 Weber Informatics LLC | Privacy Policy