org.objectweb.medor.query.rdb.lib
Class BasicRdbStringQueryLeaf

java.lang.Object
  extended byBasicCloneable
      extended byorg.objectweb.medor.lib.BasicTupleStructure
          extended byorg.objectweb.medor.query.lib.BasicQueryTree
              extended byorg.objectweb.medor.query.rdb.lib.BasicRdbQueryLeaf
                  extended byorg.objectweb.medor.query.rdb.lib.BasicRdbStringQueryLeaf
All Implemented Interfaces:
AnnotationsHolder, java.lang.Cloneable, Cloneable, FilteredQueryTree, QueryLeaf, QueryTree, RdbQueryLeaf, RdbStringQueryLeaf, java.io.Serializable, TupleStructure

public class BasicRdbStringQueryLeaf
extends BasicRdbQueryLeaf
implements RdbStringQueryLeaf, FilteredQueryTree

This class represents a QueryLeaf that maps onto a relational database store.

See Also:
Serialized Form

Field Summary
protected  Expression sqlFilter
           
 
Fields inherited from class org.objectweb.medor.query.rdb.lib.BasicRdbQueryLeaf
ds, isSubquery, query
 
Fields inherited from class org.objectweb.medor.query.lib.BasicQueryTree
annotations, distinct, indexes, name, orderfields
 
Fields inherited from class org.objectweb.medor.lib.BasicTupleStructure
fields, logger, name2field
 
Constructor Summary
BasicRdbStringQueryLeaf()
           
BasicRdbStringQueryLeaf(DataStore ds, java.lang.String query, java.lang.String nodeName)
          Constructs a BasicRdbStringQueryLeaf from an SQL string.
 
Method Summary
 RdbField addRdbField(java.lang.String name, PType type, java.lang.String colName)
          Adds a Field to the RdbExpQueryLeaf
 Expression getQueryFilter()
          Retrieves the filter associated to the QueryTree.
 java.lang.String getSelectList(java.lang.String selectList, java.util.ArrayList selectFields, boolean qualified)
          Builds the SELECT clause of the query (without "SELECT ").
 java.lang.String getSqlRequest(ParameterOperand[] pos, java.util.ArrayList al, boolean rangeStartAt, boolean rangeSize)
          Returns the associated SQL queryn giving the list of SELECT fields as an input parameter.
 java.lang.String getSqlRequest(ParameterOperand[] pos, boolean rangeStartAt, boolean rangeSize)
          Returns the associated SQL query.
 void setQueryFilter(Expression exp)
          Sets the filter associated to the FilteredQueryTree.
 
Methods inherited from class org.objectweb.medor.query.rdb.lib.BasicRdbQueryLeaf
clone, getDataStore, isSubquery, setDataStore, setIsSubquery
 
Methods inherited from class org.objectweb.medor.query.lib.BasicQueryTree
getAnnotations, getDistinct, getName, getOrderBy, getTupleStructure, setDistinct, setOrderBy
 
Methods inherited from class org.objectweb.medor.lib.BasicTupleStructure
contains, contains, getField, getField, getFieldRank, getFields, getSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.objectweb.medor.query.rdb.api.RdbQueryLeaf
isSubquery, setIsSubquery
 
Methods inherited from interface org.objectweb.medor.query.api.QueryLeaf
getDataStore
 
Methods inherited from interface org.objectweb.medor.query.api.QueryTree
getDistinct, getName, getOrderBy, getTupleStructure, setDistinct, setOrderBy
 
Methods inherited from interface org.objectweb.medor.query.api.AnnotationsHolder
getAnnotations
 
Methods inherited from interface org.objectweb.medor.api.Cloneable
clone
 

Field Detail

sqlFilter

protected Expression sqlFilter
Constructor Detail

BasicRdbStringQueryLeaf

public BasicRdbStringQueryLeaf()

BasicRdbStringQueryLeaf

public BasicRdbStringQueryLeaf(DataStore ds,
                               java.lang.String query,
                               java.lang.String nodeName)
Constructs a BasicRdbStringQueryLeaf from an SQL string.

