JbossDatasourceValidation.java
/*
*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*/
package org.entando.kubernetes.controller.app;
/**
* contains the ValidConnectionChecker and ExceptionSorted class names.
*/
import java.util.Optional;
import org.entando.kubernetes.model.common.DbmsVendor;
public enum JbossDatasourceValidation {
MYSQL("org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker",
"org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"),
POSTGRESQL("org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker",
"org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"),
ORACLE("org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker",
"org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"),
DEFAULT("org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker",
"org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter");
/**
* contains full class name responsible to check for connection validity.
*/
private final String validConnectionCheckerClassName;
/**
* contains full class name responsible to sort db connection exception.
*/
private final String exceptionSorterClassName;
JbossDatasourceValidation(String validConnectionCheckerClassName, String exceptionSorterClassName) {
this.validConnectionCheckerClassName = validConnectionCheckerClassName;
this.exceptionSorterClassName = exceptionSorterClassName;
}
public String getValidConnectionCheckerClassName() {
return validConnectionCheckerClassName;
}
public String getExceptionSorterClassName() {
return exceptionSorterClassName;
}
/**
* receives a DbmsVendor and returns the corresponing JbossDatasourceValidation.
*
* @param dbmsVendor the DbmsVendor on which switch
* @return the corresponing JbossDatasourceValidation
*/
public static JbossDatasourceValidation getValidConnectionCheckerClass(DbmsVendor dbmsVendor) {
switch (Optional.ofNullable(dbmsVendor).orElse(DbmsVendor.NONE)) {
case MYSQL:
return MYSQL;
case ORACLE:
return ORACLE;
case POSTGRESQL:
return POSTGRESQL;
default:
return DEFAULT;
}
}
}