1 /*
2 * Copyright (C) 2003-2012 David E. Berry
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 *
18 * A copy of the GNU Lesser General Public License may also be found at
19 * http://www.gnu.org/licenses/lgpl.txt
20 */
21 package org.synchronoss.cpo;
22
23 import org.synchronoss.cpo.meta.domain.CpoClass;
24
25 /**
26 * CpoOrderBy is an interface for specifying the sort order in which objects are returned from the Datasource.
27 *
28 * @author david berry
29 */
30 public interface CpoOrderBy {
31
32 public static final String DEFAULT_MARKER = "__CPO_ORDERBY__";
33
34 /**
35 * Gets the boolean that determines if the objects will be returned from from the CpoAdapter in Ascending order or
36 * Descending order
37 *
38 * @return boolean true if it is to sort in Ascensing Order false if it is to be sorted in Descending Order
39 */
40 public boolean getAscending();
41
42 /**
43 * Gets the name of the attribute that is to be used to sort the results from the CpoAdapter.
44 *
45 * @return String The name of the attribute
46 */
47 public String getAttribute();
48
49 /**
50 * Gets a string representing a datasource specific function call that must be applied to the attribute that will be
51 * used for sorting.
52 *
53 * i.e. - "upper(attribute_name)"
54 *
55 * @return String The name of the function
56 */
57 public String getFunction();
58
59 /**
60 * Gets the string marker that this cpoOrderBy will search for in the expression to replace
61 *
62 * @return String The marker of the CpoOrderBy
63 */
64 public String getMarker();
65
66 /**
67 * @return the string that will be added into the expression
68 */
69 public String toString(CpoClass cpoClass) throws CpoException;
70 }