annotate src/main/java/de/intevation/lada/util/data/EntityManagerProducer.java @ 711:3ec358698b4d

Code style and documentation.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 22 Jul 2015 16:03:03 +0200
parents f0ad10e0e1b1
children
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 javax.annotation.Resource;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import javax.ejb.LocalBean;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import javax.ejb.SessionContext;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import javax.ejb.Stateless;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import javax.persistence.EntityManager;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import javax.validation.UnexpectedTypeException;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 438
diff changeset
17 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 438
diff changeset
18 * Factory class used to get entitymanager for a specific persistence unit.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 438
diff changeset
19 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 438
diff changeset
20 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 438
diff changeset
21 */
438
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 @Stateless
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 @LocalBean
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 public class EntityManagerProducer {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 @Resource
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 private SessionContext ctx;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 private String jndiPath = "java:app/entitymanager/";
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
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 * Constructor for multi-tenancy entity manager delegate.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 * Default jndi search path is 'java:app/entitymanager'.
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 public EntityManagerProducer() {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 }
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 /**
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 * Constructor for multi-tenancy entity manager delegate.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 *
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 * @param jndiEnv The jndi path to search for datasources.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 * Defaults to 'java:app/entitymanager'.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 */
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 public EntityManagerProducer(String jndiPath) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 this.jndiPath = jndiPath;
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
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 * Create an entity manager for a datasource.
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 * @throws UnexpectedTypeException
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 * @param dataSourceName The jndi name of the datasource.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 * @return The entity manager for the datasource.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 */
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 public EntityManager entityManager(String dataSourceName) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 EntityManager entityManager =
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 (EntityManager) this.ctx.lookup(this.jndiPath + dataSourceName);
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 if (entityManager == null) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 throw new UnexpectedTypeException("Unknown data source name '" +
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 dataSourceName + "'.");
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 }
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 return entityManager;
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 }
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)