annotate src/main/java/de/intevation/lada/util/data/EntityManagerProducer.java @ 438:f0ad10e0e1b1

Moved Repositories, etc. into data package.
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 06 Feb 2015 17:55:54 +0100
parents
children 3ec358698b4d
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
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 @Stateless
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 @LocalBean
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 public class EntityManagerProducer {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 @Resource
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 private SessionContext ctx;
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 String jndiPath = "java:app/entitymanager/";
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 /**
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 * Constructor for multi-tenancy entity manager delegate.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 * Default jndi search path is '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 public EntityManagerProducer() {
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
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 * Constructor for multi-tenancy entity manager delegate.
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 * @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
38 * Defaults to 'java:app/entitymanager'.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 */
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 public EntityManagerProducer(String jndiPath) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 this.jndiPath = jndiPath;
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 }
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 /**
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 * Create an entity manager for a datasource.
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 * @throws UnexpectedTypeException
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 * @param dataSourceName The jndi name of the datasource.
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 * @return The entity manager for the 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 public EntityManager entityManager(String dataSourceName) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 EntityManager entityManager =
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 (EntityManager) this.ctx.lookup(this.jndiPath + dataSourceName);
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 if (entityManager == null) {
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 throw new UnexpectedTypeException("Unknown data source name '" +
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 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
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 return entityManager;
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 }
f0ad10e0e1b1 Moved Repositories, etc. into data package.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)