diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoDbManager.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoDbManager.java index 8897884825..48eb4d99bc 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoDbManager.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CentralRepoDbManager.java @@ -194,14 +194,21 @@ public class CentralRepoDbManager { private CentralRepoDbChoice selectedDbChoice; private final PostgresCentralRepoSettings dbSettingsPostgres; + private final PostgresCentralRepoSettings dbSettingsMultiUser; private final SqliteCentralRepoSettings dbSettingsSqlite; private boolean configurationChanged = false; public CentralRepoDbManager() { - dbSettingsPostgres = new PostgresCentralRepoSettings(); - dbSettingsSqlite = new SqliteCentralRepoSettings(); selectedDbChoice = getSavedDbChoice(); + dbSettingsPostgres = new PostgresCentralRepoSettings(PostgresSettingsLoader.CUSTOM_LOADER); + dbSettingsMultiUser = new PostgresCentralRepoSettings(PostgresSettingsLoader.MULTIUSER_LOADER); + dbSettingsSqlite = new SqliteCentralRepoSettings(); + } + + + public PostgresCentralRepoSettings getDbSettingsMultiUser() { + return dbSettingsMultiUser; } public PostgresCentralRepoSettings getDbSettingsPostgres() { @@ -250,6 +257,8 @@ public class CentralRepoDbManager { } private CentralRepoDbConnectivityManager getSelectedSettings() throws CentralRepoException { + if (selectedDbChoice == CentralRepoDbChoice.POSTGRESQL_MULTIUSER) + return dbSettingsMultiUser; if (selectedDbChoice == CentralRepoDbChoice.POSTGRESQL_CUSTOM) return dbSettingsPostgres; if (selectedDbChoice == CentralRepoDbChoice.SQLITE) @@ -257,10 +266,12 @@ public class CentralRepoDbManager { if (selectedDbChoice == CentralRepoDbChoice.DISABLED) return null; - throw new CentralRepoException("Unknown database type: " + selectedDbChoice); + throw new CentralRepoException("Unknown database type: " + selectedDbChoice); } private RdbmsCentralRepoFactory getDbFactory() throws CentralRepoException { + if (selectedDbChoice == CentralRepoDbChoice.POSTGRESQL_MULTIUSER) + return new RdbmsCentralRepoFactory(CentralRepoPlatforms.POSTGRESQL, dbSettingsMultiUser); if (selectedDbChoice == CentralRepoDbChoice.POSTGRESQL_CUSTOM) return new RdbmsCentralRepoFactory(CentralRepoPlatforms.POSTGRESQL, dbSettingsPostgres); if (selectedDbChoice == CentralRepoDbChoice.SQLITE) @@ -271,12 +282,19 @@ public class CentralRepoDbManager { throw new CentralRepoException("Unknown database type: " + selectedDbChoice); } + /** + * create central repo database if it does not already exist + * @return true if successful; false if unsuccessful + * @throws CentralRepoException if + */ public boolean createDb() throws CentralRepoException { boolean result = false; boolean dbCreated = true; CentralRepoDbConnectivityManager selectedDbSettings = getSelectedSettings(); - + if (selectedDbSettings == null) + throw new CentralRepoException("Unable to derive connectivity manager from settings: " + selectedDbChoice); + if (!selectedDbSettings.verifyDatabaseExists()) { dbCreated = selectedDbSettings.createDatabase(); } @@ -294,7 +312,6 @@ public class CentralRepoDbManager { if (!result) { // Remove the incomplete database if (dbCreated) { - // RAMAN TBD: migrate deleteDatabase() to RdbmsCentralRepoFactory selectedDbSettings.deleteDatabase(); } @@ -344,7 +361,7 @@ public class CentralRepoDbManager { // in case we are still using the same instance. if (selectedDbChoice != null && selectedDbSettings != CentralRepoDbChoice.DISABLED) { try { - logger.info("Creating central repo db with settings: " + selectedDbSettings); + logger.info("Saving central repo settings for db: " + selectedDbSettings); CentralRepository.getInstance().updateSettings(); configurationChanged = true; } catch (CentralRepoException ex) { @@ -399,7 +416,7 @@ public class CentralRepoDbManager { } public DatabaseTestResult testStatus() { - if (selectedDbChoice == CentralRepoDbChoice.POSTGRESQL_CUSTOM) { + if (selectedDbChoice.getDbPlatform() == CentralRepoPlatforms.POSTGRESQL) { if (dbSettingsPostgres.verifyConnection()) { if (dbSettingsPostgres.verifyDatabaseExists()) { if (dbSettingsPostgres.verifyDatabaseSchema()) { @@ -413,7 +430,7 @@ public class CentralRepoDbManager { } else { testingStatus = DatabaseTestResult.CONNECTION_FAILED; } - } else if (selectedDbChoice == CentralRepoDbChoice.SQLITE) { + } else if (selectedDbChoice.getDbPlatform() == CentralRepoPlatforms.SQLITE) { if (dbSettingsSqlite.dbFileExists()) { if (dbSettingsSqlite.verifyConnection()) { if (dbSettingsSqlite.verifyDatabaseSchema()) { diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.form b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.form index 2e9b63530e..5a1e2de77e 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.form @@ -145,9 +145,9 @@ - + - + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.java index ee79034282..c043687586 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamDbSettingsDialog.java @@ -377,9 +377,9 @@ public class EamDbSettingsDialog extends JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(bnDatabasePathFileOpen)) .addGroup(pnSQLiteSettingsLayout.createSequentialGroup() - .addComponent(cbDatabaseType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cbDatabaseType, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(lbSingleUserSqLite, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(lbSingleUserSqLite, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) .addComponent(jpDbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tbDbUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tbDbPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)