/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.test.models.projects; import java.net.URISyntaxException; import org.eclipse.persistence.tools.workbench.test.mappingsmodel.MappingsModelTestTools; import org.eclipse.persistence.tools.workbench.mappingsmodel.db.MWDatabase; import org.eclipse.persistence.tools.workbench.mappingsmodel.db.MWLoginSpec; import org.eclipse.persistence.tools.workbench.mappingsmodel.project.relational.MWRelationalProject; import org.eclipse.persistence.tools.workbench.platformsmodel.DatabasePlatform; import org.eclipse.persistence.tools.workbench.platformsmodel.DatabasePlatformRepository; import org.eclipse.persistence.tools.workbench.utility.io.FileTools; /** * factory for various databases */ public class TestDatabases { // ********** common settings ********** private static MWRelationalProject project() { return new MWRelationalProject("test", MappingsModelTestTools.buildSPIManager(), null); } public static String userName() { return System.getProperty("user.name"); } public static String password() { return "password"; } private static void addDriverClasspathEntriesTo(String[] driverJARNames, MWLoginSpec loginSpec) { for (int i = 0; i < driverJARNames.length; i++) { try { loginSpec.addDriverClasspathEntry(FileTools.resourceFile("/" + driverJARNames[i]).getPath()); } catch (URISyntaxException ex) { throw new RuntimeException(ex); } catch (NullPointerException ex) { continue; } } } // ********** Oracle ********** public static MWDatabase oracleDatabase() { return oracleDatabase(project()); } public static MWDatabase oracleDatabase(MWRelationalProject project) { MWDatabase database = project.getDatabase(); configureOracleDatabase(database); return database; } public static void configureOracleDatabase(MWDatabase database) { database.setDatabasePlatform(oraclePlatform()); MWLoginSpec loginSpec = oracleLoginSpec(database); database.setDevelopmentLoginSpec(loginSpec); database.setDeploymentLoginSpec(loginSpec); } public static DatabasePlatform oraclePlatform() { return DatabasePlatformRepository.getDefault().platformNamed("Oracle"); } public static MWLoginSpec oracleLoginSpec(MWDatabase database) { MWLoginSpec loginSpec = database.addLoginSpec("Oracle"); loginSpec.setDriverClassName(oracleDriverClassName()); loginSpec.setUserName(userName()); loginSpec.setPassword(password()); loginSpec.setSavePassword(true); loginSpec.setURL(oracleServerURL()); addDriverClasspathEntriesTo(oracleDriverClasspathEntries(), loginSpec); return loginSpec; } public static String oracleDriverClassName() { return "oracle.jdbc.OracleDriver"; } public static String oracleServerURL() { return oracleServerURL(oracleServerName()); } private static String oracleServerURL(String serverName) { return "jdbc:oracle:thin:@" + serverName + ":1521:" + oracleInstanceName(); } /** * default to the most recent version */ public static String oracleServerName() { return oracle10gR2ServerName(); } public static String oracle10gR2ServerName() { return "tlsvrdb3.ca.oracle.com"; } public static String oracle10gServerName() { return "tlsvrdb5.ca.oracle.com"; } public static String oracle9iServerName() { return "tlsvrdb1.ca.oracle.com"; } public static String oracle8iServerName() { return "tlsvrdb4.ca.oracle.com"; } public static String oracleInstanceName() { return "TOPLINK"; } public static String[] oracleDriverClasspathEntries() { return new String[] {"OracleThinJDBC_jdk14_10.2.0.1.0.jar"}; } // ********** DB2 ********** public static MWDatabase db2Database() { return db2Database(project()); } public static MWDatabase db2Database(MWRelationalProject project) { MWDatabase database = project.getDatabase(); configureDB2Database(database); return database; } public static void configureDB2Database(MWDatabase database) { database.setDatabasePlatform(db2Platform()); MWLoginSpec loginSpec = db2LoginSpec(database); database.setDevelopmentLoginSpec(loginSpec); database.setDeploymentLoginSpec(loginSpec); } public static DatabasePlatform db2Platform() { return DatabasePlatformRepository.getDefault().platformNamed("IBM DB2"); } public static MWLoginSpec db2LoginSpec(MWDatabase database) { MWLoginSpec loginSpec = database.addLoginSpec("DB2"); loginSpec.setDriverClassName(db2DriverClassName()); loginSpec.setUserName(userName()); loginSpec.setPassword(password()); loginSpec.setSavePassword(true); loginSpec.setURL(db2ServerURL()); addDriverClasspathEntriesTo(db2DriverClasspathEntries(), loginSpec); return loginSpec; } public static String db2DriverClassName() { return "COM.ibm.db2.jdbc.net.DB2Driver"; } public static String db2ServerURL() { return "jdbc:db2://" + db2ServerName() + "/" + db2DatabaseName(); } public static String db2ServerName() { return "tlsvrdb2.ca.oracle.com"; } public static String db2DatabaseName() { return "TOPLINK"; } public static String[] db2DriverClasspathEntries() { return new String[] {"db2java_8.1.zip", "db2jcc_8.1.jar"}; } // ********** Sybase ********** public static MWDatabase sybaseDatabase() { return sybaseDatabase(project()); } public static MWDatabase sybaseDatabase(MWRelationalProject project) { MWDatabase database = project.getDatabase(); configureSybaseDatabase(database); return database; } public static void configureSybaseDatabase(MWDatabase database) { database.setDatabasePlatform(sybasePlatform()); MWLoginSpec loginSpec = sybaseLoginSpec(database); database.setDevelopmentLoginSpec(loginSpec); database.setDeploymentLoginSpec(loginSpec); } public static DatabasePlatform sybasePlatform() { return DatabasePlatformRepository.getDefault().platformNamed("Sybase"); } public static MWLoginSpec sybaseLoginSpec(MWDatabase database) { MWLoginSpec loginSpec = database.addLoginSpec("Sybase"); loginSpec.setDriverClassName(sybaseDriverClassName()); loginSpec.setUserName(sybaseUserName()); loginSpec.setPassword(password()); loginSpec.setSavePassword(true); loginSpec.setURL(sybaseServerURL()); addDriverClasspathEntriesTo(sybaseDriverClasspathEntries(), loginSpec); return loginSpec; } public static String sybaseDriverClassName() { return "com.sybase.jdbc2.jdbc.SybDriver"; } public static String sybaseServerURL() { return "jdbc:sybase:Tds:" + sybaseServerName() + ":5001/" + sybaseDatabaseName(); } public static String sybaseServerName() { return "tlsvrdb2.ca.oracle.com"; } public static String sybaseDatabaseName() { return sybaseUserName(); } /** * there are no individual accounts on the Sybase server */ public static String sybaseUserName() { return "MWDEV1"; } public static String[] sybaseDriverClasspathEntries() { return new String[] {"jconn2.jar"}; } // ********** MySQL ********** public static MWDatabase mySQLDatabase() { return mySQLDatabase(project()); } public static MWDatabase mySQLDatabase(MWRelationalProject project) { MWDatabase database = project.getDatabase(); configureMySQLDatabase(database); return database; } public static void configureMySQLDatabase(MWDatabase database) { database.setDatabasePlatform(mySQLPlatform()); MWLoginSpec loginSpec = mySQLLoginSpec(database); database.setDevelopmentLoginSpec(loginSpec); database.setDeploymentLoginSpec(loginSpec); } public static DatabasePlatform mySQLPlatform() { return DatabasePlatformRepository.getDefault().platformNamed("MySQL"); } public static MWLoginSpec mySQLLoginSpec(MWDatabase database) { MWLoginSpec loginSpec = database.addLoginSpec("MySQL"); loginSpec.setDriverClassName(mySQLDriverClassName()); loginSpec.setUserName(mySQLUserName()); loginSpec.setPassword(password()); loginSpec.setSavePassword(true); loginSpec.setURL(mySQLServerURL()); addDriverClasspathEntriesTo(mySQLDriverClasspathEntries(), loginSpec); return loginSpec; } public static String mySQLDriverClassName() { return "com.mysql.jdbc.Driver"; } public static String mySQLServerURL() { return "jdbc:mysql://" + mySQLServerName() + "/" + mySQLDatabaseName(); } public static String mySQLServerName() { return "tlsvrdb4.ca.oracle.com"; } public static String mySQLDatabaseName() { return mySQLUserName(); } /** * there are no individual accounts on the MySQL server */ public static String mySQLUserName() { return "COREDEV1"; } public static String[] mySQLDriverClasspathEntries() { return new String[] {"mysql-connector-java-3.1.7-bin.jar"}; } // ********** Microsoft Access ********** public static MWDatabase accessDatabase() { return accessDatabase(project()); } public static MWDatabase accessDatabase(MWRelationalProject project) { MWDatabase database = project.getDatabase(); configureAccessDatabase(database); return database; } public static void configureAccessDatabase(MWDatabase database) { database.setDatabasePlatform(accessPlatform()); MWLoginSpec login = accessLoginSpec(database); database.setDevelopmentLoginSpec(login); database.setDeploymentLoginSpec(login); } public static DatabasePlatform accessPlatform() { return DatabasePlatformRepository.getDefault().platformNamed("MS Access"); } public static MWLoginSpec accessLoginSpec(MWDatabase database) { MWLoginSpec loginSpec = database.addLoginSpec("Access"); loginSpec.setDriverClassName(accessDriverClassName()); loginSpec.setUserName(userName()); loginSpec.setPassword(password()); loginSpec.setSavePassword(true); loginSpec.setURL(accessServerURL()); return loginSpec; } public static String accessDriverClassName() { return "sun.jdbc.odbc.JdbcOdbcDriver"; } public static String accessServerURL() { return "jdbc:odbc:" + accessDataSourceName(); } public static String accessDataSourceName() { return "MW"; } // ********** constructor ********** private TestDatabases() { throw new UnsupportedOperationException(); } }