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 org.bitrepository.common.settings.Settings;
26 import org.bitrepository.common.settings.SettingsProvider;
27 import org.bitrepository.common.settings.XMLFileSettingsLoader;
28 import org.bitrepository.settings.referencesettings.DatabaseSpecifics;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 public class DatabaseCreator extends DatabaseMaintainer {
33 private final Logger log = LoggerFactory.getLogger(getClass());
34
35
36
37
38
39
40
41 protected void createDatabase(DatabaseSpecifics databaseSpecifics, String scriptName) {
42 DatabaseSpecifics databaseCreationSpecifics = updateDatabaseSpecificsForDBCreation(databaseSpecifics);
43 log.info("Creating database in " + databaseCreationSpecifics + " from script " + scriptName);
44 try {
45 runScript(databaseCreationSpecifics, scriptName);
46 } catch (Exception e) {
47 throw new RuntimeException(e);
48 }
49 }
50
51
52
53
54 private static DatabaseSpecifics updateDatabaseSpecificsForDBCreation(DatabaseSpecifics databaseSpecifics) {
55 DatabaseSpecifics newDatabaseSpecifics = new DatabaseSpecifics();
56 newDatabaseSpecifics.setDriverClass(databaseSpecifics.getDriverClass());
57 newDatabaseSpecifics.setDatabaseURL(databaseSpecifics.getDatabaseURL() + ";create=true");
58 newDatabaseSpecifics.setUsername(databaseSpecifics.getUsername());
59 newDatabaseSpecifics.setPassword(databaseSpecifics.getPassword());
60 return newDatabaseSpecifics;
61 }
62
63 protected Settings loadSettings(String pillarID, String pathToSettings) {
64 SettingsProvider settingsLoader =
65 new SettingsProvider(new XMLFileSettingsLoader(pathToSettings), pillarID);
66
67 return settingsLoader.getSettings();
68 }
69 }