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 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)