org.objectweb.medor.query.api
Interface QueryTree

All Superinterfaces:
AnnotationsHolder, java.lang.Cloneable, java.io.Serializable
All Known Subinterfaces:
FilteredQueryTree, NestQueryNode, QueryLeaf, QueryNode, RdbExpQueryLeaf, RdbQueryLeaf, RdbStringQueryLeaf, TCQueryLeaf, UnnestQueryNode
All Known Implementing Classes:
AggregateRdbQueryNode, BasicQueryNode, BasicQueryTree, BasicRdbExpQueryLeaf, BasicRdbQueryLeaf, BasicRdbStringQueryLeaf, MedorTCQueryLeaf, Nest, Unnest

public interface QueryTree
extends java.lang.Cloneable, AnnotationsHolder

Author:
Sebastien Chassande-Barrioz

Method Summary
 boolean getDistinct()
          Tests whether the results should be distinct or not.
 java.lang.String getName()
          It returns the name of the query tree.
 OrderField[] getOrderBy()
          Returns the array of OrderFields indicating how the result should be ordered.
 TupleStructure getTupleStructure()
          Returns the TupleStructure associated to the QueryTree.
 void setDistinct(boolean distinct)
          Indicates whether evaluating the QueryTree should return unique results (duplicate elimination) or not.
 void setOrderBy(OrderField[] orders)
          Sets the OrderBy array of OrderFields.
 
Methods inherited from interface org.objectweb.medor.query.api.AnnotationsHolder
getAnnotations
 

Method Detail

getTupleStructure

public TupleStructure getTupleStructure()
Returns the TupleStructure associated to the QueryTree. Note that the Fields cannot be added by manipulating the TupleStructure, but by using either constructors in the case of a QueryLeaf, or by using the addXXXFields methods in the case of QueryNodes.


getName

public java.lang.String getName()
It returns the name of the query tree.


getDistinct

public boolean getDistinct()
Tests whether the results should be distinct or not.

Returns:
true if there results should be distinct, false otherwise.

setDistinct

public void setDistinct(boolean distinct)
                 throws MedorException
Indicates whether evaluating the QueryTree should return unique results (duplicate elimination) or not.

The default should be that duplicates are not eliminated (distinct is false).

Parameters:
distinct - is true if duplicates should be eliminated, false otherwise.
Throws:
MedorException - if the distinct operation is not supported.

setOrderBy

public void setOrderBy(OrderField[] orders)
                throws MedorException
Sets the OrderBy array of OrderFields.

This array indicates the fields by which the results should be ordered.

Like for filters assigned to QueryNodes, the Fields used for ordering must belong to children of the current QueryTree.

A noticeable exception is the case of RdbExpQueryLeaves, where ordering fields are fields of the QueryLeaf itself.

Parameters:
orders - the array of OrderFields indicating the ordering in which the result should be returned.
Throws:
MedorException - if ordering is not supported.

getOrderBy

public OrderField[] getOrderBy()
Returns the array of OrderFields indicating how the result should be ordered.

Returns:
the array of OrderFields.