diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java index a4c453108b1aa970ed372d35523b919fb006362b..603f21b40c435cb4cf30933e660850d065fb49c4 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java @@ -23,7 +23,7 @@ import java.sql.SQLException; import com.izforge.izpack.api.data.AutomatedInstallData; /** - * Tests if there is a valid PostgreSQL installation on the local machine that is setup to accept + * Tests if there is a valid PostgreSQL installation that is setup to accept * connections from local users without requiring a password. * * @author Kaloyan Enimanev @@ -35,8 +35,6 @@ public class DBConnectionValidator extends AbstractDataValidator private static final String JDBC_DRIVER_NAME = "org.postgresql.Driver"; - private static final String CONNECTION_STRING = "jdbc:postgresql://localhost/template1"; - private static final String NO_PASSWORD = ""; @Override @@ -70,52 +68,54 @@ public class DBConnectionValidator extends AbstractDataValidator { return Status.OK; } + String host = getHost(); String owner = getOwner(); String ownerPassword = getOwnerPassword(); - if (testConnectionOK(owner, ownerPassword, "database.owner") == false) + if (testConnectionOK(host, owner, ownerPassword, "database.owner") == false) { return Status.ERROR; } return Status.OK; } + + private String getHost() + { + return getProperty("database.url-host-part", "localhost"); + } private String getOwner() { String user = System.getProperty("user.name").toLowerCase(); - if (GlobalInstallationContext.isFirstTimeInstallation) - { - return user; - } - String owner = - Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, - "database.owner"); - if (owner != null && owner.length() > 0) - { - return owner; - } - return user; + return getProperty("database.owner", user); } private String getOwnerPassword() + { + return getProperty("database.owner-password", NO_PASSWORD); + } + + private String getProperty(String key, String defaultValue) { if (GlobalInstallationContext.isFirstTimeInstallation) { - return NO_PASSWORD; + return defaultValue; + } + String property = Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, key); + if (property != null && property.length() > 0) + { + return property; } - String password = - Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, - "database.owner-password"); - return password == null ? "" : password; + return defaultValue; } - private boolean testConnectionOK(String username, String password, String messagePostfix) + private boolean testConnectionOK(String host, String username, String password, String messagePostfix) { boolean connected = false; try { Class.forName(JDBC_DRIVER_NAME); Connection connection = - DriverManager.getConnection(CONNECTION_STRING, username, password); + DriverManager.getConnection("jdbc:postgresql://" + host + "/template1", username, password); if (connection != null) { connected = true;