org.obiba.opal.core.runtime.jdbc.DefaultJdbcDriverRegistry.java Source code

Java tutorial

Introduction

Here is the source code for org.obiba.opal.core.runtime.jdbc.DefaultJdbcDriverRegistry.java

Source

/*******************************************************************************
 * Copyright (c) 2012 OBiBa. All rights reserved.
 *
 * This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
package org.obiba.opal.core.runtime.jdbc;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Collections;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.io.ByteStreams;

@Component
public class DefaultJdbcDriverRegistry implements JdbcDriverRegistry {

    private static final Map<String, String> SUPPORTED_DRIVER_CLASS_TO_NAME = ImmutableMap
            .of("com.mysql.jdbc.Driver", "MySQL");

    private static final Map<String, String> DRIVER_CLASS_TO_URL_TEMPLATE = ImmutableMap.of("com.mysql.jdbc.Driver",
            "jdbc:mysql://{hostname}:{port}/{databaseName}");

    private static final Map<String, String> DRIVER_CLASS_TO_URL_EXAMPLE = ImmutableMap.of("com.mysql.jdbc.Driver",
            "jdbc:mysql://localhost:3306/opal");

    @Override
    public Iterable<Driver> listDrivers() {
        return Iterables.filter(Collections.list(DriverManager.getDrivers()), new Predicate<Driver>() {
            @Override
            public boolean apply(Driver driver) {
                return SUPPORTED_DRIVER_CLASS_TO_NAME.containsKey(driver.getClass().getName());
            }
        });
    }

    @Override
    public String getDriverName(Driver driver) {
        String className = driver.getClass().getName();
        return Objects.firstNonNull(SUPPORTED_DRIVER_CLASS_TO_NAME.get(className), className);
    }

    @Override
    public String getJdbcUrlTemplate(Driver driver) {
        return Objects.firstNonNull(DRIVER_CLASS_TO_URL_TEMPLATE.get(driver.getClass().getName()), "");
    }

    @Override
    public String getJdbcUrlExample(Driver driver) {
        return Objects.firstNonNull(DRIVER_CLASS_TO_URL_EXAMPLE.get(driver.getClass().getName()), "");
    }

    @Override
    public void addDriver(String filename, InputStream jarFile) throws IOException {
        try (FileOutputStream fos = new FileOutputStream(new File(System.getenv("OPAL_HOME") + "/ext", filename))) {
            ByteStreams.copy(jarFile, fos);
        } finally {
            try {
                jarFile.close();
            } catch (IOException ignored) {
            }
        }
    }
}