Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java @ 1259:54365104835c 2.5
merged flys-backend/2.5
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:18 +0200 |
parents | 774dff3ee546 |
children | 52d712cd2384 |
comparison
equal
deleted
inserted
replaced
1190:f514894ec2fd | 1259:54365104835c |
---|---|
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.AnnotationType; | |
14 import de.intevation.flys.model.Attribute; | |
15 import de.intevation.flys.model.Building; | |
16 import de.intevation.flys.model.CrossSection; | |
17 import de.intevation.flys.model.CrossSectionLine; | |
18 import de.intevation.flys.model.CrossSectionPoint; | |
19 import de.intevation.flys.model.CrossSectionTrack; | |
20 import de.intevation.flys.model.DGM; | |
21 import de.intevation.flys.model.DischargeTable; | |
22 import de.intevation.flys.model.DischargeTableValue; | |
23 import de.intevation.flys.model.Edge; | |
24 import de.intevation.flys.model.Fixpoint; | |
25 import de.intevation.flys.model.Floodplain; | |
26 import de.intevation.flys.model.Gauge; | |
27 import de.intevation.flys.model.HYK; | |
28 import de.intevation.flys.model.HYKEntry; | |
29 import de.intevation.flys.model.HYKFormation; | |
30 import de.intevation.flys.model.HYKFlowZoneType; | |
31 import de.intevation.flys.model.HYKFlowZone; | |
32 import de.intevation.flys.model.Line; | |
33 import de.intevation.flys.model.MainValueType; | |
34 import de.intevation.flys.model.NamedMainValue; | |
35 import de.intevation.flys.model.MainValue; | |
36 import de.intevation.flys.model.Position; | |
37 import de.intevation.flys.model.Range; | |
38 import de.intevation.flys.model.River; | |
39 import de.intevation.flys.model.RiverAxis; | |
40 import de.intevation.flys.model.TimeInterval; | |
41 import de.intevation.flys.model.WstColumn; | |
42 import de.intevation.flys.model.WstColumnQRange; | |
43 import de.intevation.flys.model.WstColumnValue; | |
44 import de.intevation.flys.model.Wst; | |
45 import de.intevation.flys.model.WstQRange; | |
46 | |
47 import org.apache.log4j.Logger; | |
48 | |
49 public final class SessionFactoryProvider | |
50 { | |
51 private static Logger log = Logger.getLogger(SessionFactoryProvider.class); | |
52 | |
53 public static final String XPATH_USER = | |
54 "/artifact-database/backend-database/user/text()"; | |
55 | |
56 public static final String XPATH_PASSWORD = | |
57 "/artifact-database/backend-database/password/text()"; | |
58 | |
59 public static final String XPATH_DIALECT = | |
60 "/artifact-database/backend-database/dialect/text()"; | |
61 | |
62 public static final String XPATH_DRIVER = | |
63 "/artifact-database/backend-database/driver/text()"; | |
64 | |
65 public static final String XPATH_URL = | |
66 "/artifact-database/backend-database/url/text()"; | |
67 | |
68 public static final String DEFAULT_USER = | |
69 System.getProperty("flys.backend.user", "flys"); | |
70 | |
71 public static final String DEFAULT_PASSWORD = | |
72 System.getProperty("flys.backend.password", "flys"); | |
73 | |
74 public static final String DEFAULT_DIALECT = | |
75 System.getProperty( | |
76 "flys.backend.dialect", | |
77 "org.hibernate.dialect.PostgreSQLDialect"); | |
78 | |
79 public static final String DEFAULT_DRIVER = | |
80 System.getProperty( | |
81 "flys.backend.driver", | |
82 "org.postgresql.Driver"); | |
83 | |
84 public static final String DEFAULT_URL = | |
85 System.getProperty( | |
86 "flys.backend.url", | |
87 "jdbc:postgresql://localhost:5432/flys"); | |
88 | |
89 private static SessionFactory sessionFactory; | |
90 | |
91 private SessionFactoryProvider() { | |
92 } | |
93 | |
94 public static synchronized SessionFactory getSessionFactory() { | |
95 if (sessionFactory == null) { | |
96 String user = | |
97 Config.getStringXPath(XPATH_USER, DEFAULT_USER); | |
98 String password = | |
99 Config.getStringXPath(XPATH_PASSWORD, DEFAULT_PASSWORD); | |
100 String dialect = | |
101 Config.getStringXPath(XPATH_DIALECT, DEFAULT_DIALECT); | |
102 String driver = | |
103 Config.getStringXPath(XPATH_DRIVER, DEFAULT_DRIVER); | |
104 String url = | |
105 Config.getStringXPath(XPATH_URL, DEFAULT_URL); | |
106 | |
107 sessionFactory = createSessionFactory( | |
108 user, password, dialect, driver, url); | |
109 } | |
110 return sessionFactory; | |
111 } | |
112 | |
113 public static SessionFactory createSessionFactory() { | |
114 return createSessionFactory( | |
115 DEFAULT_USER, | |
116 DEFAULT_PASSWORD, | |
117 DEFAULT_DIALECT, | |
118 DEFAULT_DRIVER, | |
119 DEFAULT_URL); | |
120 } | |
121 | |
122 public static SessionFactory createSessionFactory( | |
123 String user, | |
124 String password, | |
125 String dialect, | |
126 String driver, | |
127 String url | |
128 ) { | |
129 Configuration cfg = createConfiguration( | |
130 user, password, dialect, driver, url); | |
131 | |
132 return cfg.buildSessionFactory(); | |
133 } | |
134 | |
135 public static Configuration createConfiguration() { | |
136 return createConfiguration( | |
137 DEFAULT_USER, | |
138 DEFAULT_PASSWORD, | |
139 DEFAULT_DIALECT, | |
140 DEFAULT_DRIVER, | |
141 DEFAULT_URL); | |
142 } | |
143 | |
144 public static Configuration createConfiguration( | |
145 String user, | |
146 String password, | |
147 String dialect, | |
148 String driver, | |
149 String url | |
150 ) { | |
151 Configuration cfg = new Configuration(); | |
152 | |
153 // TODO: Use package reflection here. | |
154 cfg.addAnnotatedClass(Annotation.class); | |
155 cfg.addAnnotatedClass(AnnotationType.class); | |
156 cfg.addAnnotatedClass(Attribute.class); | |
157 cfg.addAnnotatedClass(Building.class); | |
158 cfg.addAnnotatedClass(CrossSection.class); | |
159 cfg.addAnnotatedClass(CrossSectionLine.class); | |
160 cfg.addAnnotatedClass(CrossSectionPoint.class); | |
161 cfg.addAnnotatedClass(CrossSectionTrack.class); | |
162 cfg.addAnnotatedClass(DGM.class); | |
163 cfg.addAnnotatedClass(DischargeTable.class); | |
164 cfg.addAnnotatedClass(DischargeTableValue.class); | |
165 cfg.addAnnotatedClass(Edge.class); | |
166 cfg.addAnnotatedClass(Fixpoint.class); | |
167 cfg.addAnnotatedClass(Floodplain.class); | |
168 cfg.addAnnotatedClass(Gauge.class); | |
169 cfg.addAnnotatedClass(HYK.class); | |
170 cfg.addAnnotatedClass(HYKEntry.class); | |
171 cfg.addAnnotatedClass(HYKFormation.class); | |
172 cfg.addAnnotatedClass(HYKFlowZoneType.class); | |
173 cfg.addAnnotatedClass(HYKFlowZone.class); | |
174 cfg.addAnnotatedClass(Line.class); | |
175 cfg.addAnnotatedClass(MainValueType.class); | |
176 cfg.addAnnotatedClass(NamedMainValue.class); | |
177 cfg.addAnnotatedClass(MainValue.class); | |
178 cfg.addAnnotatedClass(Position.class); | |
179 cfg.addAnnotatedClass(Range.class); | |
180 cfg.addAnnotatedClass(River.class); | |
181 cfg.addAnnotatedClass(RiverAxis.class); | |
182 cfg.addAnnotatedClass(TimeInterval.class); | |
183 cfg.addAnnotatedClass(WstColumn.class); | |
184 cfg.addAnnotatedClass(WstColumnQRange.class); | |
185 cfg.addAnnotatedClass(WstColumnValue.class); | |
186 cfg.addAnnotatedClass(Wst.class); | |
187 cfg.addAnnotatedClass(WstQRange.class); | |
188 | |
189 if (log.isDebugEnabled()) { | |
190 log.debug("user: " + user); | |
191 log.debug("dialect: " + dialect); | |
192 log.debug("driver: " + driver); | |
193 log.debug("url: " + url); | |
194 } | |
195 | |
196 Properties props = new Properties(); | |
197 | |
198 // We rely on our own connection pool | |
199 props.setProperty( | |
200 "hibernate.connection.provider_class", | |
201 "org.hibernate.connection.DBCPConnectionProvider"); | |
202 | |
203 props.setProperty(Environment.DIALECT, dialect); | |
204 props.setProperty(Environment.USER, user); | |
205 props.setProperty(Environment.PASS, password); | |
206 props.setProperty(Environment.DRIVER, driver); | |
207 props.setProperty(Environment.URL, url); | |
208 | |
209 cfg.mergeProperties(props); | |
210 | |
211 return cfg; | |
212 } | |
213 } | |
214 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |