1 package jp.sourceforge.ea2ddl.dao.allcommon.cbean.sqlclause;
\r
3 import java.io.Serializable;
\r
4 import java.util.Map;
\r
6 import jp.sourceforge.ea2ddl.dao.allcommon.util.SimpleSystemUtil;
\r
9 * @author DBFlute(AutoGenerator)
\r
11 public class OrderByElement implements Serializable {
\r
13 /** Serial version UID. (Default) */
\r
14 private static final long serialVersionUID = 1L;
\r
16 // =====================================================================================
\r
19 /** The value of alias name. */
\r
20 protected String _aliasName;
\r
22 /** The value of column name. */
\r
23 protected String _columnName;
\r
25 /** The value of registered alias name. */
\r
26 protected String _registeredAliasName;
\r
28 /** The value of registered column name. */
\r
29 protected String _registeredColumnName;
\r
31 /** The value of ascDesc. */
\r
32 protected String _ascDesc = "asc";
\r
34 /** The setupper of order-by nulls. */
\r
35 protected OrderByClause.OrderByNullsSetupper _orderByNullsSetupper;
\r
37 /** Is nulls ordered first? */
\r
38 protected boolean _nullsFirst;
\r
40 // =====================================================================================
\r
43 public void setupAsc() {
\r
47 public void setupDesc() {
\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
56 if (_ascDesc.equals("asc")) {
\r
58 } else if (_ascDesc.equals("desc")) {
\r
61 String msg = "The attribute[ascDesc] should be asc or desc: but ascDesc=" + _ascDesc;
\r
62 throw new IllegalStateException(msg);
\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
74 if (_ascDesc.equals("asc")) {
\r
76 } else if (_ascDesc.equals("desc")) {
\r
79 String msg = "The attribute[ascDesc] should be asc or desc: but ascDesc=" + _ascDesc;
\r
80 throw new IllegalStateException(msg);
\r
84 public String getColumnFullName() {
\r
85 final StringBuilder sb = new StringBuilder();
\r
86 if (_aliasName != null) {
\r
87 sb.append(_aliasName).append(".");
\r
89 if (_columnName == null) {
\r
90 String msg = "The attribute[columnName] should not be null.";
\r
91 throw new IllegalStateException(msg);
\r
93 sb.append(_columnName);
\r
94 return sb.toString();
\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
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
107 return sb.toString();
\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
116 if (_ascDesc == null) {
\r
117 String msg = "The attribute[ascDesc] should not be null.";
\r
118 throw new IllegalStateException(msg);
\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
125 sb.append(columnAlias).append(" ").append(_ascDesc);
\r
126 if (_orderByNullsSetupper != null) {
\r
127 return _orderByNullsSetupper.setup(columnAlias, sb.toString(), _nullsFirst);
\r
129 return sb.toString();
\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
175 protected String getLineSeparator() {
\r
176 return SimpleSystemUtil.getLineSeparator();
\r
179 // =====================================================================================
\r
183 * This method overrides the method that is declared at super.
\r
184 * @return The view-string of all-columns value. (NotNull)
\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
196 // =====================================================================================
\r
199 public String getAliasName() {
\r
202 public String getColumnName() {
\r
203 return _columnName;
\r
205 public String getRegisteredAliasName() {
\r
206 return _registeredAliasName;
\r
208 public String getRegisteredColumnName() {
\r
209 return _registeredColumnName;
\r
211 public String getAscDesc() {
\r
214 public void setAliasName(String value) {
\r
215 _aliasName = value;
\r
217 public void setColumnName(String value) {
\r
218 _columnName = value;
\r
220 public void setRegisteredAliasName(String value) {
\r
221 _registeredAliasName = value;
\r
223 public void setRegisteredColumnName(String value) {
\r
224 _registeredColumnName = value;
\r
226 public void setAscDesc(String value) {
\r
229 public void setOrderByNullsSetupper(OrderByClause.OrderByNullsSetupper value, boolean nullsFirst) {
\r
230 _orderByNullsSetupper = value;
\r
231 _nullsFirst = nullsFirst;
\r