Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java @ 508:a9c7f6ec3a5a 2.3.1
merged flys-backend/2.3.1
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:12 +0200 |
parents | d37ccb04ab5d |
children | c8a2fbc612be |
comparison
equal
deleted
inserted
replaced
462:ebf049a1eb53 | 508:a9c7f6ec3a5a |
---|---|
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.NamedMainValue; | |
19 import de.intevation.flys.model.MainValue; | |
20 import de.intevation.flys.model.Position; | |
21 import de.intevation.flys.model.Range; | |
22 import de.intevation.flys.model.River; | |
23 import de.intevation.flys.model.TimeInterval; | |
24 import de.intevation.flys.model.WstColumn; | |
25 import de.intevation.flys.model.WstColumnQRange; | |
26 import de.intevation.flys.model.WstColumnValue; | |
27 import de.intevation.flys.model.Wst; | |
28 import de.intevation.flys.model.WstQRange; | |
29 | |
30 import org.apache.log4j.Logger; | |
31 | |
32 public final class SessionFactoryProvider | |
33 { | |
34 private static Logger log = Logger.getLogger(SessionFactoryProvider.class); | |
35 | |
36 public static final String XPATH_USER = | |
37 "/artifact-database/backend-database/user/text()"; | |
38 | |
39 public static final String XPATH_PASSWORD = | |
40 "/artifact-database/backend-database/password/text()"; | |
41 | |
42 public static final String XPATH_DIALECT = | |
43 "/artifact-database/backend-database/dialect/text()"; | |
44 | |
45 public static final String XPATH_DRIVER = | |
46 "/artifact-database/backend-database/driver/text()"; | |
47 | |
48 public static final String XPATH_URL = | |
49 "/artifact-database/backend-database/url/text()"; | |
50 | |
51 public static final String DEFAULT_USER = | |
52 System.getProperty("flys.backend.user", "flys"); | |
53 | |
54 public static final String DEFAULT_PASSWORD = | |
55 System.getProperty("flys.backend.password", "flys"); | |
56 | |
57 public static final String DEFAULT_DIALECT = | |
58 System.getProperty( | |
59 "flys.backend.dialect", | |
60 "org.hibernate.dialect.PostgreSQLDialect"); | |
61 | |
62 public static final String DEFAULT_DRIVER = | |
63 System.getProperty( | |
64 "flys.backend.driver", | |
65 "org.postgresql.Driver"); | |
66 | |
67 public static final String DEFAULT_URL = | |
68 System.getProperty( | |
69 "flys.backend.url", | |
70 "jdbc:postgresql://localhost:5432/flys"); | |
71 | |
72 private static SessionFactory sessionFactory; | |
73 | |
74 private SessionFactoryProvider() { | |
75 } | |
76 | |
77 public static synchronized SessionFactory getSessionFactory() { | |
78 if (sessionFactory == null) { | |
79 String user = | |
80 Config.getStringXPath(XPATH_USER, DEFAULT_USER); | |
81 String password = | |
82 Config.getStringXPath(XPATH_PASSWORD, DEFAULT_PASSWORD); | |
83 String dialect = | |
84 Config.getStringXPath(XPATH_DIALECT, DEFAULT_DIALECT); | |
85 String driver = | |
86 Config.getStringXPath(XPATH_DRIVER, DEFAULT_DRIVER); | |
87 String url = | |
88 Config.getStringXPath(XPATH_URL, DEFAULT_URL); | |
89 | |
90 sessionFactory = createSessionFactory( | |
91 user, password, dialect, driver, url); | |
92 } | |
93 return sessionFactory; | |
94 } | |
95 | |
96 public static SessionFactory createSessionFactory() { | |
97 return createSessionFactory( | |
98 DEFAULT_USER, | |
99 DEFAULT_PASSWORD, | |
100 DEFAULT_DIALECT, | |
101 DEFAULT_DRIVER, | |
102 DEFAULT_URL); | |
103 } | |
104 | |
105 public static SessionFactory createSessionFactory( | |
106 String user, | |
107 String password, | |
108 String dialect, | |
109 String driver, | |
110 String url | |
111 ) { | |
112 Configuration cfg = new Configuration(); | |
113 | |
114 // TODO: Use package reflection here. | |
115 cfg.addAnnotatedClass(Annotation.class); | |
116 cfg.addAnnotatedClass(Attribute.class); | |
117 cfg.addAnnotatedClass(DischargeTable.class); | |
118 cfg.addAnnotatedClass(DischargeTableValue.class); | |
119 cfg.addAnnotatedClass(Gauge.class); | |
120 cfg.addAnnotatedClass(MainValueType.class); | |
121 cfg.addAnnotatedClass(NamedMainValue.class); | |
122 cfg.addAnnotatedClass(MainValue.class); | |
123 cfg.addAnnotatedClass(Position.class); | |
124 cfg.addAnnotatedClass(Range.class); | |
125 cfg.addAnnotatedClass(River.class); | |
126 cfg.addAnnotatedClass(TimeInterval.class); | |
127 cfg.addAnnotatedClass(WstColumn.class); | |
128 cfg.addAnnotatedClass(WstColumnQRange.class); | |
129 cfg.addAnnotatedClass(WstColumnValue.class); | |
130 cfg.addAnnotatedClass(Wst.class); | |
131 cfg.addAnnotatedClass(WstQRange.class); | |
132 | |
133 if (log.isDebugEnabled()) { | |
134 log.debug("user: " + user); | |
135 log.debug("dialect: " + dialect); | |
136 log.debug("driver: " + driver); | |
137 log.debug("url: " + url); | |
138 } | |
139 | |
140 Properties props = new Properties(); | |
141 | |
142 // We rely on our own connection pool | |
143 props.setProperty( | |
144 "hibernate.connection.provider_class", | |
145 "org.hibernate.connection.DBCPConnectionProvider"); | |
146 | |
147 props.setProperty(Environment.DIALECT, dialect); | |
148 props.setProperty(Environment.USER, user); | |
149 props.setProperty(Environment.PASS, password); | |
150 props.setProperty(Environment.DRIVER, driver); | |
151 props.setProperty(Environment.URL, url); | |
152 | |
153 cfg.mergeProperties(props); | |
154 | |
155 return cfg.buildSessionFactory(); | |
156 } | |
157 } | |
158 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |