/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.jdbc;
import java.io.File;
import java.io.PrintStream;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.datatools.connectivity.ProfileManager;
import org.teiid.core.designer.util.CoreStringUtil;
import org.teiid.core.util.SmartTestDesignerSuite;
import org.teiid.designer.jdbc.JdbcDriver;
import org.teiid.designer.jdbc.JdbcFactory;
import org.teiid.designer.jdbc.JdbcManagerImpl;
import org.teiid.designer.jdbc.JdbcPlugin;
import org.teiid.designer.jdbc.JdbcSource;
import org.teiid.designer.jdbc.JdbcSourceProperty;
import org.teiid.designer.jdbc.impl.JdbcFactoryImpl;
/**
* TestJdbcManagerImpl
*/
public class TestJdbcManagerImpl extends TestCase {
private static final int VALID_CLASS_NAME = 10000;
private static final String[] CLASSES2 = new String[] {"com.metamatrix.jdbc.oracle.OracleDriver", //$NON-NLS-1$
"com.metamatrix.jdbc.oracle.OracleConnection", //$NON-NLS-1$
"com.metamatrix.jdbcx.oracle.OracleDataSource", //$NON-NLS-1$
"com.metamatrix.jdbcx.oracle.OracleDataSourceFactory", //$NON-NLS-1$
};
private static final String[] CLASSES3 = new String[] {"sun.jdbc.odbc.JdbcOdbcDriver" //$NON-NLS-1$
};
private static final String[] SOURCE_PROPERTY_NAMES = new String[] {
"databaseName", "serverName", "portNumber", "user", "password", "includeSynonyms"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
private static final String[] SOURCE_PROPERTY_VALUES = new String[] {
"db08", "slntdb08", "1521", "apollo_rep_test", "mm", "false"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
public static final String ORACLE_DB_URL = "jdbc:oracle:thin:@slntdb08:1521:db08"; //$NON-NLS-1$
public static final String ORACLE_DB_USERNAME = "apollo_rep_test"; //$NON-NLS-1$
public static final String ORACLE_DB_PASSWORD = "mm"; //$NON-NLS-1$
private String[] JAR_FILES2;
private String[] JAR_FILES_THAT_DONT_EXIST;
private JdbcManagerImpl mgr;
private JdbcSource sampleSource;
private JdbcDriver sampleDriver;
private JdbcSource matchSource;
private JdbcDriver nameMatchDriver;
private JdbcDriver availableClassMatchDriver;
private JdbcDriver preferredClassMatchDriver;
private JdbcDriver noMatchDriver;
private JdbcDriver exactMatchDriver;
private JdbcDriver metamatrixOracleDriver;
private JdbcDriver excelDriver;
private JdbcSource excelSource;
private final JdbcFactory factory = new JdbcFactoryImpl();
/**
* This class overrides the {@link JdbcManagerImpl#getJdbcDrivers()} method (which requires a Resource to be used), and adds
* the drivers in this test to the returned list. This is used for the 'find*' method test cases.
*/
protected class JdbcDriverManagerForTesting extends JdbcManagerImpl {
private final List drivers;
public JdbcDriverManagerForTesting() {
super("Testing Manager"); //$NON-NLS-1$
this.drivers = new ArrayList();
}
@Override
public List getJdbcDrivers() {
return this.drivers;
}
@Override
public void shutdown() {
}
@Override
public void start() {
setProfileManager(ProfileManager.getInstance());
}
}
/**
* Constructor for TestJdbcManagerImpl.
*
* @param name
*/
public TestJdbcManagerImpl( String name ) {
super(name);
}
/*
* @see TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
String jar_path = SmartTestDesignerSuite.getProjectPath("com.metamatrix.datadirect");//$NON-NLS-1$
JAR_FILES2 = new String[] {(new File(jar_path + "/MJbase.jar")).toURI().toURL().toString(), //$NON-NLS-1$
(new File(jar_path + "/MJutil.jar")).toURI().toURL().toString(), //$NON-NLS-1$
(new File(jar_path + "/MJoracle.jar")).toURI().toURL().toString() //$NON-NLS-1$
};
JAR_FILES_THAT_DONT_EXIST = new String[] {
SmartTestDesignerSuite.getTestDataFile(getClass(), "/drivers").toURI().toURL().toString() + "MJbase.ZIP", //$NON-NLS-1$ //$NON-NLS-2$
SmartTestDesignerSuite.getTestDataFile(getClass(), "/drivers").toURI().toURL().toString() + "MJutil.ZIP", //$NON-NLS-1$ //$NON-NLS-2$
SmartTestDesignerSuite.getTestDataFile(getClass(), "/drivers").toURI().toURL().toString() + "MJoracle.ZIP" //$NON-NLS-1$ //$NON-NLS-2$
};
mgr = new JdbcDriverManagerForTesting();
// mgr.start();
sampleSource = factory.createJdbcSource();
sampleDriver = factory.createJdbcDriver();
// Create the source for the find method tests
final String matchDriverName = "My Favorite Driver"; //$NON-NLS-1$
final String matchDriverClass = CLASSES2[0];
matchSource = factory.createJdbcSource();
matchSource.setName("My Database"); //$NON-NLS-1$
matchSource.setDriverName(matchDriverName);
matchSource.setDriverClass(matchDriverClass);
// Create a driver that the matchSource will only match by name
nameMatchDriver = factory.createJdbcDriver();
nameMatchDriver.setName(matchDriverName);
nameMatchDriver.setPreferredDriverClassName(CLASSES3[0]);
nameMatchDriver.getAvailableDriverClassNames().add(CLASSES3[0]);
// Create a driver that the matchSource will only match by available driver
availableClassMatchDriver = factory.createJdbcDriver();
availableClassMatchDriver.setName(matchDriverName + " (no match)"); //$NON-NLS-1$
availableClassMatchDriver.setPreferredDriverClassName(CLASSES2[2]);
availableClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[0]);
availableClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[1]);
availableClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[2]);
availableClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[3]);
// Create a driver that the matchSource will only match by available driver
preferredClassMatchDriver = factory.createJdbcDriver();
preferredClassMatchDriver.setName(matchDriverName + " (no match)"); //$NON-NLS-1$
preferredClassMatchDriver.setPreferredDriverClassName(matchDriverClass);
preferredClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[0]);
preferredClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[1]);
preferredClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[2]);
preferredClassMatchDriver.getAvailableDriverClassNames().add(CLASSES2[3]);
// Create a driver that the matchSource will not match
noMatchDriver = factory.createJdbcDriver();
noMatchDriver.setName(matchDriverName + " (no match)"); //$NON-NLS-1$
noMatchDriver.setPreferredDriverClassName(CLASSES3[0]);
noMatchDriver.getAvailableDriverClassNames().add(CLASSES3[0]);
// Create a driver that the matchSource will only match by available driver
exactMatchDriver = factory.createJdbcDriver();
exactMatchDriver.setName(matchDriverName);
exactMatchDriver.setPreferredDriverClassName(matchDriverClass);
exactMatchDriver.getAvailableDriverClassNames().add(CLASSES2[0]);
exactMatchDriver.getAvailableDriverClassNames().add(CLASSES2[1]);
exactMatchDriver.getAvailableDriverClassNames().add(CLASSES2[2]);
exactMatchDriver.getAvailableDriverClassNames().add(CLASSES2[3]);
exactMatchDriver.getJarFileUris().add(JAR_FILES2[0]);
exactMatchDriver.getJarFileUris().add(JAR_FILES2[1]);
exactMatchDriver.getJarFileUris().add(JAR_FILES2[2]);
mgr.getJdbcDrivers().add(nameMatchDriver);
mgr.getJdbcDrivers().add(availableClassMatchDriver);
mgr.getJdbcDrivers().add(preferredClassMatchDriver);
mgr.getJdbcDrivers().add(noMatchDriver);
mgr.getJdbcDrivers().add(exactMatchDriver);
metamatrixOracleDriver = factory.createJdbcDriver();
metamatrixOracleDriver.setName("MetaMatrix JDBC for Oracle"); //$NON-NLS-1$
metamatrixOracleDriver.getAvailableDriverClassNames().add(CLASSES2[0]);
metamatrixOracleDriver.getAvailableDriverClassNames().add(CLASSES2[2]);
metamatrixOracleDriver.setPreferredDriverClassName(CLASSES2[0]);
metamatrixOracleDriver.getJarFileUris().add(JAR_FILES2[0]);
metamatrixOracleDriver.getJarFileUris().add(JAR_FILES2[1]);
metamatrixOracleDriver.getJarFileUris().add(JAR_FILES2[2]);
excelDriver = factory.createJdbcDriver();
excelDriver.setName("Microsoft Excel"); //$NON-NLS-1$
excelDriver.getAvailableDriverClassNames().add(CLASSES3[0]);
excelDriver.setPreferredDriverClassName(CLASSES3[0]);
// excelDriver.getJarFileUris().add(JAR_FILES1[0]);
mgr.getJdbcDrivers().add(excelDriver);
excelSource = factory.createJdbcSource();
excelSource.setName("Book1 (Excel)"); //$NON-NLS-1$
excelSource.setDriverClass(CLASSES3[0]);
excelSource.setDriverName("Microsoft Excel"); //$NON-NLS-1$
excelSource.setUrl("jdbc:odbc:Driver={MicroSoft Excel Driver (*.xls)};dBQ=testdata/Book1.xls"); //$NON-NLS-1$
mgr.start();
}
/*
* @see TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
super.tearDown();
mgr.shutdown();
mgr = null;
sampleDriver = null;
sampleSource = null;
matchSource = null;
nameMatchDriver = null;
availableClassMatchDriver = null;
preferredClassMatchDriver = null;
noMatchDriver = null;
exactMatchDriver = null;
metamatrixOracleDriver = null;
excelSource = null;
}
/**
* Test suite, with one-time setup.
*/
public static Test suite() {
TestSuite suite = new SmartTestDesignerSuite("org.teiid.designer.jdbc", "TestJdbcManagerImpl"); //$NON-NLS-1$ //$NON-NLS-2$
suite.addTestSuite(TestJdbcManagerImpl.class);
// One-time setup and teardown
return new TestSetup(suite) {
@Override
public void setUp() {
JdbcPlugin.DEBUG = true;
}
@Override
public void tearDown() {
}
};
}
public JdbcSourceProperty helpCreateProperty( final JdbcSource source,
final String name,
final String value ) {
final JdbcSourceProperty prop = factory.createJdbcSourceProperty();
prop.setName(name);
prop.setValue(value);
source.getProperties().add(prop);
return prop;
}
public JdbcSource helpCreateValidSource() {
final JdbcSource result = factory.createJdbcSource();
result.setName("This is a Valid Name With Trailing Spaces "); //$NON-NLS-1$
result.setDriverClass(CLASSES2[0]);
// Set the URL to something valid
result.setUrl("jdbc:oracle:thin:@slntds01:1521:ds01a"); //$NON-NLS-1$
result.setDriverName(exactMatchDriver.getName());
// Create the properties ...
for (int i = 0; i < SOURCE_PROPERTY_NAMES.length; i++) {
helpCreateProperty(result, SOURCE_PROPERTY_NAMES[i], SOURCE_PROPERTY_VALUES[i]);
}
helpIsValidJdbcSource(result, JdbcManagerImpl.VALID_SOURCE, IStatus.OK);
return result;
}
public JdbcDriver helpCreateValidDriver() {
final JdbcDriver result = factory.createJdbcDriver();
result.setName("This is a Valid_ Name"); //$NON-NLS-1$
result.getAvailableDriverClassNames().add(CLASSES2[0]);
result.getAvailableDriverClassNames().add(CLASSES2[2]);
result.setPreferredDriverClassName(CLASSES2[0]);
result.getJarFileUris().add(JAR_FILES2[0]);
result.getJarFileUris().add(JAR_FILES2[1]);
result.getJarFileUris().add(JAR_FILES2[2]);
helpIsValidJdbcDriver(result, JdbcManagerImpl.VALID_DRIVER, IStatus.OK);
return result;
}
public void helpCheckClassNameForError( final int expectedCode,
final int expectedSeverity,
final String className ) {
final IStatus status = mgr.checkClassNameForError(className);
if (expectedCode != VALID_CLASS_NAME) {
assertEquals(expectedCode, status.getCode());
assertEquals(expectedSeverity, status.getSeverity());
}
}
public void helpIsValidJdbcSource( final JdbcSource source,
final int expectedCode,
final int expectedSeverity ) {
final IStatus status = mgr.isValid(source);
assertNotNull(status);
assertEquals(expectedCode, status.getCode());
assertEquals(expectedSeverity, status.getSeverity());
}
public void helpIsValidJdbcDriver( final JdbcDriver driver,
final int expectedCode,
final int expectedSeverity ) {
final IStatus status = mgr.isValid(driver);
assertNotNull(status);
assertEquals(expectedCode, status.getCode());
assertEquals(expectedSeverity, status.getSeverity());
}
public void helpTestClassLoader( final ClassLoader loader,
final String[] classNames,
final boolean shouldSucceed ) {
if (!shouldSucceed) {
fail("Should not have been able to create class loader"); //$NON-NLS-1$
}
for (int i = 0; i < classNames.length; i++) {
final String className = classNames[i];
assertNotNull(className);
try {
final Class c = Class.forName(className, true, loader);
assertNotNull(c);
} catch (ClassNotFoundException e1) {
fail("Unable to find class " + className + "\nin class loader over " + //$NON-NLS-1$ //$NON-NLS-2$
CoreStringUtil.toString(((URLClassLoader)loader).getURLs()));
}
}
}
public void printJdbcDriver( final JdbcDriver driver,
final PrintStream stream ) {
stream.println("JdbcDriver: "); //$NON-NLS-1$
stream.println(" name = " + driver.getName()); //$NON-NLS-1$
stream.println(" JAR files:"); //$NON-NLS-1$
final Iterator iter = driver.getJarFileUris().iterator();
while (iter.hasNext()) {
stream.println(" - " + iter.next()); //$NON-NLS-1$
}
stream.println(" available driver classes:"); //$NON-NLS-1$
final Iterator iter2 = driver.getAvailableDriverClassNames().iterator();
while (iter2.hasNext()) {
stream.println(" - " + iter2.next()); //$NON-NLS-1$
}
stream.println(" preferred driver class:"); //$NON-NLS-1$
stream.println(" - " + driver.getPreferredDriverClassName()); //$NON-NLS-1$
}
public void helpTestConnection( final JdbcSource source,
final String passwd,
final boolean shouldConnect ) throws Exception {
Connection conn = null;
try {
conn = mgr.createConnection(source, passwd);
if (!shouldConnect) {
if (conn == null) {
fail("Should not have been able to connect; got null Connection and no exception!"); //$NON-NLS-1$
}
fail("Should not have been able to connect"); //$NON-NLS-1$
}
assertNotNull(conn); // if no exception and should have connected, then should not be null
} catch (Exception e) {
if (shouldConnect) {
throw e;
}
} finally {
if (conn != null) {
conn.close();
}
}
}
public void testConstructorWithZeroLengthNameArg() {
try {
new JdbcManagerImpl(""); //$NON-NLS-1$
fail("Failed to catch zero-length name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// Expected
}
}
public void testConstructorWithNullNameArg() {
try {
new JdbcManagerImpl(null);
fail("Failed to catch null name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// Expected
}
}
public void testConstructorWithNullArgs() {
try {
new JdbcManagerImpl(null);
fail("Failed to catch null parameters"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// Expected
}
}
public void testGetFactory() {
final JdbcFactory factory = mgr.getFactory();
assertNotNull(factory);
}
public void testCheckClassNameForErrorWithValidClass1() {
helpCheckClassNameForError(VALID_CLASS_NAME, IStatus.ERROR, String.class.getName());
}
public void testCheckClassNameForErrorWithValidClass2() {
helpCheckClassNameForError(VALID_CLASS_NAME, IStatus.ERROR, Map.Entry.class.getName());
}
public void testCheckClassNameForErrorWithValidClass3() {
helpCheckClassNameForError(VALID_CLASS_NAME, IStatus.ERROR, "java.x.y.this_is_valid_class"); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsFirstChar() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_AT_START_OF_CLASS_NAME,
IStatus.ERROR,
" " + String.class.getName()); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsNonFirstChar1() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR, "java. x.y.z"); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsNonFirstChar2() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR, "java.*x.y.z"); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsNonFirstChar3() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR, "java.%x.y.z"); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsNonFirstChar4() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR, "java.#x.y.z"); //$NON-NLS-1$
}
public void testCheckClassNameForErrorWithSpaceAsNonFirstChar5() {
helpCheckClassNameForError(JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR, "java.x.y.z "); //$NON-NLS-1$
}
public void testIsValidJdbcSourceWithNullName() {
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithEmptyName() {
sampleSource.setName(""); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithNameStartingWithNonLetterOrNumber() {
sampleSource.setName("*Not Valid Name since begins with a non-letter or number"); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.NAME_MUST_BEGIN_WITH_LETTER_OR_NUMBER, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithMissingDriverClass() {
sampleSource.setName("This is a Valid Name"); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.MISSING_DRIVER_CLASS, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithInvalidDriverClass1() {
sampleSource.setName("This is a Valid Name"); //$NON-NLS-1$
sampleSource.setDriverClass(null);
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.MISSING_DRIVER_CLASS, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithInvalidDriverClass2() {
sampleSource.setName("This is a Valid Name"); //$NON-NLS-1$
sampleSource.setDriverClass(""); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.MISSING_DRIVER_CLASS, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithInvalidDriverClass3() {
sampleSource.setName("This is a Valid Name"); //$NON-NLS-1$
sampleSource.setDriverClass("*not. valid class file"); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.ILLEGAL_CHAR_AT_START_OF_CLASS_NAME, IStatus.ERROR);
}
public void testIsValidJdbcSourceWithInvalidDriverClass4() {
sampleSource.setName("This is a Valid Name"); //$NON-NLS-1$
sampleSource.setDriverClass("not.valid class file"); //$NON-NLS-1$
helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR);
}
// NOT sure how we test this. Have to create a connection profile using DTP's ProfileManager
// would require a bit of set-up. Maybe using Mockito/Powermock would help
// TODO: fix this
// public void testIsValidJdbcSource1() {
// sampleSource.setName("This is a Valid_ Name"); //$NON-NLS-1$
// sampleSource.setDriverClass(String.class.getName());
// helpIsValidJdbcSource(sampleSource, JdbcManagerImpl.UNABLE_TO_FIND_DRIVER, IStatus.WARNING);
// }
public void testIsValidJdbcDriverWithNullName() {
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithEmptyName() {
sampleDriver.setName(""); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameStartingWithNonLetterOrNumber() {
sampleDriver.setName("*Not Valid Name since begins with a non-letter or number"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_MUST_BEGIN_WITH_LETTER_OR_NUMBER, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameNoAvailableClasses1() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NO_AVAILABLE_DRIVER_CLASS_NAMES, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameNoAvailableClasses2() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(""); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(""); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameOneAvailableClassAndOneNullClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add(null);
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameOneAvailableClassAndOneZeroLengthClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add(""); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameOneAvailableClassAndOneClassWithAllSpaces() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add(" "); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndDefaultPreferredClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.PREFERRED_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndNullPreferredClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName(null);
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.PREFERRED_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndZeroLengthPreferredClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName(""); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.PREFERRED_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndAllSpacePreferredClass() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName(" "); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.PREFERRED_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassWithInvalidStarting() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("*invalid.java.class. name"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.ILLEGAL_CHAR_AT_START_OF_CLASS_NAME, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassWithInvalidChar() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("invalid.java.class. name"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.ILLEGAL_CHAR_IN_CLASS_NAME, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassNotInAvailable() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("valid.class.name.not.in.available"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.PREFERRED_NOT_IN_AVAILABLE, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassAndNoJars() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.NO_JARS_SPECIFIED, IStatus.WARNING);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassAndJarsWithNullUrl() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.getJarFileUris().add(null);
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.JAR_FILE_URI_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassAndJarsWithZeroLengthUrl() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.getJarFileUris().add(""); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.JAR_FILE_URI_NOT_SPECIFIED, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassAndNonExistantJarUrl() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.getJarFileUris().add(JAR_FILES_THAT_DONT_EXIST[0]);
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.JAR_FILE_DOESNT_EXIST, IStatus.ERROR);
}
public void testIsValidJdbcDriverWithNameAndTwoAvailableClassAndPreferredClassAndMalformedJarUrl() {
sampleDriver.setName("This is a Valid_ Name"); //$NON-NLS-1$
sampleDriver.getAvailableDriverClassNames().add(String.class.getName());
sampleDriver.getAvailableDriverClassNames().add("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.setPreferredDriverClassName("oracle.jdbc.OracleDriver"); //$NON-NLS-1$
sampleDriver.getJarFileUris().add("x++++xxx" + JAR_FILES_THAT_DONT_EXIST[0]); //$NON-NLS-1$
helpIsValidJdbcDriver(sampleDriver, JdbcManagerImpl.JAR_FILE_DOESNT_EXIST, IStatus.ERROR);
}
public void testWizardUseCase() {
final JdbcDriver driver = mgr.getFactory().createJdbcDriver();
helpIsValidJdbcDriver(driver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
// Don't set the name, but add an available class ...
driver.getAvailableDriverClassNames().add(CLASSES2[0]);
helpIsValidJdbcDriver(driver, JdbcManagerImpl.NAME_NOT_SPECIFIED, IStatus.ERROR);
// Set the name ...
driver.setName("This is a valid name"); //$NON-NLS-1$
helpIsValidJdbcDriver(driver, JdbcManagerImpl.PREFERRED_NOT_SPECIFIED, IStatus.ERROR);
}
public void testExcelConnectingWithBadUrl() throws Exception {
excelSource.setUrl("jdbc:odbc:Driver={MicroSoft Excel Driver (*.xls)}");//$NON-NLS-1$
helpTestConnection(excelSource, null, false);
}
}