1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.bitrepository.service.database;
24
25 import java.io.BufferedReader;
26 import java.io.InputStream;
27 import java.io.InputStreamReader;
28 import java.io.Reader;
29 import java.sql.Connection;
30 import java.sql.DriverManager;
31 import org.bitrepository.settings.referencesettings.DatabaseSpecifics;
32
33 public class DatabaseMaintainer {
34
35
36
37
38
39 protected static void runScript(DatabaseSpecifics databaseSpecifics, String scriptName) throws Exception {
40 Connection connection = getDBConnection(databaseSpecifics);
41 runScript(connection, scriptName);
42 connection.close();
43 }
44
45
46
47
48
49 protected static void runScript(DBConnector connector, String scriptName) throws Exception {
50 Connection connection = connector.getConnection();
51 runScript(connection, scriptName);
52 connection.close();
53 }
54
55
56
57
58
59
60
61 private static void runScript(Connection connection, String scriptName) throws Exception {
62 SqlScriptRunner scriptRunner = new SqlScriptRunner(connection, false, true);
63 scriptRunner.runScript(getReaderForFile(scriptName));
64 }
65
66
67
68
69 private static Reader getReaderForFile(String filePath) throws java.io.IOException {
70 InputStream is = DatabaseMaintainer.class.getClassLoader().getResourceAsStream(filePath);
71
72 if (is == null) {
73 throw new RuntimeException("Didn't find any file in classpath corresponding to " + filePath);
74 }
75
76 return new BufferedReader(new InputStreamReader(is));
77 }
78
79
80
81
82 protected static Connection getDBConnection(DatabaseSpecifics databaseSpecifics) throws Exception {
83 Class.forName(databaseSpecifics.getDriverClass());
84 Connection connection = DriverManager.getConnection(databaseSpecifics.getDatabaseURL());
85 return connection;
86 }
87 }