All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.teradata.tempto.internal.query.JdbcConnectionsConfiguration Maven / Gradle / Ivy

There is a newer version: 1.40
Show newest version
/*
 * 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 com.teradata.tempto.internal.query;

import com.teradata.tempto.configuration.Configuration;
import com.teradata.tempto.configuration.KeyUtils;
import com.teradata.tempto.query.JdbcConnectivityParamsState;

import java.util.Optional;
import java.util.Set;

public class JdbcConnectionsConfiguration
{

    private static final String DATABASES_CONFIGURATION_SECTION = "databases";
    private static final String JDBC_DRIVER_CLASS = "jdbc_driver_class";
    private static final String JDBC_URL_KEY = "jdbc_url";
    private static final String JDBC_USER_KEY = "jdbc_user";
    private static final String JDBC_PASSWORD_KEY = "jdbc_password";
    private static final String JDBC_POOLING_KEY = "jdbc_pooling";
    private static final String JDBC_JAR = "jdbc_jar";
    private static final String ALIAS_KEY = "alias";
    private static final String PREPARE_STATEMENT_KEY = "prepare_statement";
    private static final String KERBEROS_PRINCIPAL_KEY = "kerberos_principal";
    private static final String KERBEROS_KEYTAB_KEY = "kerberos_keytab";

    private final Configuration configuration;

    public JdbcConnectionsConfiguration(Configuration configuration) {this.configuration = configuration;}

    public Set getDefinedJdcbConnectionNames()
    {
        return configuration.getSubconfiguration(DATABASES_CONFIGURATION_SECTION).listKeyPrefixes(1);
    }

    public JdbcConnectivityParamsState getConnectionConfiguration(String connectionName)
    {

        Configuration connectionConfiguration = getDatabaseConnectionSubConfiguration(connectionName);
        Optional alias = connectionConfiguration.getString(ALIAS_KEY);
        if (alias.isPresent()) {
            connectionConfiguration = getDatabaseConnectionSubConfiguration(alias.get());
        }

        return JdbcConnectivityParamsState.builder()
                .setName(connectionName)
                .setDriverClass(connectionConfiguration.getStringMandatory(JDBC_DRIVER_CLASS))
                .setUrl(connectionConfiguration.getStringMandatory(JDBC_URL_KEY))
                .setUser(connectionConfiguration.getStringMandatory(JDBC_USER_KEY))
                .setPassword(connectionConfiguration.getStringMandatory(JDBC_PASSWORD_KEY))
                .setPooling(connectionConfiguration.getBoolean(JDBC_POOLING_KEY).orElse(false))
                .setJar(connectionConfiguration.getString(JDBC_JAR))
                .setPrepareStatement(connectionConfiguration.getString(PREPARE_STATEMENT_KEY))
                .setKerberosPrincipal(connectionConfiguration.getString(KERBEROS_PRINCIPAL_KEY))
                .setKerberosKeytab(connectionConfiguration.getString(KERBEROS_KEYTAB_KEY))
                .build();
    }

    private Configuration getDatabaseConnectionSubConfiguration(String connectionName)
    {
        return configuration.getSubconfiguration(KeyUtils.joinKey(DATABASES_CONFIGURATION_SECTION, connectionName));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy