org.apache.cayenne.access.types
Class ByteArrayType

java.lang.Object
  extended by org.apache.cayenne.access.types.AbstractType
      extended by org.apache.cayenne.access.types.ByteArrayType
All Implemented Interfaces:
ExtendedType

public class ByteArrayType
extends AbstractType

Handles byte[], mapping it as either of JDBC types - BLOB or (VAR)BINARY. Can be configured to trim trailing zero bytes.

Author:
Andrus Adamchik

Field Summary
protected  boolean trimmingBytes
           
protected  boolean usingBlobs
           
 
Constructor Summary
ByteArrayType(boolean trimmingBytes, boolean usingBlobs)
           
 
Method Summary
 java.lang.String getClassName()
          Returns a full name of Java class that this ExtendedType supports.
 boolean isTrimmingBytes()
           
 boolean isUsingBlobs()
          Returns true if byte columns are handled as BLOBs internally.
 java.lang.Object materializeObject(java.sql.CallableStatement cs, int index, int type)
          Reads an object from a stored procedure OUT parameter, converting it to class returned by 'getClassName' method.
 java.lang.Object materializeObject(java.sql.ResultSet rs, int index, int type)
          Reads an object from JDBC ResultSet column, converting it to class returned by 'getClassName' method.
protected  byte[] readBinaryStream(java.sql.ResultSet rs, int index)
           
protected  byte[] readBlob(java.sql.Blob blob)
           
protected  byte[] readValueStream(java.io.InputStream in, int streamSize, int bufSize)
           
 void setJdbcObject(java.sql.PreparedStatement st, java.lang.Object val, int pos, int type, int precision)
          Calls "PreparedStatement.setObject(..)".
 void setTrimmingBytes(boolean trimingBytes)
           
 void setUsingBlobs(boolean usingBlobs)
           
static byte[] trimBytes(byte[] bytes)
          Strips null bytes from the byte array, returning a potentially smaller array that contains no trailing zero bytes.
 boolean validateProperty(java.lang.Object source, java.lang.String property, java.lang.Object value, DbAttribute dbAttribute, ValidationResult validationResult)
          Validates byte[] property.
protected  java.sql.Blob writeBlob(byte[] bytes)
           
 
Methods inherited from class org.apache.cayenne.access.types.AbstractType
toString, validateNull
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

trimmingBytes

protected boolean trimmingBytes

usingBlobs

protected boolean usingBlobs
Constructor Detail

ByteArrayType

public ByteArrayType(boolean trimmingBytes,
                     boolean usingBlobs)
Method Detail

trimBytes

public static byte[] trimBytes(byte[] bytes)
Strips null bytes from the byte array, returning a potentially smaller array that contains no trailing zero bytes.


getClassName

public java.lang.String getClassName()
Description copied from interface: ExtendedType
Returns a full name of Java class that this ExtendedType supports.

Specified by:
getClassName in interface ExtendedType
Specified by:
getClassName in class AbstractType

validateProperty

public boolean validateProperty(java.lang.Object source,
                                java.lang.String property,
                                java.lang.Object value,
                                DbAttribute dbAttribute,
                                ValidationResult validationResult)
Validates byte[] property.

Specified by:
validateProperty in interface ExtendedType
Overrides:
validateProperty in class AbstractType
Since:
1.1

materializeObject

public java.lang.Object materializeObject(java.sql.ResultSet rs,
                                          int index,
                                          int type)
                                   throws java.lang.Exception
Description copied from interface: ExtendedType
Reads an object from JDBC ResultSet column, converting it to class returned by 'getClassName' method.

Specified by:
materializeObject in interface ExtendedType
Specified by:
materializeObject in class AbstractType
Throws:
java.lang.Exception - if read error ocurred, or an object can't be converted to a target Java class.

materializeObject

public java.lang.Object materializeObject(java.sql.CallableStatement cs,
                                          int index,
                                          int type)
                                   throws java.lang.Exception
Description copied from interface: ExtendedType
Reads an object from a stored procedure OUT parameter, converting it to class returned by 'getClassName' method.

Specified by:
materializeObject in interface ExtendedType
Specified by:
materializeObject in class AbstractType
Throws:
java.lang.Exception - if read error ocurred, or an object can't be converted to a target Java class.

setJdbcObject

public void setJdbcObject(java.sql.PreparedStatement st,
                          java.lang.Object val,
                          int pos,
                          int type,
                          int precision)
                   throws java.lang.Exception
Description copied from class: AbstractType
Calls "PreparedStatement.setObject(..)". Some DbAdapters may need to override this behavior for at least some of the object types, as it doesn't work consistently across all JDBC drivers.

Specified by:
setJdbcObject in interface ExtendedType
Overrides:
setJdbcObject in class AbstractType
Throws:
java.lang.Exception

writeBlob

protected java.sql.Blob writeBlob(byte[] bytes)

readBlob

protected byte[] readBlob(java.sql.Blob blob)
                   throws java.io.IOException,
                          java.sql.SQLException
Throws:
java.io.IOException
java.sql.SQLException

readBinaryStream

protected byte[] readBinaryStream(java.sql.ResultSet rs,
                                  int index)
                           throws java.io.IOException,
                                  java.sql.SQLException
Throws:
java.io.IOException
java.sql.SQLException

readValueStream

protected byte[] readValueStream(java.io.InputStream in,
                                 int streamSize,
                                 int bufSize)
                          throws java.io.IOException
Throws:
java.io.IOException

isUsingBlobs

public boolean isUsingBlobs()
Returns true if byte columns are handled as BLOBs internally.


setUsingBlobs

public void setUsingBlobs(boolean usingBlobs)

isTrimmingBytes

public boolean isTrimmingBytes()

setTrimmingBytes

public void setTrimmingBytes(boolean trimingBytes)


Copyright © 2001-2006 Apache.org All Rights Reserved.