|
|||||||||||||||||||
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover | |||||||||||||||||||
Source file | Conditionals | Statements | Methods | TOTAL | |||||||||||||||
DynamicSelectUnion.java | 0% | 0% | 0% | 0% |
|
1 |
/*
|
|
2 |
* Joey and its relative products are published under the terms
|
|
3 |
* of the Apache Software License.
|
|
4 |
*/
|
|
5 |
package org.asyrinx.brownie.core.sql;
|
|
6 |
|
|
7 |
import java.util.ArrayList;
|
|
8 |
import java.util.Iterator;
|
|
9 |
import java.util.List;
|
|
10 |
|
|
11 |
import org.asyrinx.brownie.core.lang.StringUtils;
|
|
12 |
|
|
13 |
/**
|
|
14 |
* DynamicSQLを用いて動的にSQLを生成する場合に、 unionやunion allを使用する場合には、このクラスを使用してください。
|
|
15 |
*
|
|
16 |
* @author Akima
|
|
17 |
*/
|
|
18 |
public class DynamicSelectUnion { |
|
19 |
|
|
20 |
/**
|
|
21 |
*
|
|
22 |
*/
|
|
23 | 0 |
public DynamicSelectUnion() {
|
24 | 0 |
super();
|
25 |
} |
|
26 |
|
|
27 |
/** 連結されるDynamicSQLを保持するリスト */
|
|
28 |
final List sqlList = new ArrayList();
|
|
29 |
|
|
30 |
/** 結合の種類:union */
|
|
31 |
public static final String TYPE_UNION = "union"; |
|
32 |
|
|
33 |
/** 結合の種類:union all */
|
|
34 |
public static final String TYPE_UNION_ALL = "union all"; |
|
35 |
|
|
36 |
/**
|
|
37 |
* 結合の種類 <br>
|
|
38 |
* TYPE_UNIONか、TYPE_UNION_ALLを使用する。
|
|
39 |
*/
|
|
40 |
private String type = TYPE_UNION_ALL;
|
|
41 |
|
|
42 |
/**
|
|
43 |
* 結合されたSQLをバッファに出力する。
|
|
44 |
*
|
|
45 |
* @param dest
|
|
46 |
* 出力先バッファ
|
|
47 |
*/
|
|
48 | 0 |
public void build(StringBuffer dest) { |
49 | 0 |
dest.append(StringUtils.join(sqlList.iterator(), " \n" + type + "\n ")); |
50 | 0 |
if ((orderByFields != null) && (!orderByFields.isEmpty())) { |
51 | 0 |
dest.append("\n order by \n");
|
52 | 0 |
dest.append(StringUtils.join(orderByFields.iterator(), ", "));
|
53 |
} |
|
54 |
} |
|
55 |
|
|
56 |
/**
|
|
57 |
* 結合されたSQLをバッファに出力する。
|
|
58 |
*
|
|
59 |
* @param dest
|
|
60 |
* 出力先バッファ
|
|
61 |
*/
|
|
62 | 0 |
public String build() {
|
63 | 0 |
final StringBuffer result = new StringBuffer();
|
64 | 0 |
build(result); |
65 | 0 |
return result.toString();
|
66 |
} |
|
67 |
|
|
68 |
/**
|
|
69 |
* @return @see java.lang.Object#toString()
|
|
70 |
*/
|
|
71 | 0 |
public String toString() {
|
72 | 0 |
return this.build(); |
73 |
} |
|
74 |
|
|
75 |
/** order by句で順序を示すフィールド名を保持するリスト */
|
|
76 |
private final List orderByFields = new ArrayList(); |
|
77 |
|
|
78 |
/**
|
|
79 |
* order by句のフィールドを追加します。
|
|
80 |
*
|
|
81 |
* @param field
|
|
82 |
*/
|
|
83 | 0 |
public void addOrderBy(String field) { |
84 | 0 |
orderByFields.add(field); |
85 |
} |
|
86 |
|
|
87 |
/**
|
|
88 |
* order by句のフィールドのListを返します。
|
|
89 |
*
|
|
90 |
* @return List
|
|
91 |
*/
|
|
92 | 0 |
public List getOrderByFields() {
|
93 | 0 |
return orderByFields;
|
94 |
} |
|
95 |
|
|
96 |
/**
|
|
97 |
* DynamicSQLを追加します。 <br>
|
|
98 |
* 追加時に追加されるDynamicSQLのorder by句はクリアされます。ご注意ください。
|
|
99 |
*
|
|
100 |
* @param sql
|
|
101 |
* @return
|
|
102 |
*/
|
|
103 | 0 |
public boolean add(DynamicSelect sql) { |
104 | 0 |
if (sql == null) |
105 | 0 |
return false; |
106 |
//sql.getOrderByFields().clear();
|
|
107 | 0 |
return sqlList.add(sql);
|
108 |
} |
|
109 |
|
|
110 |
/**
|
|
111 |
*
|
|
112 |
*/
|
|
113 | 0 |
public void clear() { |
114 | 0 |
sqlList.clear(); |
115 |
} |
|
116 |
|
|
117 |
/**
|
|
118 |
* @param sql
|
|
119 |
* @return
|
|
120 |
*/
|
|
121 | 0 |
public boolean contains(DynamicSelect sql) { |
122 | 0 |
return sqlList.contains(sql);
|
123 |
} |
|
124 |
|
|
125 |
/**
|
|
126 |
* @param index
|
|
127 |
* @return
|
|
128 |
*/
|
|
129 | 0 |
public DynamicSelect get(int index) { |
130 | 0 |
return (DynamicSelect) sqlList.get(index);
|
131 |
} |
|
132 |
|
|
133 |
/**
|
|
134 |
* @param sql
|
|
135 |
* @return
|
|
136 |
*/
|
|
137 | 0 |
public int indexOf(DynamicSelect sql) { |
138 | 0 |
return sqlList.indexOf(sql);
|
139 |
} |
|
140 |
|
|
141 |
/**
|
|
142 |
* @return
|
|
143 |
*/
|
|
144 | 0 |
public boolean isEmpty() { |
145 | 0 |
return sqlList.isEmpty();
|
146 |
} |
|
147 |
|
|
148 |
/**
|
|
149 |
* @return
|
|
150 |
*/
|
|
151 | 0 |
public Iterator iterator() {
|
152 | 0 |
return sqlList.iterator();
|
153 |
} |
|
154 |
|
|
155 |
/**
|
|
156 |
* @param index
|
|
157 |
* @return
|
|
158 |
*/
|
|
159 | 0 |
public DynamicSelect remove(int index) { |
160 | 0 |
return (DynamicSelect) sqlList.remove(index);
|
161 |
} |
|
162 |
|
|
163 |
/**
|
|
164 |
* @param sql
|
|
165 |
* @return
|
|
166 |
*/
|
|
167 | 0 |
public boolean remove(DynamicSelect sql) { |
168 | 0 |
return sqlList.remove(sql);
|
169 |
} |
|
170 |
|
|
171 |
/**
|
|
172 |
* @return
|
|
173 |
*/
|
|
174 | 0 |
public int size() { |
175 | 0 |
return sqlList.size();
|
176 |
} |
|
177 |
|
|
178 |
/**
|
|
179 |
* @return
|
|
180 |
*/
|
|
181 | 0 |
public String getType() {
|
182 | 0 |
return type;
|
183 |
} |
|
184 |
|
|
185 |
/**
|
|
186 |
* @param string
|
|
187 |
*/
|
|
188 | 0 |
public void setType(String string) { |
189 | 0 |
type = string; |
190 |
} |
|
191 |
|
|
192 |
} |
|