From b7528f32730fc656868af2e203fe0af8d58c4be2 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Thu, 16 May 2013 12:11:28 +0000 Subject: [PATCH] SP-649, BIS-419: Validators improved by printing error messages onto the error console. SVN: 29152 --- .../izpack/AbstractDataValidator.java | 41 +++++++++++++++++++ .../izpack/DBConnectionValidator.java | 19 ++++----- .../installer/izpack/KeyStoreValidator.java | 10 ++--- .../izpack/PostgresToolsPathValidator.java | 6 +-- 4 files changed, 54 insertions(+), 22 deletions(-) create mode 100644 installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/AbstractDataValidator.java 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 00000000000..a93ea6a8c82 --- /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 9cf0599ce77..9a12b4970cf 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 729a1585cdd..b6a6ca7e969 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 09ae4c7b492..7a8c48d0bd4 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; } -- GitLab