org.objectweb.medor.query.lib
Class Unnest

java.lang.Object
  |
  +--org.objectweb.medor.lib.BasicTupleStructure
        |
        +--org.objectweb.medor.query.lib.BasicQueryTree
              |
              +--org.objectweb.medor.query.lib.BasicQueryNode
                    |
                    +--org.objectweb.medor.query.lib.Unnest
All Implemented Interfaces:
Cloneable, java.lang.Cloneable, FilteredQueryTree, QueryNode, QueryTree, TupleStructure, UnnestQueryNode

public class Unnest
extends BasicQueryNode
implements UnnestQueryNode


Field Summary
protected  PropagatedField[] projectedFields
           
protected  NestedField unnestedField
          It lists the field which have been grouped.
 
Fields inherited from class org.objectweb.medor.query.lib.BasicQueryNode
children, filter, indexes, tupleLoader
 
Fields inherited from class org.objectweb.medor.query.lib.BasicQueryTree
distinct, name, orderfields
 
Fields inherited from class org.objectweb.medor.lib.BasicTupleStructure
fields, name2field
 
Constructor Summary
Unnest(QueryTreeField[] queryTreeFields, Field field, java.lang.String nodeName, OptimizationMetaData optimizationMD)
           
 
Method Summary
 PropagatedField[] getProjectedFields()
          It give the fields wich will be projected with the fields of the nestedField
 short getType()
          It retrieves the operation type of the current QueryNode.
 NestedField getUnnestedField()
          It give the field wich will be de-grouped.
 void setQueryFilter(Expression e)
          Sets the filter associated to the FilteredQueryTree.
 
Methods inherited from class org.objectweb.medor.query.lib.BasicQueryNode
addCalculatedField, addChild, addField, addPropagatedField, clone, getChildren, getDistinct, getFieldName, getName, getOptimizationMetaData, getQueryFilter, getTupleLoader, getTupleStructure, removeField, replace, setDistinct, setTupleLoader, updateCalculatedField, updateChildren, updatePropagatedField
 
Methods inherited from class org.objectweb.medor.query.lib.BasicQueryTree
getOrderBy, setOrderBy
 
Methods inherited from class org.objectweb.medor.lib.BasicTupleStructure
contains, contains, getField, getField, getFieldRank, getFields, getSize
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.objectweb.medor.query.api.QueryNode
addCalculatedField, addPropagatedField, getChildren, getOptimizationMetaData, getTupleLoader, removeField, replace, setTupleLoader, updateCalculatedField, updatePropagatedField
 
Methods inherited from interface org.objectweb.medor.query.api.FilteredQueryTree
getQueryFilter
 
Methods inherited from interface org.objectweb.medor.query.api.QueryTree
getDistinct, getName, getOrderBy, getTupleStructure, setDistinct, setOrderBy
 

Field Detail

unnestedField

protected NestedField unnestedField
It lists the field which have been grouped.


projectedFields

protected PropagatedField[] projectedFields
Constructor Detail

Unnest

public Unnest(QueryTreeField[] queryTreeFields,
              Field field,
              java.lang.String nodeName,
              OptimizationMetaData optimizationMD)
       throws MedorException
Method Detail

getUnnestedField

public NestedField getUnnestedField()
Description copied from interface: UnnestQueryNode
It give the field wich will be de-grouped. The field is the old field.

Specified by:
getUnnestedField in interface UnnestQueryNode
Returns:
a field

getProjectedFields

public PropagatedField[] getProjectedFields()
Description copied from interface: UnnestQueryNode
It give the fields wich will be projected with the fields of the nestedField

Specified by:
getProjectedFields in interface UnnestQueryNode
Returns:
a field[]

getType

public short getType()
Description copied from interface: QueryNode
It retrieves the operation type of the current QueryNode.

Specified by:
getType in interface QueryNode
Specified by:
getType in class BasicQueryNode

setQueryFilter

public void setQueryFilter(Expression e)
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
Overrides:
setQueryFilter in class BasicQueryNode
Parameters:
e - is the Expression representing the query filter of the current QueryNode.
See Also:
Expression