OSDN Git Service

accessにつながるようになった気がする
[ea2ddl/ea2ddl.git] / ea2ddl-dao / src / main / java / jp / sourceforge / ea2ddl / dao / allcommon / cbean / sqlclause / OrderByElement.java
1 package jp.sourceforge.ea2ddl.dao.allcommon.cbean.sqlclause;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.Map;\r
5 \r
6 import jp.sourceforge.ea2ddl.dao.allcommon.util.SimpleSystemUtil;\r
7 \r
8 /**\r
9  * @author DBFlute(AutoGenerator)\r
10  */\r
11 public class OrderByElement implements Serializable {\r
12 \r
13     /** Serial version UID. (Default) */\r
14     private static final long serialVersionUID = 1L;\r
15 \r
16     // =====================================================================================\r
17     //                                                                             Attribute\r
18     //                                                                             =========\r
19     /** The value of alias name. */\r
20     protected String _aliasName;\r
21 \r
22     /** The value of column name. */\r
23     protected String _columnName;\r
24 \r
25     /** The value of registered alias name. */\r
26     protected String _registeredAliasName;\r
27 \r
28     /** The value of registered column name. */\r
29     protected String _registeredColumnName;\r
30 \r
31     /** The value of ascDesc. */\r
32     protected String _ascDesc = "asc";\r
33         \r
34         /** The setupper of order-by nulls. */\r
35         protected OrderByClause.OrderByNullsSetupper _orderByNullsSetupper;\r
36         \r
37         /** Is nulls ordered first? */\r
38         protected boolean _nullsFirst;\r
39 \r
40     // =====================================================================================\r
41     //                                                                          Manipulation\r
42     //                                                                          ============\r
43     public void setupAsc() {\r
44         _ascDesc = "asc";\r
45     }\r
46 \r
47     public void setupDesc() {\r
48         _ascDesc = "desc";\r
49     }\r
50 \r
51     public void reverse() {\r
52         if (_ascDesc == null) {\r
53             String msg = "The attribute[ascDesc] should not be null.";\r
54             throw new IllegalStateException(msg);\r
55         }\r
56         if (_ascDesc.equals("asc")) {\r
57             _ascDesc = "desc";\r
58         } else if (_ascDesc.equals("desc")) {\r
59             _ascDesc = "asc";\r
60         } else {\r
61             String msg = "The attribute[ascDesc] should be asc or desc: but ascDesc=" + _ascDesc;\r
62             throw new IllegalStateException(msg);\r
63         }\r
64     }\r
65 \r
66     // =====================================================================================\r
67     //                                                                   Order-By Expression\r
68     //                                                                   ===================\r
69     public boolean isAsc() {\r
70         if (_ascDesc == null) {\r
71             String msg = "The attribute[ascDesc] should not be null.";\r
72             throw new IllegalStateException(msg);\r
73         }\r
74         if (_ascDesc.equals("asc")) {\r
75             return true;\r
76         } else if (_ascDesc.equals("desc")) {\r
77             return false;\r
78         } else {\r
79             String msg = "The attribute[ascDesc] should be asc or desc: but ascDesc=" + _ascDesc;\r
80             throw new IllegalStateException(msg);\r
81         }\r
82     }\r
83 \r
84     public String getColumnFullName() {\r
85         final StringBuilder sb = new StringBuilder();\r
86         if (_aliasName != null) {\r
87             sb.append(_aliasName).append(".");\r
88         }\r
89         if (_columnName == null) {\r
90             String msg = "The attribute[columnName] should not be null.";\r
91             throw new IllegalStateException(msg);\r
92         }\r
93         sb.append(_columnName);\r
94         return sb.toString();\r
95     }\r
96 \r
97     public String getElementClause() {\r
98         if (_ascDesc == null) {\r
99             String msg = "The attribute[ascDesc] should not be null.";\r
100             throw new IllegalStateException(msg);\r
101         }\r
102         final StringBuilder sb = new StringBuilder();\r
103         sb.append(getColumnFullName()).append(" ").append(_ascDesc);\r
104                 if (_orderByNullsSetupper != null) {\r
105                     return _orderByNullsSetupper.setup(getColumnFullName(), sb.toString(), _nullsFirst);\r
106                 } else {\r
107             return sb.toString();\r
108                 }\r
109     }\r
110 \r
111     public String getElementClause(Map<String, String> selectClauseRealColumnAliasMap) {\r
112         if (selectClauseRealColumnAliasMap == null) {\r
113             String msg = "The argument[selectClauseRealColumnAliasMap] should not be null.";\r
114             throw new IllegalArgumentException(msg);\r
115         }\r
116         if (_ascDesc == null) {\r
117             String msg = "The attribute[ascDesc] should not be null.";\r
118             throw new IllegalStateException(msg);\r
119         }\r
120         final StringBuilder sb = new StringBuilder();\r
121         final String columnAlias = selectClauseRealColumnAliasMap.get(getColumnFullName());\r
122         if (columnAlias == null || columnAlias.trim().length() == 0) {\r
123                     throwOrderByColumnNotFoundException(getColumnFullName(), selectClauseRealColumnAliasMap);\r
124         }\r
125         sb.append(columnAlias).append(" ").append(_ascDesc);\r
126                 if (_orderByNullsSetupper != null) {\r
127                     return _orderByNullsSetupper.setup(columnAlias, sb.toString(), _nullsFirst);\r
128                 } else {\r
129             return sb.toString();\r
130                 }\r
131     }\r
132 \r
133     protected void throwOrderByColumnNotFoundException(String columnName, Map<String, String> selectClauseRealColumnAliasMap) {\r
134         String msg = "Look! Read the message below." + getLineSeparator();\r
135         msg = msg + "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" + getLineSeparator();\r
136         msg = msg + "The column for order-by was Not Found in select-clause!" + getLineSeparator();\r
137         msg = msg + getLineSeparator();\r
138         msg = msg + "[Advice]" + getLineSeparator();\r
139         msg = msg + "If you use 'union()' or 'unionAll()', Check your condition-bean!" + getLineSeparator();\r
140         msg = msg + "Order-by for union can use only columns on select-clause." + getLineSeparator();\r
141         msg = msg + "So the rule when using union is little difference from the one when NOT using." + getLineSeparator();\r
142         msg = msg + "  For example:" + getLineSeparator();\r
143         msg = msg + "    [before (x)]" + getLineSeparator();\r
144         msg = msg + "    AaaCB cb = new AaaCB();" + getLineSeparator();\r
145         msg = msg + "    cb.query().setXxx...();" + getLineSeparator();\r
146         msg = msg + "    {" + getLineSeparator();\r
147         msg = msg + "        AaaCB unionCB = new AaaCB();" + getLineSeparator();\r
148         msg = msg + "        unionCB.query().setXxx...();" + getLineSeparator();\r
149         msg = msg + "        cb.union(unionCB.query());" + getLineSeparator();\r
150         msg = msg + "    }" + getLineSeparator();\r
151         msg = msg + "    cb.query().queryBbb().addOrderBy_BbbName_Asc();// *NG!" + getLineSeparator();\r
152         msg = msg + "    " + getLineSeparator();\r
153         msg = msg + "    [after (o)]" + getLineSeparator();\r
154         msg = msg + "    AaaCB cb = new AaaCB();" + getLineSeparator();\r
155         msg = msg + "    cb.setupSelect_Bbb();// *Point!" + getLineSeparator();\r
156         msg = msg + "    cb.query().setXxx...();" + getLineSeparator();\r
157         msg = msg + "    {" + getLineSeparator();\r
158         msg = msg + "        AaaCB unionCB = new AaaCB();" + getLineSeparator();\r
159         msg = msg + "        unionCB.query().setXxx...();" + getLineSeparator();\r
160         msg = msg + "        cb.union(unionCB.query());" + getLineSeparator();\r
161         msg = msg + "    }" + getLineSeparator();\r
162         msg = msg + "    cb.query().queryBbb().addOrderBy_BbbName_Asc();// *OK!" + getLineSeparator();\r
163         msg = msg + "    " + getLineSeparator();\r
164         msg = msg + "Or else if you DON'T use 'union()' or 'unionAll()', This is the Framework Exception!" + getLineSeparator();\r
165         msg = msg + getLineSeparator();\r
166         msg = msg + "[Target Column]" + getLineSeparator();\r
167                 msg = msg + columnName + getLineSeparator();\r
168         msg = msg + getLineSeparator();\r
169         msg = msg + "[Internal Object]" + getLineSeparator();\r
170                 msg = msg + "selectClauseRealColumnAliasMap=" + selectClauseRealColumnAliasMap + getLineSeparator();\r
171         msg = msg + "* * * * * * * * * */" + getLineSeparator();\r
172         throw new IllegalStateException(msg);\r
173     }\r
174 \r
175     protected String getLineSeparator() {\r
176         return SimpleSystemUtil.getLineSeparator();\r
177     }\r
178 \r
179     // =====================================================================================\r
180     //                                                                        Basic Override\r
181     //                                                                        ==============\r
182     /**\r
183      * This method overrides the method that is declared at super.\r
184      * @return The view-string of all-columns value. (NotNull)\r
185      */\r
186     public String toString() {\r
187         final StringBuilder sb = new StringBuilder();\r
188         sb.append("{aliasName=").append(_aliasName);\r
189         sb.append(" columnName=").append(_columnName);\r
190         sb.append(" registeredAliasName=").append(_registeredAliasName);\r
191         sb.append(" registeredColumnName=").append(_registeredColumnName);\r
192         sb.append(" ascDesc=").append(_ascDesc).append("}");\r
193         return sb.toString();\r
194     }\r
195 \r
196     // =====================================================================================\r
197     //                                                                              Accessor\r
198     //                                                                              ========\r
199     public String getAliasName() {\r
200         return _aliasName;\r
201     }\r
202     public String getColumnName() {\r
203         return _columnName;\r
204     }\r
205     public String getRegisteredAliasName() {\r
206         return _registeredAliasName;\r
207     }\r
208     public String getRegisteredColumnName() {\r
209         return _registeredColumnName;\r
210     }\r
211     public String getAscDesc() {\r
212         return _ascDesc;\r
213     }\r
214     public void setAliasName(String value) {\r
215         _aliasName = value;\r
216     }\r
217     public void setColumnName(String value) {\r
218         _columnName = value;\r
219     }\r
220     public void setRegisteredAliasName(String value) {\r
221         _registeredAliasName = value;\r
222     }\r
223     public void setRegisteredColumnName(String value) {\r
224         _registeredColumnName = value;\r
225     }\r
226     public void setAscDesc(String value) {\r
227         _ascDesc = value;\r
228     }\r
229     public void setOrderByNullsSetupper(OrderByClause.OrderByNullsSetupper value, boolean nullsFirst) {\r
230         _orderByNullsSetupper = value;\r
231                 _nullsFirst = nullsFirst;\r
232     }\r
233 }\r