Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java @ 176:3035d861a576
SessionFactoryProvider for access to the backend.
flys-backend/trunk@1481 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 15 Mar 2011 17:29:11 +0000 |
parents | |
children | 82bc55666a97 |
comparison
equal
deleted
inserted
replaced
175:7cdac4324609 | 176:3035d861a576 |
---|---|
1 package de.intevation.flys.backend; | |
2 | |
3 import de.intevation.artifacts.common.utils.Config; | |
4 | |
5 import java.util.Properties; | |
6 | |
7 import org.hibernate.SessionFactory; | |
8 | |
9 import org.hibernate.cfg.Configuration; | |
10 import org.hibernate.cfg.Environment; | |
11 | |
12 import de.intevation.flys.model.Annotation; | |
13 import de.intevation.flys.model.Attribute; | |
14 import de.intevation.flys.model.DischargeTable; | |
15 import de.intevation.flys.model.DischargeTableValue; | |
16 import de.intevation.flys.model.Gauge; | |
17 import de.intevation.flys.model.MainValueType; | |
18 import de.intevation.flys.model.NamedMainValues; | |
19 import de.intevation.flys.model.Position; | |
20 import de.intevation.flys.model.Range; | |
21 import de.intevation.flys.model.River; | |
22 import de.intevation.flys.model.TimeInterval; | |
23 import de.intevation.flys.model.WstColumn; | |
24 import de.intevation.flys.model.WstColumnQRange; | |
25 import de.intevation.flys.model.WstColumnValue; | |
26 import de.intevation.flys.model.Wst; | |
27 import de.intevation.flys.model.WstQRange; | |
28 | |
29 import org.apache.log4j.Logger; | |
30 | |
31 public final class SessionFactoryProvider | |
32 { | |
33 private static Logger log = Logger.getLogger(SessionFactoryProvider.class); | |
34 | |
35 public static final String XPATH_USER = | |
36 "/artifact-database/backend-database/user/text()"; | |
37 | |
38 public static final String XPATH_PASSWORD = | |
39 "/artifact-database/backend-database/password/text()"; | |
40 | |
41 public static final String XPATH_DIALECT = | |
42 "/artifact-database/backend-database/dialect/text()"; | |
43 | |
44 public static final String XPATH_DRIVER = | |
45 "/artifact-database/backend-database/driver/text()"; | |
46 | |
47 public static final String XPATH_URL = | |
48 "/artifact-database/backend-database/url/text()"; | |
49 | |
50 public static final String DEFAULT_USER = "flys"; | |
51 public static final String DEFAULT_PASSWORD = "flys"; | |
52 public static final String DEFAULT_DIALECT = | |
53 "org.hibernate.dialect.PostgreSQLDialect"; | |
54 | |
55 public static final String DEFAULT_DRIVER = | |
56 "org.postgresql.Driver"; | |
57 | |
58 public static final String DEFAULT_URL = | |
59 "jdbc:postgresql://localhost:5432/flys"; | |
60 | |
61 private static SessionFactory sessionFactory; | |
62 | |
63 private SessionFactoryProvider() { | |
64 } | |
65 | |
66 public static synchronized SessionFactory getSessionFactory() { | |
67 if (sessionFactory == null) { | |
68 sessionFactory = createSessionFactory(); | |
69 } | |
70 return sessionFactory; | |
71 } | |
72 | |
73 private static SessionFactory createSessionFactory() { | |
74 | |
75 Configuration cfg = new Configuration(); | |
76 | |
77 // TODO: Use package reflection here. | |
78 cfg.addAnnotatedClass(Annotation.class); | |
79 cfg.addAnnotatedClass(Attribute.class); | |
80 cfg.addAnnotatedClass(DischargeTable.class); | |
81 cfg.addAnnotatedClass(DischargeTableValue.class); | |
82 cfg.addAnnotatedClass(Gauge.class); | |
83 cfg.addAnnotatedClass(MainValueType.class); | |
84 cfg.addAnnotatedClass(NamedMainValues.class); | |
85 cfg.addAnnotatedClass(Position.class); | |
86 cfg.addAnnotatedClass(Range.class); | |
87 cfg.addAnnotatedClass(River.class); | |
88 cfg.addAnnotatedClass(TimeInterval.class); | |
89 cfg.addAnnotatedClass(WstColumn.class); | |
90 cfg.addAnnotatedClass(WstColumnQRange.class); | |
91 cfg.addAnnotatedClass(WstColumnValue.class); | |
92 cfg.addAnnotatedClass(Wst.class); | |
93 cfg.addAnnotatedClass(WstQRange.class); | |
94 | |
95 String user = | |
96 Config.getStringXPath(XPATH_USER, DEFAULT_USER); | |
97 String password = | |
98 Config.getStringXPath(XPATH_PASSWORD, DEFAULT_PASSWORD); | |
99 String dialect = | |
100 Config.getStringXPath(XPATH_DIALECT, DEFAULT_DIALECT); | |
101 String driver = | |
102 Config.getStringXPath(XPATH_DRIVER, DEFAULT_DRIVER); | |
103 String url = | |
104 Config.getStringXPath(XPATH_URL, DEFAULT_URL); | |
105 | |
106 if (log.isDebugEnabled()) { | |
107 log.debug("user: " + user); | |
108 log.debug("dialect: " + dialect); | |
109 log.debug("driver: " + driver); | |
110 log.debug("url: " + url); | |
111 } | |
112 | |
113 Properties props = new Properties(); | |
114 | |
115 // We rely on our own connection pool | |
116 props.setProperty( | |
117 "hibernate.connection.provider_class", | |
118 "org.hibernate.connection.DBCPConnectionProvider"); | |
119 | |
120 props.setProperty(Environment.DIALECT, dialect); | |
121 props.setProperty(Environment.USER, user); | |
122 props.setProperty(Environment.PASS, password); | |
123 props.setProperty(Environment.DRIVER, driver); | |
124 props.setProperty(Environment.URL, url); | |
125 | |
126 cfg.mergeProperties(props); | |
127 | |
128 return cfg.buildSessionFactory(); | |
129 } | |
130 } | |
131 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |