Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/data/Repository.java @ 134:8250e5bb7c84
Removed unused imports.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 13 Jun 2013 17:19:17 +0200 |
parents | 4e181a4aaab0 |
children | f33f6e1ba9f8 |
rev | line source |
---|---|
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.data; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import java.util.List; |
84
74a488e52dde
Moved errors and warnings from LProbeRepository to Repository as they are
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
43
diff
changeset
|
4 import java.util.Map; |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import javax.enterprise.context.ApplicationScoped; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Inject; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import javax.persistence.EntityManager; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import javax.persistence.criteria.CriteriaBuilder; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import javax.persistence.criteria.CriteriaQuery; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import javax.persistence.criteria.Root; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import javax.inject.Named; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
14 import de.intevation.lada.rest.Response; |
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
15 |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 /** |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 * This generic Container is an interface to request and select Data |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 * obejcts from the connected database. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 * |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 */ |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 @Named |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 @ApplicationScoped |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
24 public abstract class Repository |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 { |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 /** |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 * The entitymanager managing the data. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 */ |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 @Inject |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 private EntityManager em; |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
32 public abstract Response create(Object object); |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
33 |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
34 public abstract Response update(Object object); |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
35 |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
36 public abstract Response filter(Map<String, String> keys); |
84
74a488e52dde
Moved errors and warnings from LProbeRepository to Repository as they are
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
43
diff
changeset
|
37 |
74a488e52dde
Moved errors and warnings from LProbeRepository to Repository as they are
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
43
diff
changeset
|
38 /** |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 * Get all objects of type <link>clazz</link>from database. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 * |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 * @param clazz The class type. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 * @return List of objects. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 */ |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
44 public <T> Response findAll(Class<T> clazz) { |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 CriteriaBuilder builder = em.getCriteriaBuilder(); |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 CriteriaQuery<T> criteria = builder.createQuery(clazz); |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 Root<T> member = criteria.from(clazz); |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 criteria.select(member); |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
49 List<T> result = em.createQuery(criteria).getResultList(); |
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
50 return new Response(true, 200, result); |
87
36b2191c3fcb
Added reset function to reinit the success boolean as same as errors and
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
86
diff
changeset
|
51 } |
36b2191c3fcb
Added reset function to reinit the success boolean as same as errors and
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
86
diff
changeset
|
52 |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 /** |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 * Find a single object identified by its id. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 * |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 * @param clazz The class type. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 * @param id The object id. |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 * @return The requested object of type clazz |
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 */ |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
60 public <T> Response findById(Class<T> clazz, String id) { |
85
7b932d54719c
Set general error on loading items.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
84
diff
changeset
|
61 T item = em.find(clazz, id); |
7b932d54719c
Set general error on loading items.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
84
diff
changeset
|
62 if (item == null) { |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
63 return new Response(false, 600, null); |
85
7b932d54719c
Set general error on loading items.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
84
diff
changeset
|
64 } |
107
5abec5413d65
Let all services and repositories return a response object that contains errors and warnings.
Raimund Renkert <rrenkert@intevation.de>
parents:
88
diff
changeset
|
65 return new Response(true, 200, item); |
84
74a488e52dde
Moved errors and warnings from LProbeRepository to Repository as they are
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
43
diff
changeset
|
66 } |
115
02a4eddc7760
Make a criteria builder available in repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
67 |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
68 /** |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
69 * Filter object list by the given criteria. |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
70 * |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
71 * @param criteria |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
72 * @return List of LProbe objects. |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
73 */ |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
74 public <T> List<T> filter(CriteriaQuery<T> criteria) { |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
75 return em.createQuery(criteria).getResultList(); |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
76 } |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
115
diff
changeset
|
77 |
115
02a4eddc7760
Make a criteria builder available in repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
78 public CriteriaBuilder getCriteriaBuilder() { |
02a4eddc7760
Make a criteria builder available in repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
79 return em.getCriteriaBuilder(); |
02a4eddc7760
Make a criteria builder available in repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
80 } |
43
13178bbe77ff
New generic repository for data requests.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 } |