comparison artifact-database/src/main/java/org/dive4elements/artifactdatabase/db/DBConnection.java @ 473:d0ac790a6c89 dive4elements-move

Moved directories to org.dive4elements
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 10:57:18 +0200
parents artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java@6d239c58c636
children 415df0fc4fa1
comparison
equal deleted inserted replaced
472:783cc1b6b615 473:d0ac790a6c89
1 package de.intevation.artifactdatabase.db;
2
3 import javax.sql.DataSource;
4
5 import java.io.File;
6
7 import org.apache.commons.pool.ObjectPool;
8
9 import org.apache.commons.pool.impl.GenericObjectPool;
10
11 import org.apache.commons.dbcp.DriverManagerConnectionFactory;
12 import org.apache.commons.dbcp.PoolableConnectionFactory;
13 import org.apache.commons.dbcp.PoolingDataSource;
14
15 import de.intevation.artifacts.common.utils.Config;
16
17 import org.apache.log4j.Logger;
18
19 public class DBConnection
20 {
21 private static Logger log = Logger.getLogger(DBConnection.class);
22
23 public static final String DEFAULT_DRIVER = "org.h2.Driver";
24 public static final String DEFAULT_USER = "";
25 public static final String DEFAULT_PASSWORD = "";
26 public static final String DEFAULT_DATABASE_FILE = "artifacts.db";
27 public static final String DEFAULT_URL = getDefaultURL();
28
29 public static final String getDefaultURL() {
30 File configDir = Config.getConfigDirectory();
31 File databaseFile = new File(configDir, DEFAULT_DATABASE_FILE);
32 return "jdbc:h2:" + databaseFile;
33 }
34
35 protected DataSource dataSource;
36
37 protected String driver;
38 protected String url;
39 protected String user;
40 protected String password;
41
42 public DBConnection() {
43 }
44
45 public DBConnection(
46 String driver,
47 String url,
48 String user,
49 String password
50 ) {
51 this.driver = driver;
52 this.url = url;
53 this.user = user;
54 this.password = password;
55 }
56
57 public String getUser() {
58 return user;
59 }
60
61 public void setUser(String user) {
62 this.user = user;
63 }
64
65 public String getPassword() {
66 return password;
67 }
68
69 public void setPassword(String password) {
70 this.password = password;
71 }
72
73 public String getDriver() {
74 return driver;
75 }
76
77 public void setDriver(String driver) {
78 this.driver = driver;
79 }
80
81 public String getUrl() {
82 return url;
83 }
84
85 public void setUrl(String url) {
86 this.url = url;
87 }
88
89 public synchronized DataSource getDataSource() {
90 if (dataSource == null) {
91 if (log.isDebugEnabled()) {
92 log.debug("create new datasource:");
93 log.debug(" driver: " + driver);
94 log.debug(" url : " + url);
95 log.debug(" user : " + user);
96 }
97
98 try {
99 synchronized (DBConnection.class) {
100 Class.forName(driver);
101 }
102 }
103 catch (ClassNotFoundException cnfe) {
104 log.error("cannot load driver", cnfe);
105 return null;
106 }
107
108 DriverManagerConnectionFactory dmcf =
109 new DriverManagerConnectionFactory(url, user, password);
110
111 ObjectPool cp = new GenericObjectPool();
112
113 PoolableConnectionFactory pcf = new PoolableConnectionFactory(
114 dmcf, cp, null, null, false, false);
115
116 dataSource = new PoolingDataSource(cp);
117 }
118 return dataSource;
119 }
120 }
121 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org