Method Detail

addRdbField

public RdbField addRdbField(java.lang.String name,
                            PType type,
                            java.lang.String colName)
Description copied from interface: RdbStringQueryLeaf
Adds a Field to the RdbExpQueryLeaf

Specified by:
addRdbField in interface RdbStringQueryLeaf
Parameters:
name - is the name of the Field to be added.
type - is the PTyme of the Field to be added.
colName - is the name of the column in the associated QualifiedTable.
Returns:
the created RdbExpField.

getSqlRequest

public java.lang.String getSqlRequest(ParameterOperand[] pos,
                                      boolean rangeStartAt,
                                      boolean rangeSize)
Description copied from interface: RdbQueryLeaf
Returns the associated SQL query.

In the case of an RdbExpQueryLeaf, the query is computed.

Specified by:
getSqlRequest in interface RdbQueryLeaf
Parameters:
pos - is an array of ParameterOperand
rangeStartAt - is true for range queries where the first row to be returned in the case of a range query is greater than 0.
rangeSize - is true for range queries where the number of rows to be returned in the case of a range query is less than Integer.MAXVALUE
Returns:
the SQL query associated to the RdbQueryLeaf, as a String.

getSqlRequest

public java.lang.String getSqlRequest(ParameterOperand[] pos,
                                      java.util.ArrayList al,
                                      boolean rangeStartAt,
                                      boolean rangeSize)
                               throws MedorException
Description copied from interface: RdbQueryLeaf
Returns the associated SQL queryn giving the list of SELECT fields as an input parameter.

In the case of an RdbExpQueryLeaf, the query is computed.

Specified by:
getSqlRequest in interface RdbQueryLeaf
Parameters:
pos - is an array of ParameterOperand
al - is the input Array of fields for constructing the SELECT clause.
rangeStartAt - is true for range queries where the first row to be returned in the case of a range query is greater than 0.
rangeSize - is true for range queries where the number of rows to be returned in the case of a range query is less than Integer.MAXVALUE
Returns:
the SQL query associated to the RdbQueryLeaf, as a String.
Throws:
MedorException - in the case of RdbExpQueryLeaves if the SQL request cannot be computed from the associated Expression

getSelectList

public java.lang.String getSelectList(java.lang.String selectList,
                                      java.util.ArrayList selectFields,
                                      boolean qualified)
                               throws MedorException
Description copied from interface: RdbQueryLeaf
Builds the SELECT clause of the query (without "SELECT ").

Specified by:
getSelectList in interface RdbQueryLeaf
Parameters:
selectList - is the start of the SELECT clause to which the list of qualified columns is appended.
selectFields - is the fields for the SELECT clause. Such fields can either be plain fields, or can be aggregate fields
qualified - indicates whether the field names should be qualified with the table name or not.
Returns:
the list of qualified columns for the SELECT clause
Throws:
MedorException

getQueryFilter

public Expression getQueryFilter()
Description copied from interface: FilteredQueryTree
Retrieves the filter associated to the QueryTree. This filter is represented by an Expression.

Specified by:
getQueryFilter in interface FilteredQueryTree
Returns:
the query filter Expression associated to the QueryNode.
See Also:
Expression

setQueryFilter

public void setQueryFilter(Expression exp)
Description copied from interface: FilteredQueryTree
Sets the filter associated to the FilteredQueryTree. This filter is represented by an Expression.

For a QueryNode:

This method also updates the list of QueryTree children of the current QueryNode according to the FieldOperands present in the Expression.

Usage constraint: if the QueryNode already has an associated Expression, and if this Expression has been modified, the user is requested to call the setQueryFilter method after the modification.

For a RbdQueryLeaf:

It sets the filter associated to the RbdQueryLeaf. This filter is represented by an Expression. Unlike the filter of a QueryNode, is applies to its own Fields, instead of the Fields of its children.

Specified by:
setQueryFilter in interface FilteredQueryTree
Parameters:
exp - is the Expression representing the query filter of the current QueryNode.
See Also:
Expression