Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/manage/DataManager.java @ 320:6621f7345c06
Use 'merge' instead of 'persist' since it saves detached objects, too.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 23 Aug 2013 11:32:21 +0200 |
parents | a305412206a3 |
children | 9d5e4d4eb90f |
rev | line source |
---|---|
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.manage; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import javax.ejb.EJBTransactionRolledbackException; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 import javax.ejb.Stateless; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import javax.ejb.TransactionAttribute; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import javax.ejb.TransactionAttributeType; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Inject; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import javax.inject.Named; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import javax.persistence.EntityExistsException; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import javax.persistence.EntityManager; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import javax.persistence.TransactionRequiredException; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
14 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
15 * This data manager provides the interface to persist, remove and update |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
16 * database objects. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
17 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
18 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
19 */ |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 @Stateless |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 @Named("datamanager") |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 public class DataManager |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 implements Manager |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 { |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 @Inject |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 private EntityManager em; |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
28 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
29 * Create a new database object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
30 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
31 * @param object The new object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
32 */ |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 @Override |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 @TransactionAttribute(TransactionAttributeType.REQUIRED) |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 public void create(Object object) |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 throws EntityExistsException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 IllegalArgumentException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 EJBTransactionRolledbackException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 TransactionRequiredException { |
320
6621f7345c06
Use 'merge' instead of 'persist' since it saves detached objects, too.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
40 em.merge(object); |
6621f7345c06
Use 'merge' instead of 'persist' since it saves detached objects, too.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
41 //em.persist(object); |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 } |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
44 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
45 * Update a database object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
46 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
47 * @param object The object to update. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
48 */ |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 @Override |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 @TransactionAttribute(TransactionAttributeType.REQUIRED) |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 public void update(Object object) |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 throws EntityExistsException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 IllegalArgumentException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 EJBTransactionRolledbackException, |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 TransactionRequiredException { |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 em.merge(object); |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 } |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
59 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
60 * Delete a database object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
61 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
62 * @param object The object to delete. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
63 */ |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 @Override |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 @TransactionAttribute(TransactionAttributeType.REQUIRED) |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
190
diff
changeset
|
66 public void delete(Object object) |
190
bf7488ec0e8d
Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents:
170
diff
changeset
|
67 throws IllegalArgumentException, |
bf7488ec0e8d
Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents:
170
diff
changeset
|
68 TransactionRequiredException { |
bf7488ec0e8d
Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents:
170
diff
changeset
|
69 em.remove(em.contains(object) ? object : em.merge(object)); |
170
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 } |
18b234ef3733
New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 } |