org.apache.cayenne.query
Class Ordering

java.lang.Object
  extended by org.apache.cayenne.query.Ordering
All Implemented Interfaces:
Serializable, Comparator<Object>, XMLSerializable

public class Ordering
extends Object
implements Comparator<Object>, Serializable, XMLSerializable

Defines object sorting criteria, used either for in-memory sorting of object lists or as a specification for building ORDER BY clause of a SelectQuery query. Note that in case of in-memory sorting, Ordering can be used with any JavaBeans, not just DataObjects.

Author:
Andrus Adamchik, Craig Miskell
See Also:
Serialized Form

Field Summary
static boolean ASC
          Symbolic representation of ascending ordering criterion.
protected  boolean ascending
           
protected  boolean caseInsensitive
           
static boolean DESC
          Symbolic representation of descending ordering criterion.
protected  boolean nullSortedFirst
           
protected  boolean pathExceptionSuppressed
           
protected  Expression sortSpec
           
protected  String sortSpecString
           
 
Constructor Summary
Ordering()
           
Ordering(Expression sortExpression, boolean ascending)
           
Ordering(Expression sortExpression, boolean ascending, boolean caseInsensitive)
           
Ordering(String sortPathSpec, boolean ascending)
           
Ordering(String sortPathSpec, boolean ascending, boolean caseInsensitive)
           
 
Method Summary
 int compare(Object o1, Object o2)
          Comparable interface implementation.
 void encodeAsXML(XMLEncoder encoder)
          Encodes itself as a query ordering.
 Expression getSortSpec()
          Returns the expression defining a ordering Java Bean property.
 String getSortSpecString()
          Returns sortSpec string representation.
 boolean isAscending()
          Returns true if sorting is done in ascending order.
 boolean isCaseInsensitive()
          Returns true if the sorting is case insensitive
 boolean isNullSortedFirst()
          Get sort order for nulls.
 boolean isPathExceptionSuppressed()
          Is a path with a null in the middle is ignored.
 void orderList(List<?> objects)
          Orders the given list of objects according to the ordering that this object specifies.
static void orderList(List<?> objects, List<Ordering> orderings)
          Orders a given list of objects, using a List of Orderings applied according the default iteration order of the Orderings list.
 void setAscending(boolean ascending)
          Sets ascending property of this Ordering.
 void setCaseInsensitive(boolean caseInsensitive)
          Sets caseInsensitive property of this Ordering.
 void setNullSortedFirst(boolean nullSortedFirst)
          Sets sort order for whether nulls are at the top or bottom of the resulting list.
 void setPathExceptionSupressed(boolean pathExceptionSuppressed)
          Sets whether a path with a null in the middle is ignored.
 void setSortSpec(Expression sortSpec)
          Sets the expression defining a ordering Java Bean property.
 void setSortSpecString(String sortSpecString)
          Sets sortSpec to be an expression represented by string argument.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Field Detail

ASC

public static final boolean ASC
Symbolic representation of ascending ordering criterion.

See Also:
Constant Field Values

DESC

public static final boolean DESC
Symbolic representation of descending ordering criterion.

See Also:
Constant Field Values

sortSpecString

protected String sortSpecString

sortSpec

protected transient Expression sortSpec

ascending

protected boolean ascending

caseInsensitive

protected boolean caseInsensitive

pathExceptionSuppressed

protected boolean pathExceptionSuppressed

nullSortedFirst

protected boolean nullSortedFirst
Constructor Detail

Ordering

public Ordering()

Ordering

public Ordering(String sortPathSpec,
                boolean ascending)

Ordering

public Ordering(String sortPathSpec,
                boolean ascending,
                boolean caseInsensitive)

Ordering

public Ordering(Expression sortExpression,
                boolean ascending)

Ordering

public Ordering(Expression sortExpression,
                boolean ascending,
                boolean caseInsensitive)
Method Detail

orderList

public static void orderList(List<?> objects,
                             List<Ordering> orderings)
Orders a given list of objects, using a List of Orderings applied according the default iteration order of the Orderings list. I.e. each Ordering with lower index is more significant than any other Ordering with higher index. List being ordered is modified in place.


setSortSpecString

public void setSortSpecString(String sortSpecString)
Sets sortSpec to be an expression represented by string argument.

Since:
1.1

setNullSortedFirst

public void setNullSortedFirst(boolean nullSortedFirst)
Sets sort order for whether nulls are at the top or bottom of the resulting list. Default is true.

Parameters:
nullSortedFirst - true sorts nulls to the top of the list, false sorts nulls to the bottom

isNullSortedFirst

public boolean isNullSortedFirst()
Get sort order for nulls.

Returns:
true if nulls are sorted to the top of the list, false if sorted to the bottom

setPathExceptionSupressed

public void setPathExceptionSupressed(boolean pathExceptionSuppressed)
Sets whether a path with a null in the middle is ignored. For example, a sort from painting on artist.name would by default throw an exception if the artist was null. If set to true, then this is treated just like a null value. Default is false.

Parameters:
pathExceptionSuppressed - true to suppress exceptions and sort as null

isPathExceptionSuppressed

public boolean isPathExceptionSuppressed()
Is a path with a null in the middle is ignored.

Returns:
true is exception is suppressed and sorted as null

getSortSpecString

public String getSortSpecString()
Returns sortSpec string representation.

Since:
1.1

isAscending

public boolean isAscending()
Returns true if sorting is done in ascending order.


setAscending

public void setAscending(boolean ascending)
Sets ascending property of this Ordering.


isCaseInsensitive

public boolean isCaseInsensitive()
Returns true if the sorting is case insensitive


setCaseInsensitive

public void setCaseInsensitive(boolean caseInsensitive)
Sets caseInsensitive property of this Ordering.


getSortSpec

public Expression getSortSpec()
Returns the expression defining a ordering Java Bean property.


setSortSpec

public void setSortSpec(Expression sortSpec)
Sets the expression defining a ordering Java Bean property.


orderList

public void orderList(List<?> objects)
Orders the given list of objects according to the ordering that this object specifies. List is modified in-place.

Parameters:
objects - a List of objects to be sorted

compare

public int compare(Object o1,
                   Object o2)
Comparable interface implementation. Can compare two Java Beans based on the stored expression.

Specified by:
compare in interface Comparator<Object>

encodeAsXML

public void encodeAsXML(XMLEncoder encoder)
Encodes itself as a query ordering.

Specified by:
encodeAsXML in interface XMLSerializable
Since:
1.1

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2001-2008 Apache Cayenne. All Rights Reserved.