Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/util/data/QueryBuilder.java @ 708:e50c7f2f864d
fixed lower case search field
author | Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de> |
---|---|
date | Wed, 15 Jul 2015 14:17:02 +0200 |
parents | ca536cd50120 |
children | 7133f6114920 |
rev | line source |
---|---|
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.util.data; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 import java.util.List; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import javax.persistence.EntityManager; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import javax.persistence.criteria.CriteriaBuilder; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import javax.persistence.criteria.CriteriaQuery; |
623
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
15 import javax.persistence.criteria.Expression; |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 import javax.persistence.criteria.Path; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import javax.persistence.criteria.Predicate; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 import javax.persistence.criteria.Root; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 public class QueryBuilder<T> { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 private EntityManager manager; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 private CriteriaBuilder builder; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 private CriteriaQuery<T> query; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 private Root<T> root; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 private Class<T> clazz; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 private Predicate filter; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 * Create a new QueryBuilder for the specified class. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 * @param manager |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 * @param clazz |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 public QueryBuilder(EntityManager manager, Class<T> clazz) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 this.manager = manager; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 this.clazz = clazz; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 this.builder = this.manager.getCriteriaBuilder(); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 this.query = this.builder.createQuery(this.clazz); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 this.root = this.query.from(this.clazz); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 * Get the criteria query build with this class. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 * @return The query. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 public CriteriaQuery<T> getQuery() { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 if (this.filter == null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 this.query.where(); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 return this.query; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 this.query.where(this.filter); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 return this.query; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * Logical AND operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 * @param id The database column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 * @param value The filter value |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 public QueryBuilder<T> and(String id, Object value) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 Predicate p = this.builder.equal(this.root.get(id), value); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 this.filter = this.builder.and(this.filter, p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 this.filter = this.builder.and(p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 /** |
674
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
79 * Logical AND NOT operation. |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
80 * |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
81 * @param id The database column name. |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
82 * @param value The filter value |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
83 * @return The builder itself. |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
84 */ |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
85 public QueryBuilder<T> andNot(String id, Object value) { |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
86 Predicate p = this.builder.equal(this.root.get(id), value); |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
87 if (this.filter != null) { |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
88 this.filter = this.builder.and(this.filter, p).not(); |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
89 } |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
90 else { |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
91 this.filter = this.builder.and(p).not(); |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
92 } |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
93 return this; |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
94 } |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
95 |
d61f5ded953d
Added AND NOT to query builder.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
623
diff
changeset
|
96 /** |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 * Logical AND with like operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
98 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 * @param id The database column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 * @param value The filter value |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 public QueryBuilder<T> andLike(String id, String value) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 Path<String> path = this.root.get(id); |
708
e50c7f2f864d
fixed lower case search field
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents:
693
diff
changeset
|
105 Predicate p = this.builder.like(this.builder.lower(path), value.toLowerCase()); |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 this.filter = this.builder.and(this.filter, p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 this.filter = this.builder.and(p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 * Logical OR operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 * @param id The database column name |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 * @param value The filter value. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 public QueryBuilder<T> or(String id, Object value) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
123 Predicate p = this.builder.equal(this.root.get(id), value); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
124 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
125 this.filter = this.builder.or(this.filter, p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
126 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
127 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
128 this.filter = this.builder.or(p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
129 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
130 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
134 * Logical OR with like operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
135 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
136 * @param column The database column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
137 * @param value The filter value |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
138 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
139 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
140 public QueryBuilder<T> orLike(String id, String value) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
141 Path<String> path = this.root.get(id); |
708
e50c7f2f864d
fixed lower case search field
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents:
693
diff
changeset
|
142 Predicate p = this.builder.like(this.builder.lower(path), value.toLowerCase()); |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
143 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
144 this.filter = this.builder.or(this.filter, p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
145 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
146 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
147 this.filter = this.builder.or(p); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
149 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
151 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
152 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
153 * Logical AND operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 * All elements in <i>values</i> will be concatenated with AND operator. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
155 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 * @param id The database column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 * @param values List of values. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 public QueryBuilder<T> and(String id, List<String> values) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 for(String v: values) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 this.and(id, v); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
168 * Logical OR operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 * All elements in <i>values</i> will be concatenated with OR operator. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
171 * @param id The database column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 * @param values List of values. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
174 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
175 public QueryBuilder<T> or(String id, List<String> values) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
176 for (String v: values) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
177 this.or(id, v); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
178 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
179 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
182 /** |
693
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
183 * Logical OR operation. |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
184 * All elements in <i>values</i> will be concatenated with OR operator. |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
185 * |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
186 * @param id The database column name. |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
187 * @param values List of values. |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
188 * @return The builder itself. |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
189 */ |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
190 public QueryBuilder<T> orIntList(String id, List<Integer> values) { |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
191 for (Integer v: values) { |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
192 this.or(id, v); |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
193 } |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
194 return this; |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
195 } |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
196 |
ca536cd50120
Added logical or for integer lists.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
674
diff
changeset
|
197 /** |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
198 * Logical AND operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
199 * The actually defined query will be concatenated with the query defined |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
200 * in the builder <i>b</i>. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
201 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
202 * @param b A builder. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
203 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
204 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
205 public QueryBuilder<T> and(QueryBuilder<T> b) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
206 if (b == null || b.filter == null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
207 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
208 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
209 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
210 this.filter = this.builder.and(this.filter, b.filter); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
211 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
212 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
213 this.filter = this.builder.and(b.filter); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
214 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
215 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
216 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
217 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
218 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
219 * Logical OR operation. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
220 * The actually defined query will be concatenated with the query defined |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
221 * in the builder <i>b</i>. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
222 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
223 * @param b A builder. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
224 * @return The builder itself. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
225 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
226 public QueryBuilder<T> or(QueryBuilder<T> b) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
227 if (b == null || b.filter == null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
228 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
229 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
230 if (this.filter != null) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
231 this.filter = this.builder.or(this.filter, b.filter); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
232 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
233 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
234 this.filter = this.builder.or(b.filter); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
235 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
236 return this; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
237 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
238 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
239 /** |
623
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
240 * IN operation combined as logical OR. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
241 * Test whether result of 'key' is in a list of values. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
242 * |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
243 * @param key The database column. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
244 * @param values The list of values. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
245 * |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
246 * @return The current Querybuilder. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
247 */ |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
248 public QueryBuilder<T> orIn(String key, List<String> values) { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
249 Expression<String> exp = this.root.get(key); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
250 Predicate p = exp.in(values); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
251 if (this.filter == null) { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
252 this.filter = this.builder.or(p); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
253 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
254 else { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
255 this.filter = this.builder.or(this.filter, p); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
256 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
257 return this; |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
258 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
259 |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
260 /** |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
261 * IN operation combined as logical AND. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
262 * Test whether result of 'key' is in a list of values. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
263 * |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
264 * @param key The database column. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
265 * @param values The list of values. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
266 * |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
267 * @return The current Querybuilder. |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
268 */ |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
269 public QueryBuilder<T> andIn(String key, List<String> values) { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
270 Expression<String> exp = this.root.get(key); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
271 Predicate p = exp.in(values); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
272 if (this.filter == null) { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
273 this.filter = this.builder.and(p); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
274 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
275 else { |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
276 this.filter = this.builder.and(this.filter, p); |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
277 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
278 return this; |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
279 } |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
280 |
da56b05604ae
Added methods for sql 'IN' queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
585
diff
changeset
|
281 /** |
438
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
282 * Use 'distinct' in the query. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
283 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
284 public void distinct() { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
285 this.query.distinct(true); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
286 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
287 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
288 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
289 * Order result by the specified column name |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
290 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
291 * @param id The column name. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
292 * @param asc Ascending(true), Descending(false). |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
293 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
294 public void orderBy(String id, boolean asc) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
295 if (asc) { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
296 this.query.orderBy(this.builder.asc(this.root.get(id))); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
297 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
298 else { |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
299 this.query.orderBy(this.builder.desc(this.root.get(id))); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
300 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
301 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
302 |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
303 /** |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
304 * Get an empty instance of this builder to create subfilters. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
305 * |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
306 * @return An empty instance of this builder. |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
307 */ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
308 public QueryBuilder<T> getEmptyBuilder(){ |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
309 QueryBuilder<T> copy = new QueryBuilder<T>(manager, clazz); |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
310 copy.builder = this.builder; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
311 copy.root = this.root; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
312 return copy; |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
313 } |
f0ad10e0e1b1
Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
314 } |