diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/AbstractDataValidator.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/AbstractDataValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..a93ea6a8c82ce7f98329d721c21209854f9c12a6 --- /dev/null +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/AbstractDataValidator.java @@ -0,0 +1,41 @@ +/* + * Copyright 2013 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.installer.izpack; + +import com.izforge.izpack.api.installer.DataValidator; + +/** + * Abstract super class of all {@link DataValidator}. It handles setting of error message. Error messages + * will be printed on the error console. This is needed for console-based installations. + * + * @author Franz-Josef Elmer + */ +public abstract class AbstractDataValidator implements DataValidator +{ + private String errorMessage; + + protected void setErrorMessage(String errorMessage) + { + System.err.println(getClass().getName() + ": " + errorMessage); + this.errorMessage = errorMessage; + } + + protected String getErrorMessage() + { + return errorMessage; + } +} 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 9cf0599ce772fefa9a69c9a7d28d9144ce942f35..9a12b4970cf706009bf3c4d33e56009b632e5ac0 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 @@ -21,7 +21,6 @@ import java.sql.DriverManager; import java.sql.SQLException; import com.izforge.izpack.api.data.AutomatedInstallData; -import com.izforge.izpack.api.installer.DataValidator; /** * Tests if there is a valid PostgreSQL installation on the local machine that is setup to accept @@ -29,7 +28,7 @@ import com.izforge.izpack.api.installer.DataValidator; * * @author Kaloyan Enimanev */ -public class DBConnectionValidator implements DataValidator +public class DBConnectionValidator extends AbstractDataValidator { private static final String DEFAULT_ERROR_MESSAGE = "Cannot connect to the specified database."; @@ -42,8 +41,6 @@ public class DBConnectionValidator implements DataValidator private static final String NO_PASSWORD = ""; - private String errorMessage; - @Override public boolean getDefaultAnswer() { @@ -53,9 +50,9 @@ public class DBConnectionValidator implements DataValidator @Override public String getErrorMessageId() { - if (errorMessage != null) + if (getErrorMessage() != null) { - return errorMessage; + return getErrorMessage(); } else { return DEFAULT_ERROR_MESSAGE; @@ -161,18 +158,18 @@ public class DBConnectionValidator implements DataValidator } } catch (ClassNotFoundException cnfe) { - errorMessage = createMessage(cnfe, messagePostfix); + createMessage(cnfe, messagePostfix); } catch (SQLException e) { - errorMessage = createMessage(e, messagePostfix); + createMessage(e, messagePostfix); } return connected; } - private String createMessage(Exception exception, String messagePostfix) + private void createMessage(Exception exception, String messagePostfix) { - return exception.getMessage() + ".\nThe error is probably caused by an illconfigured " - + messagePostfix + "."; + setErrorMessage(exception.getMessage() + ".\nThe error is probably caused by an illconfigured " + + messagePostfix + "."); } } diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/KeyStoreValidator.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/KeyStoreValidator.java index 729a1585cdd0bc6f471cb97457f765a66caeacab..b6a6ca7e969f9dd7955558f6694dd4452c9ff1a7 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/KeyStoreValidator.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/KeyStoreValidator.java @@ -27,18 +27,15 @@ import java.util.List; import org.apache.commons.io.IOUtils; import com.izforge.izpack.api.data.AutomatedInstallData; -import com.izforge.izpack.api.installer.DataValidator; /** * * * @author Franz-Josef Elmer */ -public class KeyStoreValidator implements DataValidator +public class KeyStoreValidator extends AbstractDataValidator { - private String errorMessage; - @Override public Status validateData(AutomatedInstallData data) { @@ -71,8 +68,7 @@ public class KeyStoreValidator implements DataValidator } } catch (Exception ex) { - errorMessage = - "Error for key store " + keyStoreFile.getPath() + ":" + ex.getMessage(); + setErrorMessage("Error for key store " + keyStoreFile.getPath() + ":" + ex.getMessage()); return Status.ERROR; } finally { @@ -93,7 +89,7 @@ public class KeyStoreValidator implements DataValidator @Override public String getErrorMessageId() { - return errorMessage; + return getErrorMessage(); } @Override diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java index 09ae4c7b4925de942e323e1200fe9112bb4005f4..7a8c48d0bd47f13d1b3d338a45fc2f4816185f1e 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java @@ -21,14 +21,13 @@ import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContex import java.io.File; import com.izforge.izpack.api.data.AutomatedInstallData; -import com.izforge.izpack.api.installer.DataValidator; /** * Validates the user input for the location of the postgres installation. * * @author Kaloyan Enimanev */ -public class PostgresToolsPathValidator implements DataValidator +public class PostgresToolsPathValidator extends AbstractDataValidator { @Override @@ -67,8 +66,7 @@ public class PostgresToolsPathValidator implements DataValidator return Status.OK; } else { - // only useful for console installations - System.err.println(getErrorMessageId()); + setErrorMessage("'psql' and 'pg_dump' must be available on the specified path: " + selectedPath); return Status.ERROR; }