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 }