View Javadoc
1   /*
2    * Copyright 2009-2013 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.orangesignal.csv.filters;
18  
19  import java.util.Comparator;
20  import java.util.regex.Pattern;
21  
22  /**
23   * Java プログラム要素フィルタを構築するファクトリクラスを提供します。
24   * 
25   * @author Koji Sugisawa
26   * @since 1.2.3
27   */
28  public abstract class BeanExpressions {
29  
30  	/**
31  	 * デフォルトコンストラクタです。
32  	 */
33  	protected BeanExpressions() {}
34  
35  	/**
36  	 * Java プログラム要素のフィールド値が <code>null</code> であるかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
37  	 * 
38  	 * @param name フィールド名
39  	 * @return Java プログラム要素フィルタ
40  	 * @throws IllegalArgumentException <code>name</code> が <code>null</code> の場合
41  	 */
42  	public static BeanNullExpression isNull(final String name) {
43  		return new BeanNullExpression(name);
44  	}
45  
46  	/**
47  	 * Java プログラム要素のフィールド値が <code>null</code> でないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
48  	 * 
49  	 * @param name フィールド名
50  	 * @return Java プログラム要素フィルタ
51  	 * @throws IllegalArgumentException <code>name</code> が <code>null</code> の場合
52  	 */
53  	public static BeanNotNullExpression isNotNull(final String name) {
54  		return new BeanNotNullExpression(name);
55  	}
56  
57  	/**
58  	 * Java プログラム要素のフィールド値が空かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
59  	 * 
60  	 * @param name フィールド名
61  	 * @return Java プログラム要素フィルタ
62  	 * @throws IllegalArgumentException <code>name</code> が <code>null</code> の場合
63  	 */
64  	public static BeanEmptyExpression isEmpty(final String name) {
65  		return new BeanEmptyExpression(name);
66  	}
67  
68  	/**
69  	 * Java プログラム要素のフィールド値が空でないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
70  	 * 
71  	 * @param name フィールド名
72  	 * @return Java プログラム要素フィルタ
73  	 * @throws IllegalArgumentException <code>name</code> が <code>null</code> の場合
74  	 */
75  	public static BeanNotEmptyExpression isNotEmpty(final String name) {
76  		return new BeanNotEmptyExpression(name);
77  	}
78  
79  	/**
80  	 * Java プログラム要素のフィールド値が判定基準値と等しいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
81  	 * 
82  	 * @param name フィールド名
83  	 * @param criteria 判定基準値
84  	 * @return Java プログラム要素フィルタ
85  	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
86  	 */
87  	public static BeanEqualExpression eq(final String name, final Object criteria) {
88  		return new BeanEqualExpression(name, criteria);
89  	}
90  
91  	/**
92  	 * Java プログラム要素のフィールド値が判定基準値と等しいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
93  	 * 
94  	 * @param name フィールド名
95  	 * @param criteria 判定基準値
96  	 * @param ignoreCase 大文字と小文字を区別するかどうか
97  	 * @return Java プログラム要素フィルタ
98  	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
99  	 */
100 	public static BeanEqualExpression eq(final String name, final String criteria, final boolean ignoreCase) {
101 		return new BeanEqualExpression(name, criteria, ignoreCase);
102 	}
103 
104 	/**
105 	 * Java プログラム要素のフィールド値が判定基準値と等しくないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
106 	 * 
107 	 * @param name フィールド名
108 	 * @param criteria 判定基準値
109 	 * @return Java プログラム要素フィルタ
110 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
111 	 */
112 	public static BeanNotEqualExpression ne(final String name, final Object criteria) {
113 		return new BeanNotEqualExpression(name, criteria);
114 	}
115 
116 	/**
117 	 * Java プログラム要素のフィールド値が判定基準値と等しくないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
118 	 * 
119 	 * @param name フィールド名
120 	 * @param criteria 判定基準値
121 	 * @param ignoreCase 大文字と小文字を区別するかどうか
122 	 * @return Java プログラム要素フィルタ
123 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
124 	 */
125 	public static BeanNotEqualExpression ne(final String name, final String criteria, final boolean ignoreCase) {
126 		return new BeanNotEqualExpression(name, criteria, ignoreCase);
127 	}
128 
129 	/**
130 	 * Java プログラム要素のフィールド値が判定基準値群のいずれかと等しいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
131 	 * 
132 	 * @param name フィールド名
133 	 * @param criterias 判定基準値群
134 	 * @return Java プログラム要素フィルタ
135 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
136 	 */
137 	public static BeanInExpression in(final String name, final Object... criterias) {
138 		return new BeanInExpression(name, criterias);
139 	}
140 
141 	/**
142 	 * Java プログラム要素のフィールド値が判定基準値群のいずれかと等しいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
143 	 * 
144 	 * @param name フィールド名
145 	 * @param criterias 判定基準値群
146 	 * @return Java プログラム要素フィルタ
147 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
148 	 */
149 	public static BeanInExpression in(final String name, final String... criterias) {
150 		return new BeanInExpression(name, criterias);
151 	}
152 
153 	/**
154 	 * Java プログラム要素のフィールド値が判定基準値群のいずれかと等しいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
155 	 * 
156 	 * @param name フィールド名
157 	 * @param criterias 判定基準値群
158 	 * @param ignoreCase 大文字と小文字を区別するかどうか
159 	 * @return Java プログラム要素フィルタ
160 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
161 	 */
162 	public static BeanInExpression in(final String name, final String[] criterias, final boolean ignoreCase) {
163 		return new BeanInExpression(name, criterias, ignoreCase);
164 	}
165 
166 	/**
167 	 * Java プログラム要素のフィールド値が判定基準値群のいずれとも等しくないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
168 	 * 
169 	 * @param name フィールド名
170 	 * @param criterias 判定基準値群
171 	 * @return Java プログラム要素フィルタ
172 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
173 	 */
174 	public static BeanNotInExpression notIn(final String name, final Object... criterias) {
175 		return new BeanNotInExpression(name, criterias);
176 	}
177 
178 	/**
179 	 * Java プログラム要素のフィールド値が判定基準値群のいずれとも等しくないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
180 	 * 
181 	 * @param name フィールド名
182 	 * @param criterias 判定基準値群
183 	 * @return Java プログラム要素フィルタ
184 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
185 	 */
186 	public static BeanNotInExpression notIn(final String name, final String... criterias) {
187 		return new BeanNotInExpression(name, criterias);
188 	}
189 
190 	/**
191 	 * Java プログラム要素のフィールド値が判定基準値群のいずれとも等しくないかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
192 	 * 
193 	 * @param name フィールド名
194 	 * @param criterias 判定基準値群
195 	 * @param ignoreCase 大文字と小文字を区別するかどうか
196 	 * @return Java プログラム要素フィルタ
197 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
198 	 */
199 	public static BeanNotInExpression notIn(final String name, final String[] criterias, final boolean ignoreCase) {
200 		return new BeanNotInExpression(name, criterias, ignoreCase);
201 	}
202 
203 	/**
204 	 * Java プログラム要素のフィールド値が正規表現パターンとマッチするかどうかでフィルタを適用する区切り文字形式データフィルタを構築して返します。
205 	 * 
206 	 * @param name 項目名
207 	 * @param pattern 正規表現パターン
208 	 * @return 区切り文字形式データフィルタ
209 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
210 	 */
211 	public static BeanRegexExpression regex(final String name, final String pattern) {
212 		return new BeanRegexExpression(name, pattern);
213 	}
214 
215 	/**
216 	 * Java プログラム要素のフィールド値が正規表現パターンとマッチするかどうかでフィルタを適用する区切り文字形式データフィルタを構築して返します。
217 	 * 
218 	 * @param name 項目名
219 	 * @param pattern 正規表現パターン
220 	 * @param ignoreCase 大文字と小文字を区別するかどうか
221 	 * @return 区切り文字形式データフィルタ
222 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
223 	 */
224 	public static BeanRegexExpression regex(final String name, final String pattern, final boolean ignoreCase) {
225 		return new BeanRegexExpression(name, pattern, ignoreCase);
226 	}
227 
228 	/**
229 	 * Java プログラム要素のフィールド値が正規表現パターンとマッチするかどうかでフィルタを適用する区切り文字形式データフィルタを構築して返します。
230 	 * 
231 	 * @param name 項目名
232 	 * @param pattern 正規表現パターン
233 	 * @param flags マッチフラグ
234 	 * @return 区切り文字形式データフィルタ
235 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
236 	 */
237 	public static BeanRegexExpression regex(final String name, final String pattern, final int flags) {
238 		return new BeanRegexExpression(name, pattern, flags);
239 	}
240 
241 	/**
242 	 * Java プログラム要素のフィールド値が正規表現パターンとマッチするかどうかでフィルタを適用する区切り文字形式データフィルタを構築して返します。
243 	 * 
244 	 * @param name 項目名
245 	 * @param pattern 正規表現パターン
246 	 * @return 区切り文字形式データフィルタ
247 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
248 	 */
249 	public static BeanRegexExpression regex(final String name, final Pattern pattern) {
250 		return new BeanRegexExpression(name, pattern);
251 	}
252 
253 	/**
254 	 * Java プログラム要素のフィールド値が判定基準値より大きいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
255 	 * 
256 	 * @param name フィールド名
257 	 * @param criteria 判定基準値
258 	 * @return Java プログラム要素フィルタ
259 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
260 	 */
261 	public static BeanGreaterThanExpression gt(final String name, final Object criteria) {
262 		return new BeanGreaterThanExpression(name, criteria);
263 	}
264 
265 	/**
266 	 * Java プログラム要素のフィールド値が判定基準値より大きいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
267 	 * 
268 	 * @param name フィールド名
269 	 * @param criteria 判定基準値
270 	 * @param comparator コンパレータ (オプション)
271 	 * @return Java プログラム要素フィルタ
272 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
273 	 */
274 	public static BeanGreaterThanExpression gt(final String name, final Object criteria, final Comparator<Object> comparator) {
275 		return new BeanGreaterThanExpression(name, criteria, comparator);
276 	}
277 
278 	/**
279 	 * Java プログラム要素のフィールド値が判定基準値より小さいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
280 	 * 
281 	 * @param name フィールド名
282 	 * @param criteria 判定基準値
283 	 * @return Java プログラム要素フィルタ
284 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
285 	 */
286 	public static BeanLessThanExpression lt(final String name, final Object criteria) {
287 		return new BeanLessThanExpression(name, criteria);
288 	}
289 
290 	/**
291 	 * Java プログラム要素のフィールド値が判定基準値より小さいかどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
292 	 * 
293 	 * @param name フィールド名
294 	 * @param criteria 判定基準値
295 	 * @param comparator コンパレータ (オプション)
296 	 * @return Java プログラム要素フィルタ
297 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
298 	 */
299 	public static BeanLessThanExpression lt(final String name, final Object criteria, @SuppressWarnings("rawtypes") final Comparator comparator) {
300 		return new BeanLessThanExpression(name, criteria, comparator);
301 	}
302 
303 	/**
304 	 * Java プログラム要素のフィールド値が判定基準値以上かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
305 	 * 
306 	 * @param name フィールド名
307 	 * @param criteria 判定基準値
308 	 * @return Java プログラム要素フィルタ
309 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
310 	 */
311 	public static BeanGreaterThanOrEqualExpression ge(final String name, final Object criteria) {
312 		return new BeanGreaterThanOrEqualExpression(name, criteria);
313 	}
314 
315 	/**
316 	 * Java プログラム要素のフィールド値が判定基準値以上かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
317 	 * 
318 	 * @param name フィールド名
319 	 * @param criteria 判定基準値
320 	 * @param comparator コンパレータ (オプション)
321 	 * @return Java プログラム要素フィルタ
322 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
323 	 */
324 	public static BeanGreaterThanOrEqualExpression ge(final String name, final Object criteria, @SuppressWarnings("rawtypes") final Comparator comparator) {
325 		return new BeanGreaterThanOrEqualExpression(name, criteria, comparator);
326 	}
327 
328 	/**
329 	 * Java プログラム要素のフィールド値が判定基準値以下かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
330 	 * 
331 	 * @param name フィールド名
332 	 * @param criteria 判定基準値
333 	 * @return Java プログラム要素フィルタ
334 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
335 	 */
336 	public static BeanLessThanOrEqualExpression le(final String name, final Object criteria) {
337 		return new BeanLessThanOrEqualExpression(name, criteria);
338 	}
339 
340 	/**
341 	 * Java プログラム要素のフィールド値が判定基準値以下かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
342 	 * 
343 	 * @param name フィールド名
344 	 * @param criteria 判定基準値
345 	 * @param comparator コンパレータ (オプション)
346 	 * @return Java プログラム要素フィルタ
347 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
348 	 */
349 	public static BeanLessThanOrEqualExpression le(final String name, final Object criteria, @SuppressWarnings("rawtypes") final Comparator comparator) {
350 		return new BeanLessThanOrEqualExpression(name, criteria, comparator);
351 	}
352 
353 	/**
354 	 * Java プログラム要素のフィールド値が下限値から上限値の範囲かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
355 	 * 
356 	 * @param name フィールド名
357 	 * @param low 下限値
358 	 * @param high 上限値
359 	 * @return Java プログラム要素フィルタ
360 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
361 	 */
362 	public static BeanBetweenExpression between(final String name, final Object low, final Object high) {
363 		return new BeanBetweenExpression(name, low, high);
364 	}
365 
366 	/**
367 	 * Java プログラム要素のフィールド値が下限値から上限値の範囲かどうかでフィルタを適用する Java プログラム要素フィルタを構築して返します。
368 	 * 
369 	 * @param name フィールド名
370 	 * @param low 下限値
371 	 * @param high 上限値
372 	 * @param comparator コンパレータ (オプション)
373 	 * @return Java プログラム要素フィルタ
374 	 * @throws IllegalArgumentException パラメータが <code>null</code> の場合
375 	 */
376 	public static BeanBetweenExpression between(final String name, final Object low, final Object high, @SuppressWarnings("rawtypes") final Comparator comparator) {
377 		return new BeanBetweenExpression(name, low, high, comparator);
378 	}
379 
380 	/**
381 	 * Java プログラム要素フィルタ群の論理積でフィルタを適用する Java プログラム要素フィルタを構築して返します。
382 	 * 
383 	 * @param filters 論理積する Java プログラム要素フィルタ群
384 	 * @return Java プログラム要素フィルタ
385 	 * @throws IllegalArgumentException <code>filters</code> が <code>null</code> の場合
386 	 */
387 	public static BeanLogicalExpression and(final BeanFilter... filters) {
388 		return new BeanAndExpression(filters);
389 	}
390 
391 	/**
392 	 * Java プログラム要素フィルタ群の論理和でフィルタを適用する Java プログラム要素フィルタを構築して返します。
393 	 * 
394 	 * @param filters 論理和する Java プログラム要素フィルタ群
395 	 * @return Java プログラム要素フィルタ
396 	 * @throws IllegalArgumentException <code>filters</code> が <code>null</code> の場合
397 	 */
398 	public static BeanLogicalExpression or(final BeanFilter... filters) {
399 		return new BeanOrExpression(filters);
400 	}
401 
402 	/**
403 	 * Java プログラム要素フィルタの論理否定でフィルタを適用する Java プログラム要素フィルタを構築して返します。
404 	 * 
405 	 * @param filter 論理否定する Java プログラム要素フィルタ
406 	 * @return Java プログラム要素フィルタ
407 	 * @throws IllegalArgumentException <code>filter</code> が <code>null</code> の場合
408 	 */
409 	public static BeanNotExpression not(final BeanFilter filter) {
410 		return new BeanNotExpression(filter);
411 	}
412 
413 }