Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.orsup.selection;

import org.litesoft.orsup.selection.nonpublic.*;

/**
 * An abstract representation of a SQL <i>ORDER BY</i> clause.<p>
 * <a href="../../Licence.txt">Licence</a><br>
 * <p/>
 * Two methods are provided to translate an <b>OrderBy</b> (with optional
 * sub-orderby(s)) into <b>String</b>s:<p>
 * <pre>
 *      toString() ;
 *      toSQL() ;
 * </pre>
 * <p/>
 * The <i>toString()</i> is intended for debuging purposes.<p>
 * <p/>
 * Exceptions: All problems caught when the parameter(s) are checked (as
 * indicated/implied in the @param tags) will generate an IllegalArgumentException,
 * and means the API user has a problem.  If a NullPointerException (or some
 * others, like: ClassCastException or ArrayIndexOutOfBoundsException) is thrown,
 * it means the API developer has a problem.  Any Exception that is explicitly
 * thrown in the API, but unrelated to a parameter, will be listed in the throws
 * clause (and hopefully in the tag @throws).  These may (but probably won't) be
 * checked Exceptions.
 *
 * @author George Smith
 * @version 1.0 06/20/02
 */

public class OrderBy
{
    private SimpleColumnDefinition mColumnDefinition;
    private OrderBy mSubOrderBy = null;

    /**
     * Constructor that supports a Column Definition.<p>
     *
     * @param pColumnDefinition Column Definition (!null).
     */
    public OrderBy( SimpleColumnDefinition pColumnDefinition )
    {
        IllegalArgument.ifNull( "ColumnDefinition", mColumnDefinition = pColumnDefinition );
    }

    /**
     * Constructor that supports a Column Definition.<p>
     *
     * @param pColumnDefinition Column Definition (!null).
     * @param pSubOrderBy       Sub OrderBy (!null).
     */
    public OrderBy( SimpleColumnDefinition pColumnDefinition, OrderBy pSubOrderBy )
    {
        this( pColumnDefinition );
        IllegalArgument.ifNull( "SubOrderBy", mSubOrderBy = pSubOrderBy );
    }

    /**
     * Accessor to determine if the Order by is Descending.<p>
     *
     * @return True if is Descending.
     */
    public boolean isDescending()
    {
        return false;
    }

    /**
     * Accessor for the Column Definition.<p>
     *
     * @return Column Definition (!null).
     */
    public final SimpleColumnDefinition getColumnDefinition()
    {
        return mColumnDefinition;
    }

    /**
     * Accessor for the Sub OrderBy.<p>
     *
     * @return OrderBy (null == none).
     */
    public final OrderBy getSubOrderBy()
    {
        return mSubOrderBy;
    }

    /**
     * Generate a Debug friendly representation.<p>
     *
     * @return a String for Debuging.
     */
    @Override
    public final String toString()
    {
        StringBuilder sb = new StringBuilder( "OrderBy " );
        toStringHelper( sb );
        return sb.toString();
    }

    /**
     * Generate a String that may be used in a SQL statement, where the
     * <b>ORDERBY</b> <i>clause</i> would go.<p>
     *
     * @return the <b>ORDERBY</b> <i>clause</i> for SQL statement as a String.
     */
    public final String toSQL()
    {
        StringBuilder sb = new StringBuilder( "ORDER BY " );
        toSqlHelper( sb );
        return sb.toString();
    }

    /**
     * Helper method for <b>toString()</b> that provides a more efficient
     * mechanism for the recursive decent of a OrderBy <i>list</i>.<p>
     *
     * @param pSB the StringBuilder to build the OrderBy into.<p>
     *
     * @see #toString()
     */
    protected void toStringHelper( StringBuilder pSB )
    {
        pSB.append( isDescending() ? "!^" : "^" );
        pSB.append( mColumnDefinition.getName() );
        if ( mSubOrderBy != null )
        {
            pSB.append( ", " );
            mSubOrderBy.toStringHelper( pSB );
        }
    }

    /**
     * Helper method for <b>toSQL()</b> that provides a more efficient
     * mechanism for the recursive decent of a OrderBy <i>list</i>.<p>
     *
     * @param pSB the StringBuilder to build the OrderBy into.<p>
     *
     * @see #toSQL()
     */
    protected void toSqlHelper( StringBuilder pSB )
    {
        pSB.append( mColumnDefinition.getSearchColumnName() );
        pSB.append( isDescending() ? " DESC" : " ASC" );
        if ( mSubOrderBy != null )
        {
            pSB.append( ", " );
            mSubOrderBy.toSqlHelper( pSB );
        }
    }
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/orsup/selection/OrderBy.java

Diff revisions: vs.
Revision Author Commited Message
66 Diff Diff GeorgeS picture GeorgeS Tue 12 Oct, 2010 16:44:38 +0000

Isolation and creation of LiteSoft’s WhereClause code into a JAR

49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

24 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 01:51:38 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000