org.sormula.translator
Class AbstractColumnTranslator<R,T>

java.lang.Object
  extended by org.sormula.translator.AbstractColumnTranslator<R,T>
Type Parameters:
R - row class
T - Java field type
All Implemented Interfaces:
ColumnTranslator<R>
Direct Known Subclasses:
AbstractBlobColumnTranslator, BigDecimalColumnTranslator, BooleanColumnTranslator, BooleanYNColumnTranslator, ByteColumnTranslator, DateColumnTranslator, DoubleColumnTranslator, FloatColumnTranslator, IntegerColumnTranslator, LongColumnTranslator, ObjectColumnTranslator, ShortColumnTranslator, SqlDateColumnTranslator, SqlTimeColumnTranslator, SqlTimestampColumnTranslator, StandardColumnTranslator, StringColumnTranslator

public abstract class AbstractColumnTranslator<R,T>
extends java.lang.Object
implements ColumnTranslator<R>

Common functionality for most translators.

Since:
1.0
Author:
Jeff Miller

Constructor Summary
AbstractColumnTranslator(java.lang.reflect.Field field, java.lang.String columnName)
          Constructs for a column.
 
Method Summary
 java.lang.String getColumnName()
          Gets the SQL column name.
 java.lang.reflect.Field getField()
          Gets the Java field that participates in translation.
 SormulaField<R,T> getSormulaField()
          Gets the field as a SormulaField.
 TypeTranslator<T> getTypeTranslator()
           
 boolean isIdentity()
          Gets the identity status.
static ColumnTranslator<?> newInstance(java.lang.Class<? extends ColumnTranslator> columnTranslatorClass, java.lang.reflect.Field field, java.lang.String columnName)
          Factory method for creating a new instance of a column translator for a field.
 void read(java.sql.ResultSet resultSet, int columnIndex, R row)
          Reads column value from result set and sets in row object.
 void setIdentity(boolean identity)
           
 void setTypeTranslator(TypeTranslator<T> typeTranslator)
          Sets the translator to read result sets and write to prepared statements.
 void write(java.sql.PreparedStatement preparedStatement, int parameterIndex, R row)
          Gets column value from row and sets as parameter in prepared statement.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractColumnTranslator

public AbstractColumnTranslator(java.lang.reflect.Field field,
                                java.lang.String columnName)
                         throws TranslatorException
Constructs for a column. Translates with ObjectTranslator.

Parameters:
field - java reflection Field that corresponds to column
columnName - name of table column
Throws:
TranslatorException - if error
Method Detail

newInstance

public static ColumnTranslator<?> newInstance(java.lang.Class<? extends ColumnTranslator> columnTranslatorClass,
                                              java.lang.reflect.Field field,
                                              java.lang.String columnName)
                                       throws TranslatorException
Factory method for creating a new instance of a column translator for a field. Gets columnTranslatorClass constructor with parameters (Field, String) and invokes Class.newInstance().

Parameters:
columnTranslatorClass - translator
field - field within row class
columnName - name of column associated with row field
Returns:
column translator
Throws:
TranslatorException - if error

getField

public java.lang.reflect.Field getField()
Gets the Java field that participates in translation.

Specified by:
getField in interface ColumnTranslator<R>
Returns:
field within row class that corresponds to column

getColumnName

public java.lang.String getColumnName()
Gets the SQL column name.

Specified by:
getColumnName in interface ColumnTranslator<R>
Returns:
name of table column to be translated

getTypeTranslator

public TypeTranslator<T> getTypeTranslator()
Returns:
translator to read result sets and write to prepared statements
Since:
1.6 and 2.0

setTypeTranslator

public void setTypeTranslator(TypeTranslator<T> typeTranslator)
Sets the translator to read result sets and write to prepared statements.

Parameters:
typeTranslator - type translator to use for this column
Since:
1.6 and 2.0

isIdentity

public boolean isIdentity()
Gets the identity status. True indicates that column value is generated by database upon insert.

Specified by:
isIdentity in interface ColumnTranslator<R>
Returns:
true if column is declared as an identity column

setIdentity

public void setIdentity(boolean identity)

getSormulaField

public SormulaField<R,T> getSormulaField()
Gets the field as a SormulaField.

Returns:
SormulaField for field supplied in constructor

write

public void write(java.sql.PreparedStatement preparedStatement,
                  int parameterIndex,
                  R row)
           throws java.lang.Exception
Gets column value from row and sets as parameter in prepared statement.

Specified by:
write in interface ColumnTranslator<R>
Parameters:
preparedStatement - set column value as parameter in this statement
parameterIndex - set parameter at this index
row - get value from this row
Throws:
java.lang.Exception - if error

read

public void read(java.sql.ResultSet resultSet,
                 int columnIndex,
                 R row)
          throws java.lang.Exception
Reads column value from result set and sets in row object.

Specified by:
read in interface ColumnTranslator<R>
Parameters:
resultSet - read column from this result set
columnIndex - read value at this column index from result set
row - set value in this row
Throws:
java.lang.Exception - if error