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 :

http://dive4elements.wald.intevation.org