org.sormula.translator
Class AbstractWhereTranslator<R>

java.lang.Object
  extended by org.sormula.translator.ColumnsTranslator<R>
      extended by org.sormula.translator.AbstractWhereTranslator<R>
Type Parameters:
R - row class
Direct Known Subclasses:
PrimaryKeyWhereTranslator, WhereTranslator

public abstract class AbstractWhereTranslator<R>
extends ColumnsTranslator<R>

Base class for translators that provide parameters for where clause.

Since:
1.0
Author:
Jeff Miller

Constructor Summary
AbstractWhereTranslator(RowTranslator<R> rowTranslator)
          Constructs for row translator.
 
Method Summary
 void addColumnTranslator(ColumnTranslator<R> c)
          Adds translator with equal as operator and "AND" as boolean operator.
 void addColumnTranslator(ColumnTranslator<R> c, java.lang.String comparisonOperator, java.lang.String booleanOperator)
          Deprecated. 
 void addColumnTranslator(ColumnTranslator<R> c, java.lang.String booleanOperator, java.lang.String comparisonOperator, java.lang.String operand)
          Adds translator with a specific sql comparison operator and boolean operator.
 java.lang.String createColumnParameterPhrase()
          Creates column phrase with parameter placeholders and comparison operators like:
"c1 cop1 a1 bo2 c2 cop2 a2 bo3 c3 cop3 a3..." where cN is column name, copN is WhereField.comparisonOperator(), aN is operand (typically "?"), and boN is WhereField.booleanOperator()
 java.lang.String createSql()
          Creates SQL for where phrase.
 java.lang.Object[] getParameters()
           
 RowTranslator<R> getRowTranslator()
          Gets row translator that was supplied in constructor.
protected  void initColumnTranslatorList(int columns)
          Initializes objects to hold all column information.
 boolean isCollectionOperand()
          Tests if where condition contains at least one column with an operand that use a collection as a parameter.
 boolean isInOperator()
          Deprecated. 
protected  boolean isInOperator(java.lang.String operator)
          Deprecated. 
 void setParameters(java.lang.Object[] parameters)
          Sets parameters that are used in where phrase.
 
Methods inherited from class org.sormula.translator.ColumnsTranslator
createColumnPhrase, createParameterPhrase, getColumnTranslator, getColumnTranslatorList, getRowClass, isIncludeIdentityColumns, read, setIncludeIdentityColumns, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractWhereTranslator

public AbstractWhereTranslator(RowTranslator<R> rowTranslator)
                        throws TranslatorException
Constructs for row translator.

Parameters:
rowTranslator - row translator associated with where condition
Throws:
TranslatorException - if error
Method Detail

initColumnTranslatorList

protected void initColumnTranslatorList(int columns)
Initializes objects to hold all column information.

Overrides:
initColumnTranslatorList in class ColumnsTranslator<R>
Parameters:
columns - approximatenumber of columns that will be in translator (used as initial capacity)

getParameters

public java.lang.Object[] getParameters()
Returns:
parameters set by setParameters(Object[])

setParameters

public void setParameters(java.lang.Object[] parameters)
Sets parameters that are used in where phrase. Some where phrases need to know the number and type of the parameters. Parameters typically are obtained from SqlOperation.getParameters().

Parameters:
parameters - parameters for where phrase; null if none

createSql

public java.lang.String createSql()
Creates SQL for where phrase. parameters are supplied because some where phrases need to know the number and type of the parameters.

Returns:
complete WHERE phrase

getRowTranslator

public RowTranslator<R> getRowTranslator()
Gets row translator that was supplied in constructor.

Returns:
row translator associated with where condition

addColumnTranslator

public void addColumnTranslator(ColumnTranslator<R> c)
Adds translator with equal as operator and "AND" as boolean operator.

Overrides:
addColumnTranslator in class ColumnsTranslator<R>
Parameters:
c - column translator to add

addColumnTranslator

@Deprecated
public void addColumnTranslator(ColumnTranslator<R> c,
                                           java.lang.String comparisonOperator,
                                           java.lang.String booleanOperator)
Deprecated. 

Adds translator with a specific sql comparison operator and boolean operator. This method is kept for backward compatibility to versions prior to 1.4. Note that parameter order is different from addColumnTranslator(ColumnTranslator, String, String, String).

Parameters:
c - column translator to add
comparisonOperator - sql comparison operator to use in where condition (examples: ">", "=<", "<>", etc.)
booleanOperator - logical operator to precede this column (examples: "AND", "OR", "AND NOT", etc.)

addColumnTranslator

public void addColumnTranslator(ColumnTranslator<R> c,
                                java.lang.String booleanOperator,
                                java.lang.String comparisonOperator,
                                java.lang.String operand)
Adds translator with a specific sql comparison operator and boolean operator. Note that parameter order has changed so that booleanOperator, operator, operand appear in same order as in SQL.

Parameters:
c - column translator to add
booleanOperator - logical operator to precede this column (examples: "AND", "OR", "AND NOT", etc.)
comparisonOperator - sql comparison operator to use in where condition (examples: ">", "=<", "<>", etc.)
operand - operand to follow operator; typically "?" indicates operand is SQL parameter
Since:
1.4

isInOperator

@Deprecated
public boolean isInOperator()
Deprecated. 

Kept for backward compatibility but is not needed.

Returns:
true if one or more column uses the "IN" operator

isInOperator

@Deprecated
protected boolean isInOperator(java.lang.String operator)
Deprecated. 


isCollectionOperand

public boolean isCollectionOperand()
Tests if where condition contains at least one column with an operand that use a collection as a parameter.

Returns:
true if at least one column uses a collection operand

createColumnParameterPhrase

public java.lang.String createColumnParameterPhrase()
Creates column phrase with parameter placeholders and comparison operators like:
"c1 cop1 a1 bo2 c2 cop2 a2 bo3 c3 cop3 a3..." where cN is column name, copN is WhereField.comparisonOperator(), aN is operand (typically "?"), and boN is WhereField.booleanOperator()

Overrides:
createColumnParameterPhrase in class ColumnsTranslator<R>
Returns:
"c1 cop1 a1 bo2 c2 cop2 a2 bo3 c3 cop3 a3..."