OSDN Git Service

Access対応中
[ea2ddl/ea2ddl.git] / ea2ddl-gen / dbflute / templates / om / java / allcommon / cbean / sqlclause / OrderByClause.vm
1 ${database.allClassCopyright}package ${glPackageBaseCommonSqlClause};\r
2 \r
3 #set ($myClassName = "${glOrderByClauseName}")\r
4 import java.util.Map;\r
5 import java.util.List;\r
6 import java.util.ArrayList;\r
7 import java.util.Iterator;\r
8 import java.util.StringTokenizer;\r
9 \r
10 /**\r
11  * @author ${database.ClassAuthor}\r
12  */\r
13 public class ${myClassName} implements java.io.Serializable {\r
14 \r
15     /** Serial version UID. (Default) */\r
16     private static final long serialVersionUID = 1L;\r
17 \r
18     // =====================================================================================\r
19     //                                                                             Attribute\r
20     //                                                                             =========\r
21     protected List<${glOrderByElementName}> _orderByList = new ArrayList${database.filterGenericsString(${glOrderByElementName})}();\r
22 \r
23     // =====================================================================================\r
24     //                                                                           Constructor\r
25     //                                                                           ===========\r
26     /**\r
27      * Constructor.\r
28      */\r
29     public ${myClassName}() {\r
30     }\r
31 \r
32     // =====================================================================================\r
33     //                                                                              Behavior\r
34     //                                                                              ========\r
35     /**\r
36      * Add order-by element.\r
37      * @param orderByElement Order-by element. (NotNull)\r
38      */\r
39     public void addOrderByElement(${glOrderByElementName} orderByElement) {\r
40         _orderByList.add(orderByElement);\r
41     }\r
42 \r
43     /**\r
44      * Insert first order-by element .\r
45      * @param orderByElement Order-by element. (NotNull)\r
46      */\r
47     public void insertFirstOrderByElement(${glOrderByElementName} orderByElement) {\r
48         _orderByList.add(0, orderByElement);\r
49     }\r
50 \r
51     public void reverseAll() {\r
52         for (Iterator<${glOrderByElementName}> ite = _orderByList.iterator(); ite.hasNext(); ) {\r
53             ite.next().reverse();\r
54         }\r
55     }\r
56 \r
57     public void exchangeFirstOrderByElementForLastOne() {\r
58         if (_orderByList.size() > 1) {\r
59             final ${glOrderByElementName} first = _orderByList.get(0);\r
60             final ${glOrderByElementName} last = _orderByList.get(_orderByList.size() - 1);\r
61             _orderByList.set(0, last);\r
62             _orderByList.set(_orderByList.size() - 1, first);\r
63         }\r
64     }\r
65         \r
66         public void addNullsFirstToPreviousOrderByElement(OrderByNullsSetupper filter) {\r
67             if (_orderByList.isEmpty()) {\r
68                     return;\r
69                 }\r
70                 final ${glOrderByElementName} last = _orderByList.get(_orderByList.size() - 1);\r
71                 last.setOrderByNullsSetupper(filter, true);\r
72         }\r
73         \r
74         public void addNullsLastToPreviousOrderByElement(OrderByNullsSetupper filter) {\r
75             if (_orderByList.isEmpty()) {\r
76                     return;\r
77                 }\r
78                 final ${glOrderByElementName} last = _orderByList.get(_orderByList.size() - 1);\r
79                 last.setOrderByNullsSetupper(filter, false);\r
80         }\r
81         \r
82         public static interface OrderByNullsSetupper {\r
83         public String setup(String columnName, String orderByElementClause, boolean nullsFirst);\r
84         }\r
85 \r
86     public List<${glOrderByElementName}> getOrderByList() {\r
87         return _orderByList;\r
88     }\r
89 \r
90     public String getOrderByClause() {\r
91             return getOrderByClause(null);\r
92     }\r
93 \r
94     public String getOrderByClause(Map<String, String> selectClauseRealColumnAliasMap) {\r
95         if (_orderByList.isEmpty()) {\r
96             return "";\r
97         }\r
98         final StringBuffer sb = new StringBuffer();\r
99         final String delimiter = ", ";\r
100         for (final Iterator<${glOrderByElementName}> ite = _orderByList.iterator(); ite.hasNext(); ) {\r
101             final ${glOrderByElementName} element = ite.next();\r
102             sb.append(delimiter);\r
103                         if (selectClauseRealColumnAliasMap != null) {\r
104                             sb.append(element.getElementClause(selectClauseRealColumnAliasMap));\r
105                         } else {\r
106                             sb.append(element.getElementClause());\r
107                         }\r
108         }\r
109         sb.delete(0, delimiter.length()).insert(0, "order by ");\r
110         return sb.toString();\r
111     }\r
112 \r
113     public boolean isSameOrderByColumn(String orderByProperty) {\r
114         final List<String> orderByList = new ArrayList<String>();\r
115         {\r
116             final StringTokenizer st = new StringTokenizer(orderByProperty, "/");\r
117             while (st.hasMoreElements()) {\r
118                 orderByList.add(st.nextToken());\r
119             }\r
120         }\r
121         if (_orderByList.size() != orderByList.size()) {\r
122             return false;\r
123         }\r
124         int count = 0;\r
125         for (final Iterator<String> ite = orderByList.iterator(); ite.hasNext(); ) {\r
126             final String columnFullName = ite.next();\r
127             final ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(count);\r
128             if (!element.getColumnFullName().equals(columnFullName)) {\r
129                 return false;\r
130             }\r
131             count++;\r
132         }\r
133         return true;\r
134     }\r
135 \r
136     // =====================================================================================\r
137     //                                                                         First Element\r
138     //                                                                         =============\r
139     public boolean isFirstElementAsc() {\r
140         if (isEmpty()) {\r
141             String msg = "This order-by clause is empty: " + toString();\r
142             throw new IllegalStateException(msg);\r
143         }\r
144         final ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(0);\r
145         return element.isAsc();\r
146     }\r
147 \r
148     public boolean isFirstElementDesc() {\r
149         return !isFirstElementAsc();\r
150     }\r
151 \r
152     public boolean isSameAsFirstElementAliasName(String expectedAliasName) {\r
153         if (isEmpty()) {\r
154             String msg = "This order-by clause is empty: " + toString();\r
155             throw new RuntimeException(msg);\r
156         }\r
157         ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(0);\r
158         String actualAliasName = element.getAliasName();\r
159         if (actualAliasName != null && expectedAliasName != null) {\r
160             return actualAliasName.equalsIgnoreCase(expectedAliasName);\r
161         } else {\r
162             return false;\r
163         }\r
164     }\r
165 \r
166     /**\r
167      * @param expectedColumnName Expected column-name. (Nullable)\r
168      * @return Determination.\r
169      */\r
170     public boolean isSameAsFirstElementColumnName(String expectedColumnName) {\r
171         if (isEmpty()) {\r
172             String msg = "This order-by clause is empty: " + toString();\r
173             throw new RuntimeException(msg);\r
174         }\r
175         ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(0);\r
176         String actualColumnName = element.getColumnName();\r
177         if (actualColumnName != null && expectedColumnName != null) {\r
178             return actualColumnName.equalsIgnoreCase(expectedColumnName);\r
179         } else {\r
180             return false;\r
181         }\r
182     }\r
183 \r
184     /**\r
185      * @param expectedAliasName Expected alias-name. (Nullable)\r
186      * @return Determination.\r
187      */\r
188     public boolean isSameAsFirstElementRegisteredAliasName(String expectedAliasName) {\r
189         if (isEmpty()) {\r
190             String msg = "This order-by clause is empty: " + toString();\r
191             throw new RuntimeException(msg);\r
192         }\r
193         ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(0);\r
194         String actualAliasName = element.getRegisteredAliasName();\r
195         if (actualAliasName != null && expectedAliasName != null) {\r
196             return actualAliasName.equalsIgnoreCase(expectedAliasName);\r
197         } else {\r
198             return false;\r
199         }\r
200     }\r
201 \r
202     /**\r
203      * @param expectedColumnName Expected column-name. (Nullable)\r
204      * @return Determination.\r
205      */\r
206     public boolean isSameAsFirstElementRegisteredColumnName(String expectedColumnName) {\r
207         if (isEmpty()) {\r
208             String msg = "This order-by clause is empty: " + toString();\r
209             throw new RuntimeException(msg);\r
210         }\r
211         ${glOrderByElementName} element = (${glOrderByElementName})_orderByList.get(0);\r
212         String actualColumnName = element.getRegisteredColumnName();\r
213         if (actualColumnName != null && expectedColumnName != null) {\r
214             return actualColumnName.equalsIgnoreCase(expectedColumnName);\r
215         } else {\r
216             return false;\r
217         }\r
218     }\r
219 \r
220     // =====================================================================================\r
221     //                                                                      Delegate of List\r
222     //                                                                      ================\r
223     /**\r
224      * Is empty?\r
225      * @return Determination.\r
226      */\r
227     public boolean isEmpty() {\r
228         return _orderByList.isEmpty();\r
229     }\r
230 \r
231     /**\r
232      * Get iterator of order-by list.\r
233      * @return Determination.\r
234      */\r
235     public java.util.Iterator<${glOrderByElementName}> iterator() {\r
236         return _orderByList.iterator();\r
237     }\r
238 \r
239     /**\r
240      * Clear order-by list.\r
241      */\r
242     public void clear() {\r
243         _orderByList.clear();\r
244     }\r
245 \r
246     // =====================================================================================\r
247     //                                                                 Basic-Override Method\r
248     //                                                                 =====================\r
249     /**\r
250      * This method overrides the method that is declared at super.\r
251      * @return View-string of all-columns value.\r
252      */\r
253     public String toString() {\r
254         return _orderByList.toString();\r
255     }\r
256 }\r