/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.util.db.management; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.util.ArgumentChecker; /** * Utilities around {@link DbManagement} instances. */ public final class DbManagementUtils { private static final Map<String, DbManagement> s_jdbcVendorMap = new ConcurrentHashMap<String, DbManagement>(); static { s_jdbcVendorMap.put("postgresql", PostgresDbManagement.getInstance()); s_jdbcVendorMap.put("derby", DerbyDbManagement.getInstance()); s_jdbcVendorMap.put("hsqldb", HSQLDbManagement.getInstance()); s_jdbcVendorMap.put("sqlserver", SqlServer2008DbManagement.getInstance()); s_jdbcVendorMap.put("oracle", Oracle11gDbManagement.getInstance()); } /** * Hidden constructor */ private DbManagementUtils() { } /** * Gets the {@link DbManagement} implementation for a JDBC vendor name. * * @param jdbcUrl the JDBC url, not null * @return the {@link DbManagement} implementation, not null * @throws IllegalArgumentException if the given JDBC vendor name is unsupported */ public static DbManagement getDbManagement(String jdbcUrl) { ArgumentChecker.notNull(jdbcUrl, "jdbcUrl"); String[] dbUrlParts = jdbcUrl.toLowerCase().split(":"); if (dbUrlParts.length < 2 || !"jdbc".equals(dbUrlParts[0])) { throw new OpenGammaRuntimeException("Expected JDBC database URL, found '" + jdbcUrl + "'"); } String jdbcVendorName = dbUrlParts[1]; DbManagement dbManagement = s_jdbcVendorMap.get(jdbcVendorName); if (dbManagement == null) { throw new IllegalArgumentException("Unsupported JDBC vendor name '" + jdbcVendorName + "'"); } return dbManagement; } }