[teiid-commits] teiid SVN: r1918 - in trunk/connectors/connector-jdbc: src and 28 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Fri Mar 5 10:27:15 EST 2010
Author: shawkins
Date: 2010-03-05 10:27:12 -0500 (Fri, 05 Mar 2010)
New Revision: 1918
Added:
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java
trunk/connectors/connector-jdbc/src/main/rar/
trunk/connectors/connector-jdbc/src/main/rar/META-INF/
trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/FakeMetadataFactory.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.class
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.class
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.class
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.class
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.class
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.class
trunk/connectors/connector-jdbc/src/test/resources/PartsSupplier.vdb
Removed:
trunk/connectors/connector-jdbc/src/assembly/
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceXAConnection.java
trunk/connectors/connector-jdbc/src/main/rar/META-INF/
trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCSourceConnection.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java
Modified:
trunk/connectors/connector-jdbc/pom.xml
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCConnector.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCUpdateExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/db2/DB2SQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/derby/DerbySQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/informix/InformixSQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/BitFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQL5Translator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/ConcatFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/DayWeekQuarterFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/LeftOrRightFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/Log10FunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/MonthOrDayNameFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSpatialFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/LocateFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/PostgreSQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SubstringFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SybaseSQLTranslator.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/AliasModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ConvertModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/EscapeSyntaxModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ExtractFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/FunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/LocateFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ModFunctionModifier.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/TranslatedCommand.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
trunk/connectors/connector-jdbc/src/main/resources/org/teiid/connector/jdbc/i18n.properties
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/access/TestAccessSQLTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2ConvertModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLeftOrRightFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLog10FunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleConvertModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestSubstringFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseConvertModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestLocateFunctionModifier.java
trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestModFunctionModifier.java
Log:
TEIID-833 committing JCA merge
Modified: trunk/connectors/connector-jdbc/pom.xml
===================================================================
--- trunk/connectors/connector-jdbc/pom.xml 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/pom.xml 2010-03-05 15:27:12 UTC (rev 1918)
@@ -11,8 +11,9 @@
<artifactId>connector-jdbc</artifactId>
<groupId>org.jboss.teiid.connectors</groupId>
<name>JDBC Connector</name>
- <description>This project contains connectors for a JDBC source. Currently this is an aggregator for all the JDBC connectors relational databases.</description>
+ <packaging>rar</packaging>
+ <description>This project contains connectors for a JDBC source. Currently this is an aggregator for all the JDBC connectors relational databases.</description>
<dependencies>
<dependency>
<groupId>org.jboss.teiid</groupId>
@@ -24,101 +25,29 @@
<artifactId>teiid-common-core</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>javax.resource</groupId>
+ <artifactId>connector-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
- <!-- This build portion is identical for all the connectors that are deployed; so when making changes make sure
- it applies to all the connectors. This below block computes the classpath, writes to classpath.properties; it replaces
- classpath in the xml file, then bundles current project and its dependencies and xml file in a zip for deployment-->
<build>
- <plugins>
- <!-- build class path -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>build-classpath</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>build-classpath</goal>
- </goals>
- <configuration>
- <fileSeparator>:</fileSeparator>
- <pathSeparator>;</pathSeparator>
- <prefix>extensionjar</prefix>
- <excludeTransitive>false</excludeTransitive>
- <includeScope>runtime</includeScope>
- <excludeTypes>pom</excludeTypes>
- <outputFile>target/classpath.properties</outputFile>
- <regenerateFile>true</regenerateFile>
- <outputFilterFile>true</outputFilterFile>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <!-- bundles all its dependencies in a single zip file -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <excludeTransitive>false</excludeTransitive>
- <includeScope>runtime</includeScope>
- <excludeTypes>pom</excludeTypes>
- <includeArtifactIds>${project.artifactId}</includeArtifactIds>
- <outputDirectory>target/dependency</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-2</version>
- <configuration>
- <descriptors>
- <descriptor>src/assembly/bundle.xml</descriptor>
- </descriptors>
- <outputDirectory>target/distribution</outputDirectory>
- <workDirectory>target/assembly/work</workDirectory>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <!-- replaces the classpath tokens in the xml file -->
- <filters>
- <filter>target/classpath.properties</filter>
- </filters>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>false</filtering>
- <excludes>
- <exclude>**/*.xml</exclude>
- </excludes>
- </resource>
- </resources>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>build_jar</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
</build>
+
</project>
\ No newline at end of file
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,21 +29,16 @@
import java.sql.SQLWarning;
import java.sql.Statement;
import java.util.List;
-import java.util.Properties;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ConnectorIdentity;
import org.teiid.connector.api.ConnectorLogger;
-import org.teiid.connector.api.ConnectorPropertyNames;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.basic.BasicExecution;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.common.util.PropertiesUtils;
-
/**
*/
public abstract class JDBCBaseExecution extends BasicExecution {
@@ -55,11 +50,12 @@
// Passed to constructor
protected Connection connection;
protected Translator sqlTranslator;
- protected ConnectorIdentity id;
protected ConnectorLogger logger;
protected ExecutionContext context;
+ protected JDBCManagedConnectionFactory env;
// Derived from properties
+ protected boolean trimString;
protected int fetchSize;
protected int maxResultRows;
@@ -70,23 +66,19 @@
// Constructors
// ===========================================================================================================================
- protected JDBCBaseExecution(Connection connection,
- Translator sqlTranslator,
- ConnectorLogger logger,
- Properties props,
- ExecutionContext context) {
+ protected JDBCBaseExecution(Connection connection, ExecutionContext context, JDBCManagedConnectionFactory env) throws ConnectorException {
this.connection = connection;
- this.sqlTranslator = sqlTranslator;
- this.logger = logger;
+ this.sqlTranslator = env.getExtensionTranslationClass();
+ this.logger = env.getLogger();
this.context = context;
+ this.env = env;
- fetchSize = PropertiesUtils.getIntProperty(props, JDBCPropertyNames.FETCH_SIZE, 0);
- if (fetchSize == 0) {
- fetchSize = context.getBatchSize();
- }
- maxResultRows = PropertiesUtils.getIntProperty(props, ConnectorPropertyNames.MAX_RESULT_ROWS, -1);
+ trimString = env.isTrimStrings();
+ fetchSize = (env.getFetchSize() != -1)?env.getFetchSize():context.getBatchSize();
+ maxResultRows = env.getMaxResultRows();
+
//if the connector work needs to throw an excpetion, set the size plus 1
- if (maxResultRows > 0 && PropertiesUtils.getBooleanProperty(props, ConnectorPropertyNames.EXCEPTION_ON_MAX_ROWS, false)) {
+ if (maxResultRows > 0 && env.isExceptionOnMaxRows()) {
maxResultRows++;
}
if (maxResultRows > 0) {
@@ -102,7 +94,7 @@
for (int row = 0; row < rowCount; row++) {
for (int i = 0; i< params.size(); i++) {
- ILiteral paramValue = (ILiteral)params.get(i);
+ Literal paramValue = (Literal)params.get(i);
Object value = paramValue.getValue();
if (paramValue.isMultiValued()) {
value = ((List<?>)value).get(row);
@@ -120,7 +112,7 @@
// Methods
// ===========================================================================================================================
- protected TranslatedCommand translateCommand(ICommand command) throws ConnectorException {
+ protected TranslatedCommand translateCommand(Command command) throws ConnectorException {
TranslatedCommand translatedCommand = new TranslatedCommand(context, sqlTranslator);
translatedCommand.translateCommand(command);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCConnector.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCConnector.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCConnector.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,343 +22,79 @@
package org.teiid.connector.jdbc;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.sql.Driver;
-import java.sql.DriverManager;
import java.sql.SQLException;
-import java.util.Enumeration;
-import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
-import javax.sql.XADataSource;
import org.teiid.connector.api.Connection;
import org.teiid.connector.api.ConnectorCapabilities;
import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ConnectorLogger;
-import org.teiid.connector.api.ConnectorPropertyNames;
-import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.api.MappedUserIdentity;
-import org.teiid.connector.api.MetadataProvider;
-import org.teiid.connector.api.SingleIdentity;
-import org.teiid.connector.api.ConnectorAnnotations.ConnectionPooling;
import org.teiid.connector.basic.BasicConnector;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.metadata.runtime.MetadataFactory;
-import org.teiid.connector.xa.api.TransactionContext;
-import org.teiid.connector.xa.api.XAConnection;
-import org.teiid.connector.xa.api.XAConnector;
-import com.metamatrix.common.util.PropertiesUtils;
-import com.metamatrix.core.MetaMatrixCoreException;
-import com.metamatrix.core.util.ReflectionHelper;
+import com.metamatrix.core.util.StringUtil;
/**
* JDBC implementation of Connector interface.
*/
- at ConnectionPooling
-public class JDBCConnector extends BasicConnector implements XAConnector, MetadataProvider {
+public class JDBCConnector extends BasicConnector {
- private static final String JNDI = "JNDI:"; //$NON-NLS-1$
-
- static final int NO_ISOLATION_LEVEL_SET = Integer.MIN_VALUE;
-
- enum TransactionIsolationLevel {
- TRANSACTION_READ_UNCOMMITTED(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED),
- TRANSACTION_READ_COMMITTED(java.sql.Connection.TRANSACTION_READ_COMMITTED),
- TRANSACTION_REPEATABLE_READ(java.sql.Connection.TRANSACTION_REPEATABLE_READ),
- TRANSACTION_SERIALIZABLE(java.sql.Connection.TRANSACTION_SERIALIZABLE),
- TRANSACTION_NONE(java.sql.Connection.TRANSACTION_NONE);
-
- private int connectionContant;
-
- private TransactionIsolationLevel(int connectionConstant) {
- this.connectionContant = connectionConstant;
- }
-
- public int getConnectionConstant() {
- return connectionContant;
- }
- }
-
- protected ConnectorEnvironment environment;
- private ConnectorLogger logger;
+ private JDBCManagedConnectionFactory config;
private ConnectorCapabilities capabilities;
- private Translator sqlTranslator;
- private DataSource ds;
- private XADataSource xaDs;
- private int transIsoLevel = NO_ISOLATION_LEVEL_SET;
+
+
+ @Override
+ public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ super.initialize(env);
+
+ this.config = (JDBCManagedConnectionFactory)env;
+
+ ConnectorLogger logger = config.getLogger();
+
+ logger.logInfo(JDBCPlugin.Util.getString("JDBCConnector.JDBCConnector_initialized._1")); //$NON-NLS-1$
+
- @Override
- public void start(ConnectorEnvironment environment)
- throws ConnectorException {
- super.start(environment);
- logger = environment.getLogger();
- this.environment = environment;
+ // Get the JNDI name for the underlying JDBC source
+ String dataSourceName = this.config.getSourceJNDIName();
- logger.logInfo(JDBCPlugin.Util.getString("JDBCConnector.JDBCConnector_initialized._1")); //$NON-NLS-1$
-
- Properties connectionProps = environment.getProperties();
-
- // Get the JDBC properties ...
- String dataSourceClassName = connectionProps.getProperty(JDBCPropertyNames.CONNECTION_SOURCE_CLASS);
-
// Verify required items
- if (dataSourceClassName == null || dataSourceClassName.trim().length() == 0) {
- throw new ConnectorException(JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Missing_JDBC_driver_class_name_1")); //$NON-NLS-1$
+ if (!StringUtil.isValid(dataSourceName)) {
+ throw new ConnectorException(JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Missing_JDBC_jndi_1")); //$NON-NLS-1$
}
- dataSourceClassName = dataSourceClassName.trim();
-
- String levelStr = connectionProps.getProperty(JDBCPropertyNames.TRANSACTION_ISOLATION_LEVEL);
- if(levelStr != null && levelStr.trim().length() != 0){
- transIsoLevel = TransactionIsolationLevel.valueOf(levelStr.toUpperCase()).getConnectionConstant();
- }
+ capabilities = config.getExtensionTranslationClass().getConnectorCapabilities();
- try {
- String className = environment.getProperties().getProperty(JDBCPropertyNames.EXT_TRANSLATOR_CLASS, Translator.class.getName());
- this.sqlTranslator = (Translator)ReflectionHelper.create(className, null, Thread.currentThread().getContextClassLoader());
- } catch (MetaMatrixCoreException e) {
- throw new ConnectorException(e);
- }
- PropertiesUtils.setBeanProperties(sqlTranslator, environment.getProperties(), null);
- sqlTranslator.initialize(environment);
-
- capabilities = sqlTranslator.getConnectorCapabilities();
- PropertiesUtils.setBeanProperties(capabilities, environment.getProperties(), null);
-
- createDataSources(dataSourceClassName, connectionProps);
-
logger.logInfo(JDBCPlugin.Util.getString("JDBCConnector.JDBCConnector_started._4")); //$NON-NLS-1$
}
- @Override
- public void stop() {
- /*
- * attempt to deregister drivers that may have been implicitly registered
- * with the driver manager
- */
- boolean usingCustomClassLoader = PropertiesUtils.getBooleanProperty(this.environment.getProperties(), ConnectorPropertyNames.USING_CUSTOM_CLASSLOADER, false);
-
- if (!usingCustomClassLoader) {
- return;
- }
-
- Enumeration drivers = DriverManager.getDrivers();
-
- while(drivers.hasMoreElements()){
- Driver tempdriver = (Driver)drivers.nextElement();
- if(tempdriver.getClass().getClassLoader() != Thread.currentThread().getContextClassLoader()) {
- continue;
- }
- try {
- DriverManager.deregisterDriver(tempdriver);
- } catch (Throwable e) {
- this.environment.getLogger().logError(e.getMessage());
- }
- }
-
- logger.logInfo(JDBCPlugin.Util.getString("JDBCConnector.JDBCConnector_stopped._3")); //$NON-NLS-1$
- }
@Override
- public Connection getConnection(ExecutionContext context) throws ConnectorException {
+ public Connection getConnection() throws ConnectorException {
DataSource dataSource = getDataSource();
- if (dataSource == null) {
- return getXAConnection(context, null);
- }
- java.sql.Connection conn = null;
- try {
- if (context == null || context.getConnectorIdentity() instanceof SingleIdentity) {
- conn = dataSource.getConnection();
- } else if (context.getConnectorIdentity() instanceof MappedUserIdentity) {
- MappedUserIdentity id = (MappedUserIdentity)context.getConnectorIdentity();
- conn = dataSource.getConnection(id.getMappedUser(), id.getPassword());
- }
- setDefaultTransactionIsolationLevel(conn);
+ try {
+ // TODO: credential mapping facility is now gone. so, no more re-authenticating user.
+ return new JDBCSourceConnection(dataSource.getConnection(), this.config);
} catch (SQLException e) {
throw new ConnectorException(e);
}
- return createJDBCSourceConnection(conn, this.environment, this.sqlTranslator);
}
- public Connection createJDBCSourceConnection(java.sql.Connection conn, ConnectorEnvironment env, Translator trans)
- throws ConnectorException {
- return new JDBCSourceConnection(conn, env, trans);
- }
- @Override
- public XAConnection getXAConnection(
- ExecutionContext context,
- TransactionContext transactionContext) throws ConnectorException {
- XADataSource xaDataSource = getXADataSource();
- if (xaDataSource == null) {
- throw new UnsupportedOperationException(JDBCPlugin.Util.getString("JDBCConnector.non_xa_connection_source")); //$NON-NLS-1$
- }
- javax.sql.XAConnection conn = null;
- try {
- if (context == null || context.getConnectorIdentity() instanceof SingleIdentity) {
- conn = xaDataSource.getXAConnection();
- } else if (context.getConnectorIdentity() instanceof MappedUserIdentity) {
- MappedUserIdentity id = (MappedUserIdentity)context.getConnectorIdentity();
- conn = xaDataSource.getXAConnection(id.getMappedUser(), id.getPassword());
- } else {
- throw new ConnectorException(JDBCPlugin.Util.getString("JDBCConnector.unsupported_identity_type")); //$NON-NLS-1$
- }
- java.sql.Connection c = conn.getConnection();
- setDefaultTransactionIsolationLevel(c);
- return createJDBCSourceXAConnection(conn, c, this.environment, this.sqlTranslator);
- } catch (SQLException e) {
- throw new ConnectorException(e);
- }
- }
-
- public XAConnection createJDBCSourceXAConnection(
- javax.sql.XAConnection conn, java.sql.Connection c, ConnectorEnvironment env, Translator trans)
- throws ConnectorException, SQLException {
- return new JDBCSourceXAConnection(c, conn, env, trans);
- }
-
@Override
public ConnectorCapabilities getCapabilities() {
return capabilities;
}
- protected void createDataSources(String dataSourceClassName, final Properties connectionProps) throws ConnectorException {
- // create data source
- if (dataSourceClassName.startsWith(JNDI)) {
- try {
- InitialContext ic = new InitialContext();
- this.ds = (DataSource) ic.lookup(dataSourceClassName.substring(JNDI.length()));
- } catch (NamingException e) {
- throw new ConnectorException(e,JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Unable_to_find_jndi_ds", dataSourceClassName.substring(JNDI.length()))); //$NON-NLS-1$
- }
- } else {
- Object temp = null;
- try {
- temp = ReflectionHelper.create(dataSourceClassName, null, Thread.currentThread().getContextClassLoader());
- } catch (MetaMatrixCoreException e) {
- throw new ConnectorException(e,JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Unable_to_load_the_JDBC_driver_class_6", dataSourceClassName)); //$NON-NLS-1$
- }
-
- final String url = connectionProps.getProperty(JDBCPropertyNames.URL);
-
- if (temp instanceof Driver) {
- final Driver driver = (Driver)temp;
- // check URL if there is one
- if (url == null || url.trim().length() == 0) {
- throw new ConnectorException(JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Missing_JDBC_database_name_3")); //$NON-NLS-1$
- }
- validateURL(driver, url);
- this.ds = (DataSource)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[] {DataSource.class}, new InvocationHandler() {
- @Override
- public Object invoke(Object proxy, Method method,
- Object[] args) throws Throwable {
- if (method.getName().equals("getConnection")) { //$NON-NLS-1$
- Properties p = new Properties();
- String user = null;
- String password = null;
- if (args != null && args.length == 2) {
- user = (String)args[0];
- password = (String)args[1];
- } else {
- user = connectionProps.getProperty(JDBCPropertyNames.USERNAME);
- password = connectionProps.getProperty(JDBCPropertyNames.PASSWORD);
- }
- if (user != null) {
- p.put("user", user); //$NON-NLS-1$
- }
- if (password != null) {
- p.put("password", password); //$NON-NLS-1$
- }
- return driver.connect(url, p);
- }
- throw new UnsupportedOperationException("Driver DataSource proxy only provides Connections"); //$NON-NLS-1$
- }
- });
- } else {
- if (temp instanceof DataSource) {
- this.ds = (DataSource)temp;
- PropertiesUtils.setBeanProperties(this.ds, connectionProps, null);
- } else if (temp instanceof XADataSource) {
- this.xaDs = (XADataSource)temp;
- PropertiesUtils.setBeanProperties(this.xaDs, connectionProps, null);
- } else {
- throw new ConnectorException(JDBCPlugin.Util.getString("JDBCConnector.invalid_source", dataSourceClassName)); //$NON-NLS-1$
- }
- }
- }
- if (this.ds instanceof XADataSource) {
- this.xaDs = (XADataSource)this.ds;
- }
- }
-
- public DataSource getDataSource() {
- return ds;
- }
-
- public XADataSource getXADataSource() {
- return xaDs;
- }
-
- private void validateURL(Driver driver, String url) throws ConnectorException {
- boolean acceptsURL = false;
- try {
- acceptsURL = driver.acceptsURL(url);
- } catch ( SQLException e ) {
- throw new ConnectorException(e);
- }
- if(!acceptsURL ){
- throw new ConnectorException(JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Driver__7", driver.getClass().getName(), url)); //$NON-NLS-1$
- }
- }
-
- public int getDefaultTransactionIsolationLevel() {
- return this.transIsoLevel;
- }
-
- protected void setDefaultTransactionIsolationLevel(java.sql.Connection sqlConn)
- throws SQLException {
- if(getDefaultTransactionIsolationLevel() != NO_ISOLATION_LEVEL_SET && getDefaultTransactionIsolationLevel() != java.sql.Connection.TRANSACTION_NONE){
- sqlConn.setTransactionIsolation(getDefaultTransactionIsolationLevel());
- }
- }
-
- @Override
- public void getConnectorMetadata(MetadataFactory metadataFactory)
- throws ConnectorException {
- java.sql.Connection conn = null;
- javax.sql.XAConnection xaConn = null;
+ protected DataSource getDataSource() throws ConnectorException {
+ String dsName = this.config.getSourceJNDIName();
try {
- if (ds != null) {
- conn = ds.getConnection();
- } else {
- xaConn = xaDs.getXAConnection();
- conn = xaConn.getConnection();
- }
- JDBCMetdataProcessor metadataProcessor = new JDBCMetdataProcessor(this.logger);
- PropertiesUtils.setBeanProperties(metadataProcessor, metadataFactory.getImportProperties(), "importer"); //$NON-NLS-1$
- PropertiesUtils.setBeanProperties(metadataProcessor, this.environment.getProperties(), "importer"); //$NON-NLS-1$
- metadataProcessor.getConnectorMetadata(conn, metadataFactory);
- } catch (SQLException e) {
- throw new ConnectorException(e);
- } finally {
- try {
- if (conn != null) {
- conn.close();
- }
- if (xaConn != null) {
- xaConn.close();
- }
- } catch (SQLException e) {
-
- }
+ InitialContext ic = new InitialContext();
+ return (DataSource) ic.lookup(dsName);
+ } catch (NamingException e) {
+ throw new ConnectorException(e,JDBCPlugin.Util.getString("JDBCSourceConnectionFactory.Unable_to_find_jndi_ds", dsName)); //$NON-NLS-1$
}
- }
-
+ }
}
Copied: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java (from rev 1900, branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java)
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java (rev 0)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,118 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.connector.jdbc;
+
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.basic.BasicManagedConnectionFactory;
+import org.teiid.connector.jdbc.translator.Translator;
+
+import com.metamatrix.core.MetaMatrixCoreException;
+import com.metamatrix.core.util.ReflectionHelper;
+import com.metamatrix.core.util.StringUtil;
+
+public class JDBCManagedConnectionFactory extends BasicManagedConnectionFactory {
+
+ private static final long serialVersionUID = -6719853084334318668L;
+ // JDBC connector properties
+ private boolean useBindVariables = false;
+ private String databaseTimeZone;
+ private String extensionTranslationClassName;
+ private String sourceJNDIName;
+ private boolean trimStrings=false;
+ private boolean useCommentsInSourceQuery = false;
+ private int fetchSize = -1;
+
+ // derived
+ private Translator sqlTranslator;
+
+ public boolean isUseBindVariables() {
+ return useBindVariables;
+ }
+
+ public String getDatabaseTimeZone() {
+ return databaseTimeZone;
+ }
+
+ public String getExtensionTranslationClassName() {
+ return extensionTranslationClassName;
+ }
+
+ public Translator getExtensionTranslationClass() throws ConnectorException {
+ if (this.sqlTranslator == null) {
+ try {
+ String className = getExtensionTranslationClassName();
+ if (StringUtil.isValid(className)) {
+ className = Translator.class.getName();
+ }
+ this.sqlTranslator = (Translator)ReflectionHelper.create(className, null, Thread.currentThread().getContextClassLoader());
+ sqlTranslator.initialize(this);
+ } catch (MetaMatrixCoreException e) {
+ throw new ConnectorException(e);
+ }
+ }
+ return this.sqlTranslator;
+ }
+
+ public String getSourceJNDIName() {
+ return sourceJNDIName;
+ }
+
+ public boolean isTrimStrings() {
+ return trimStrings;
+ }
+
+ public boolean isUseCommentsInSourceQuery() {
+ return useCommentsInSourceQuery;
+ }
+
+ public void setUseBindVariables(Boolean arg0) {
+ this.useBindVariables = arg0.booleanValue();
+ }
+
+ public void setDatabaseTimeZone(String arg0) {
+ this.databaseTimeZone = arg0;
+ }
+
+ public void setExtensionTranslationClassName(String arg0) {
+ this.extensionTranslationClassName = arg0;
+ }
+
+ public void setSourceJNDIName(String arg0) {
+ this.sourceJNDIName = arg0;
+ }
+
+ public void setTrimStrings(Boolean arg0) {
+ this.trimStrings = arg0.booleanValue();
+ }
+
+ public void setUseCommentsInSourceQuery(Boolean arg0) {
+ this.useCommentsInSourceQuery = arg0.booleanValue();
+ }
+
+ public void setFetchSize(Integer arg0) {
+ this.fetchSize = arg0.intValue();
+ }
+
+ public int getFetchSize() {
+ return this.fetchSize;
+ }
+}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -41,7 +41,7 @@
import org.teiid.connector.metadata.runtime.BaseColumn;
import org.teiid.connector.metadata.runtime.Column;
import org.teiid.connector.metadata.runtime.MetadataFactory;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
+import org.teiid.connector.metadata.runtime.Procedure;
import org.teiid.connector.metadata.runtime.Table;
import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
import org.teiid.connector.metadata.runtime.ProcedureParameter.Type;
@@ -70,17 +70,16 @@
}
}
- private String catalog;
- private String schemaPattern;
- private String tableNamePattern;
+ private boolean importProcedures;
+ private boolean importKeys;
+ private boolean importIndexes;
private String procedureNamePattern;
+ private boolean useFullSchemaName;
private String[] tableTypes;
-
- private boolean useFullSchemaName = true;
- private boolean importKeys = true;
- private boolean importIndexes = true;
+ private String tableNamePattern;
+ private String catalog;
+ private String schemaPattern;
private boolean importApproximateIndexes = true;
- private boolean importProcedures = true;
private boolean widenUnsingedTypes = true;
private boolean quoteNameInSource = true;
//TODO add an option to not fully qualify name in source
@@ -89,6 +88,8 @@
private Set<String> unsignedTypes = new HashSet<String>();
private String quoteString;
+
+
public JDBCMetdataProcessor(ConnectorLogger logger) {
this.logger = logger;
}
@@ -140,7 +141,7 @@
String procedureSchema = procedures.getString(2);
String procedureName = procedures.getString(3);
String fullProcedureName = getFullyQualifiedName(procedureCatalog, procedureSchema, procedureName);
- ProcedureRecordImpl procedure = metadataFactory.addProcedure(useFullSchemaName?fullProcedureName:procedureName);
+ Procedure procedure = metadataFactory.addProcedure(useFullSchemaName?fullProcedureName:procedureName);
procedure.setNameInSource(getFullyQualifiedName(procedureCatalog, procedureSchema, procedureName, true));
ResultSet columns = metadata.getProcedureColumns(catalog, procedureSchema, procedureName, null);
while (columns.next()) {
@@ -204,34 +205,53 @@
String remarks = tables.getString(5);
table.setAnnotation(remarks);
tableMap.put(fullName, new TableInfo(tableCatalog, tableSchema, tableName, table));
-
- ResultSet columns = metadata.getColumns(tableCatalog, tableSchema, tableName, null);
- int rsColumns = columns.getMetaData().getColumnCount();
- while (columns.next()) {
- String columnName = columns.getString(4);
- int type = columns.getInt(5);
- String typeName = columns.getString(6);
- type = checkForUnsigned(type, typeName);
- //note that the resultset is already ordered by position, so we can rely on just adding columns in order
- Column column = metadataFactory.addColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(type), table);
- column.setNameInSource(quoteName(columnName));
- column.setNativeType(columns.getString(6));
- column.setRadix(columns.getInt(10));
- column.setNullType(NullType.values()[columns.getShort(11)]);
- column.setUpdatable(true);
- column.setAnnotation(columns.getString(12));
- column.setCharOctetLength(columns.getInt(16));
- if (rsColumns >= 23) {
- column.setAutoIncrementable("YES".equalsIgnoreCase(columns.getString(23))); //$NON-NLS-1$
- }
- }
- columns.close();
+ tableMap.put(tableName, new TableInfo(tableCatalog, tableSchema, tableName, table));
}
tables.close();
+ getColumns(metadataFactory, metadata, tableMap);
return tableMap;
}
+ private void getColumns(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata, Map<String, TableInfo> tableMap)
+ throws SQLException, ConnectorException {
+ logger.logDetail("JDBCMetadataProcessor - Importing columns"); //$NON-NLS-1$
+ ResultSet columns = metadata.getColumns(catalog, schemaPattern, tableNamePattern, null);
+ int rsColumns = columns.getMetaData().getColumnCount();
+ while (columns.next()) {
+ String tableCatalog = columns.getString(1);
+ String tableSchema = columns.getString(2);
+ String tableName = columns.getString(3);
+ String fullTableName = getFullyQualifiedName(tableCatalog, tableSchema, tableName);
+ TableInfo tableInfo = tableMap.get(fullTableName);
+ if (tableInfo == null) {
+ tableInfo = tableMap.get(tableName);
+ if (tableInfo == null) {
+ continue;
+ }
+ }
+ String columnName = columns.getString(4);
+ int type = columns.getInt(5);
+ String typeName = columns.getString(6);
+ type = checkForUnsigned(type, typeName);
+ //note that the resultset is already ordered by position, so we can rely on just adding columns in order
+ Column column = metadataFactory.addColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(type), tableInfo.table);
+ column.setNameInSource(quoteName(columnName));
+ column.setNativeType(columns.getString(6));
+ column.setRadix(columns.getInt(10));
+ column.setNullType(NullType.values()[columns.getShort(11)]);
+ column.setUpdatable(true);
+ String remarks = columns.getString(12);
+ column.setAnnotation(remarks);
+ column.setCharOctetLength(columns.getInt(16));
+ if (rsColumns >= 23) {
+ column.setAutoIncremented("YES".equalsIgnoreCase(columns.getString(23))); //$NON-NLS-1$
+ }
+ }
+ columns.close();
+ }
+
private String quoteName(String name) {
if (quoteNameInSource) {
return quoteString + StringUtil.replaceAll(name, quoteString, quoteString + quoteString) + quoteString;
@@ -367,13 +387,7 @@
return fullName;
}
- public void setCatalog(String catalog) {
- this.catalog = catalog;
- }
- public void setSchemaPattern(String schemaPattern) {
- this.schemaPattern = schemaPattern;
- }
public void setTableNamePattern(String tableNamePattern) {
this.tableNamePattern = tableNamePattern;
@@ -415,4 +429,13 @@
this.quoteNameInSource = quoteIdentifiers;
}
+ // Importer specific properties
+ public void setCatalog(String catalog) {
+ this.catalog = catalog;
+ }
+
+ public void setSchemaPattern(String schema) {
+ this.schemaPattern = schema;
+ }
+
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,21 +27,15 @@
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.DataNotAvailableException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.ProcedureExecution;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IParameter;
-import org.teiid.connector.language.IProcedure;
-import org.teiid.connector.language.IParameter.Direction;
-import org.teiid.connector.metadata.runtime.RuntimeMetadata;
+import org.teiid.connector.language.Argument;
+import org.teiid.connector.language.Call;
+import org.teiid.connector.language.Command;
/**
*/
@@ -54,19 +48,13 @@
* @param props
* @param id
*/
- public JDBCProcedureExecution(ICommand command,
- Connection connection,
- Translator sqlTranslator,
- ConnectorLogger logger,
- Properties props,
- RuntimeMetadata metadata, ExecutionContext context,
- ConnectorEnvironment env) {
- super(command, connection, sqlTranslator, logger, props, context, env);
+ public JDBCProcedureExecution(Command command, Connection connection, ExecutionContext context, JDBCManagedConnectionFactory env) throws ConnectorException {
+ super(command, connection, context, env);
}
@Override
public void execute() throws ConnectorException {
- IProcedure procedure = (IProcedure)command;
+ Call procedure = (Call)command;
columnDataTypes = procedure.getResultSetColumnTypes();
//translate command
@@ -77,7 +65,7 @@
try{
//create parameter index map
CallableStatement cstmt = getCallableStatement(sql);
- this.results = sqlTranslator.executeStoredProcedure(cstmt, translatedComm);
+ this.results = sqlTranslator.executeStoredProcedure(cstmt, translatedComm, procedure.getReturnType());
addStatementWarnings();
}catch(SQLException e){
throw new ConnectorException(e, JDBCPlugin.Util.getString("JDBCQueryExecution.Error_executing_query__1", sql)); //$NON-NLS-1$
@@ -96,25 +84,21 @@
@Override
public List<?> getOutputParameterValues() throws ConnectorException {
try {
- IProcedure proc = (IProcedure)this.command;
+ Call proc = (Call)this.command;
List<Object> result = new ArrayList<Object>();
int paramIndex = 1;
- for (IParameter parameter : proc.getParameters()) {
- if (parameter.getDirection() == Direction.RETURN) {
- addParameterValue(result, paramIndex++, parameter);
- break;
- }
- }
- for (IParameter parameter : proc.getParameters()) {
+ if (proc.getReturnType() != null) {
+ addParameterValue(result, paramIndex++, proc.getReturnType());
+ }
+ for (Argument parameter : proc.getArguments()) {
switch (parameter.getDirection()) {
case IN:
paramIndex++;
- case RETURN:
- case RESULT_SET:
- continue;
+ break;
case INOUT:
case OUT:
- addParameterValue(result, paramIndex++, parameter);
+ addParameterValue(result, paramIndex++, parameter.getType());
+ break;
}
}
return result;
@@ -124,8 +108,8 @@
}
private void addParameterValue(List<Object> result, int paramIndex,
- IParameter parameter) throws SQLException {
- Object value = sqlTranslator.retrieveValue((CallableStatement)this.statement, paramIndex, parameter.getType());
+ Class<?> type) throws SQLException {
+ Object value = sqlTranslator.retrieveValue((CallableStatement)this.statement, paramIndex, type);
result.add(value);
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -31,18 +31,14 @@
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.DataNotAvailableException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.ResultSetExecution;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IQueryCommand;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.QueryExpression;
/**
@@ -55,29 +51,22 @@
// ===========================================================================================================================
protected ResultSet results;
- protected ConnectorEnvironment env;
- protected ICommand command;
+ protected Command command;
protected Class<?>[] columnDataTypes;
// ===========================================================================================================================
// Constructors
// ===========================================================================================================================
- public JDBCQueryExecution(ICommand command, Connection connection,
- Translator sqlTranslator,
- ConnectorLogger logger,
- Properties props,
- ExecutionContext context,
- ConnectorEnvironment env) {
- super(connection, sqlTranslator, logger, props, context);
+ public JDBCQueryExecution(Command command, Connection connection, ExecutionContext context, JDBCManagedConnectionFactory env) throws ConnectorException {
+ super(connection, context, env);
this.command = command;
- this.env = env;
}
@Override
public void execute() throws ConnectorException {
// get column types
- columnDataTypes = ((IQueryCommand)command).getColumnTypes();
+ columnDataTypes = ((QueryExpression)command).getColumnTypes();
// translate command
TranslatedCommand translatedComm = translateCommand(command);
@@ -125,7 +114,7 @@
/**
* @see org.teiid.connector.jdbc.JDBCBaseExecution#close()
*/
- public void close() throws ConnectorException {
+ public synchronized void close() throws ConnectorException {
// first we would need to close the result set here then we can close
// the statement, using the base class.
if (results != null) {
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -24,61 +24,58 @@
*/
package org.teiid.connector.jdbc;
-import java.sql.Connection;
import java.sql.SQLException;
-import java.sql.Statement;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.MetadataProvider;
import org.teiid.connector.api.ProcedureExecution;
import org.teiid.connector.api.ResultSetExecution;
import org.teiid.connector.api.UpdateExecution;
import org.teiid.connector.basic.BasicConnection;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IProcedure;
-import org.teiid.connector.language.IQueryCommand;
+import org.teiid.connector.language.Call;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.QueryExpression;
+import org.teiid.connector.metadata.runtime.MetadataFactory;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
+import com.metamatrix.common.util.PropertiesUtils;
+
/**
*
*/
-public class JDBCSourceConnection extends BasicConnection {
+public class JDBCSourceConnection extends BasicConnection implements MetadataProvider{
protected java.sql.Connection physicalConnection;
- protected ConnectorEnvironment environment;
- private ConnectorLogger logger;
+ protected JDBCManagedConnectionFactory environment;
private Translator sqlTranslator;
- public JDBCSourceConnection(java.sql.Connection connection, ConnectorEnvironment environment, Translator sqlTranslator) throws ConnectorException {
+ public JDBCSourceConnection(java.sql.Connection connection, JDBCManagedConnectionFactory environment) throws ConnectorException {
this.physicalConnection = connection;
this.environment = environment;
- this.logger = environment.getLogger();
- this.sqlTranslator = sqlTranslator;
+ this.sqlTranslator = environment.getExtensionTranslationClass();
this.sqlTranslator.afterConnectionCreation(connection);
}
@Override
- public ResultSetExecution createResultSetExecution(IQueryCommand command,
- ExecutionContext executionContext, RuntimeMetadata metadata)
+ public ResultSetExecution createResultSetExecution(QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata)
throws ConnectorException {
- return new JDBCQueryExecution(command, this.physicalConnection, sqlTranslator, logger, this.environment.getProperties(), executionContext, this.environment);
+ return new JDBCQueryExecution(command, this.physicalConnection, executionContext, this.environment);
}
@Override
- public ProcedureExecution createProcedureExecution(IProcedure command,
+ public ProcedureExecution createProcedureExecution(Call command,
ExecutionContext executionContext, RuntimeMetadata metadata)
throws ConnectorException {
- return new JDBCProcedureExecution(command, this.physicalConnection, sqlTranslator, logger, this.environment.getProperties(), metadata, executionContext, this.environment);
+ return new JDBCProcedureExecution(command, this.physicalConnection, executionContext, this.environment);
}
@Override
- public UpdateExecution createUpdateExecution(ICommand command,
+ public UpdateExecution createUpdateExecution(Command command,
ExecutionContext executionContext, RuntimeMetadata metadata)
throws ConnectorException {
- return new JDBCUpdateExecution(command, this.physicalConnection, sqlTranslator, logger, this.environment.getProperties(), executionContext);
+ return new JDBCUpdateExecution(command, this.physicalConnection, executionContext, this.environment);
}
@Override
@@ -90,38 +87,18 @@
try {
this.physicalConnection.close();
} catch(SQLException e) {
- logger.logDetail("Exception during close: " + e.getMessage()); //$NON-NLS-1$
+ environment.getLogger().logDetail("Exception during close: " + e.getMessage()); //$NON-NLS-1$
}
}
- @Override
- public boolean isAlive() {
- Connection connection = this.physicalConnection;
- Statement statement = null;
- try {
- int timeout = this.sqlTranslator.getIsValidTimeout();
- if (timeout >= 0) {
- return connection.isValid(timeout);
- }
- if(connection.isClosed()){
- return false;
- }
- String connectionTestQuery = sqlTranslator.getConnectionTestQuery();
- if (connectionTestQuery != null) {
- statement = connection.createStatement();
- statement.executeQuery(connectionTestQuery);
- }
- } catch(SQLException e) {
- return false;
- } finally {
- if ( statement != null ) {
- try {
- statement.close();
- } catch ( SQLException e ) {
- }
- }
- }
- return true;
- }
-
+ @Override
+ public void getConnectorMetadata(MetadataFactory metadataFactory) throws ConnectorException {
+ try {
+ JDBCMetdataProcessor metadataProcessor = new JDBCMetdataProcessor(this.environment.getLogger());
+ PropertiesUtils.setBeanProperties(metadataProcessor, metadataFactory.getImportProperties(), "importer"); //$NON-NLS-1$
+ metadataProcessor.getConnectorMetadata(this.physicalConnection, metadataFactory);
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
}
Deleted: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceXAConnection.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceXAConnection.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceXAConnection.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,104 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-/*
- */
-package org.teiid.connector.jdbc;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-
-import javax.sql.ConnectionEvent;
-import javax.sql.ConnectionEventListener;
-import javax.transaction.xa.XAResource;
-
-import org.teiid.connector.api.ConnectorEnvironment;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.xa.api.XAConnection;
-
-
-public class JDBCSourceXAConnection extends JDBCSourceConnection implements XAConnection {
- private javax.sql.XAConnection xaConn;
- private XAResource resource;
- private boolean errorOccurred;
-
- public JDBCSourceXAConnection(Connection conn, javax.sql.XAConnection xaConn, ConnectorEnvironment environment, Translator sqlTranslator) throws ConnectorException, SQLException {
- super(conn, environment, sqlTranslator);
- this.xaConn = xaConn;
- this.xaConn.addConnectionEventListener(new ConnectionEventListener() {
- @Override
- public void connectionClosed(ConnectionEvent event) {
-
- }
- @Override
- public void connectionErrorOccurred(ConnectionEvent event) {
- errorOccurred = true;
- }
- });
- this.resource = xaConn.getXAResource();
- }
-
- /**
- * @see org.teiid.connector.xa.api.XAConnection#getXAResource()
- */
- public XAResource getXAResource() throws ConnectorException {
- return resource;
- }
-
- @Override
- public void close() {
- super.close();
-
- try {
- this.xaConn.close();
- } catch (SQLException e) {
- this.environment.getLogger().logDetail("Exception while closing: " + e.getMessage()); //$NON-NLS-1$
- }
- }
-
- /**
- * XAConnection Connections should be cycled to ensure proper cleanup after the transaction.
- */
- @Override
- public void closeCalled() {
- closeSourceConnection();
- try {
- this.physicalConnection = this.xaConn.getConnection();
- } catch (SQLException e) {
- this.environment.getLogger().logDetail("Exception while cycling connection: " + e.getMessage()); //$NON-NLS-1$
- }
- }
-
- @Override
- public boolean isAlive() {
- if (errorOccurred) {
- return false;
- }
- return super.isAlive();
- }
-
- public javax.sql.XAConnection getXAConnection() {
- return this.xaConn;
- }
-
-}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCUpdateExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCUpdateExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCUpdateExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,26 +27,22 @@
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.DataNotAvailableException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.UpdateExecution;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.IBatchedUpdates;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.BatchedUpdates;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Literal;
/**
*/
-public class JDBCUpdateExecution extends JDBCBaseExecution implements
- UpdateExecution {
+public class JDBCUpdateExecution extends JDBCBaseExecution implements UpdateExecution {
- private ICommand command;
+ private Command command;
private int[] result;
/**
@@ -56,12 +52,8 @@
* @param props
* @param id
*/
- public JDBCUpdateExecution(ICommand command, Connection connection,
- Translator sqlTranslator,
- ConnectorLogger logger,
- Properties props,
- ExecutionContext context) {
- super(connection, sqlTranslator, logger, props, context);
+ public JDBCUpdateExecution(Command command, Connection connection, ExecutionContext context, JDBCManagedConnectionFactory env) throws ConnectorException {
+ super(connection, context, env);
this.command = command;
}
@@ -71,8 +63,8 @@
@Override
public void execute() throws ConnectorException {
- if (command instanceof IBatchedUpdates) {
- result = execute(((IBatchedUpdates)command));
+ if (command instanceof BatchedUpdates) {
+ result = execute(((BatchedUpdates)command));
} else {
// translate command
TranslatedCommand translatedComm = translateCommand(command);
@@ -82,14 +74,14 @@
}
/**
- * @see com.metamatrix.data.api.BatchedUpdatesExecution#execute(org.teiid.connector.language.ICommand[])
+ * @see com.metamatrix.data.api.BatchedUpdatesExecution#execute(org.teiid.connector.language.Command[])
* @since 4.2
*/
- public int[] execute(IBatchedUpdates batchedCommand) throws ConnectorException {
+ public int[] execute(BatchedUpdates batchedCommand) throws ConnectorException {
boolean succeeded = false;
boolean commitType = getAutoCommit(null);
- ICommand[] commands = batchedCommand.getUpdateCommands().toArray(new ICommand[batchedCommand.getUpdateCommands().size()]);
+ Command[] commands = batchedCommand.getUpdateCommands().toArray(new Command[batchedCommand.getUpdateCommands().size()]);
int[] results = new int[commands.length];
TranslatedCommand tCommand = null;
@@ -180,7 +172,7 @@
PreparedStatement pstatement = getPreparedStatement(sql);
int rowCount = 1;
for (int i = 0; i< translatedComm.getPreparedValues().size(); i++) {
- ILiteral paramValue = (ILiteral)translatedComm.getPreparedValues().get(i);
+ Literal paramValue = (Literal)translatedComm.getPreparedValues().get(i);
if (paramValue.isMultiValued()) {
rowCount = ((List<?>)paramValue.getValue()).size();
break;
@@ -248,6 +240,7 @@
throw new JDBCExecutionException(err, tCommand);
} finally {
try {
+ connection.commit(); // in JbossAs setAutocommit = true does not trigger the commit.
connection.setAutoCommit(true);
} catch (SQLException err) {
throw new JDBCExecutionException(err, tCommand);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/db2/DB2SQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/db2/DB2SQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/db2/DB2SQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,26 +26,26 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.AliasModifier;
import org.teiid.connector.jdbc.translator.ConvertModifier;
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.LocateFunctionModifier;
import org.teiid.connector.jdbc.translator.ModFunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.IJoin;
-import org.teiid.connector.language.ILanguageObject;
-import org.teiid.connector.language.ILimit;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.language.ISelectSymbol;
-import org.teiid.connector.language.ICompareCriteria.Operator;
-import org.teiid.connector.language.IJoin.JoinType;
+import org.teiid.connector.language.DerivedColumn;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.Join;
+import org.teiid.connector.language.LanguageObject;
+import org.teiid.connector.language.Limit;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.Comparison.Operator;
+import org.teiid.connector.language.Join.JoinType;
public class DB2SQLTranslator extends Translator {
@@ -56,10 +56,10 @@
}
@Override
- public List<?> translate(IFunction function) {
- IExpression arg = function.getParameters().get(0);
- if (arg instanceof ILiteral && ((ILiteral)arg).getValue() == null) {
- ((ILiteral)function.getParameters().get(1)).setValue(this.alias);
+ public List<?> translate(Function function) {
+ Expression arg = function.getParameters().get(0);
+ if (arg instanceof Literal && ((Literal)arg).getValue() == null) {
+ ((Literal)function.getParameters().get(1)).setValue(this.alias);
return null;
}
return super.translate(function);
@@ -67,7 +67,7 @@
}
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.CHAR, new AliasModifier("chr")); //$NON-NLS-1$
registerFunctionModifier(SourceSystemFunctions.DAYOFMONTH, new AliasModifier("day")); //$NON-NLS-1$
@@ -87,20 +87,20 @@
convertModifier.addTypeMapping("clob", FunctionModifier.CLOB, FunctionModifier.XML); //$NON-NLS-1$
convertModifier.addConvert(FunctionModifier.TIME, FunctionModifier.TIMESTAMP, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("timestamp('1970-01-01', ", function.getParameters().get(0), ")"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
convertModifier.addConvert(FunctionModifier.DATE, FunctionModifier.TIMESTAMP, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("timestamp(",function.getParameters().get(0), ", '00:00:00')"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
//the next convert is not strictly necessary for db2, but it also works for derby
convertModifier.addConvert(FunctionModifier.STRING, FunctionModifier.FLOAT, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("cast(double(", function.getParameters().get(0), ") as real)"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
@@ -118,26 +118,26 @@
@SuppressWarnings("unchecked")
@Override
- public List<?> translateLimit(ILimit limit, ExecutionContext context) {
+ public List<?> translateLimit(Limit limit, ExecutionContext context) {
return Arrays.asList("FETCH FIRST ", limit.getRowLimit(), " ROWS ONLY"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
- public List<?> translate(ILanguageObject obj, ExecutionContext context) {
+ public List<?> translate(LanguageObject obj, ExecutionContext context) {
//DB2 doesn't support cross join
- if (obj instanceof IJoin) {
- IJoin join = (IJoin)obj;
+ if (obj instanceof Join) {
+ Join join = (Join)obj;
if (join.getJoinType() == JoinType.CROSS_JOIN) {
- ILiteral one = getLanguageFactory().createLiteral(1, TypeFacility.RUNTIME_TYPES.INTEGER);
- join.getCriteria().add(getLanguageFactory().createCompareCriteria(Operator.EQ, one, one));
+ Literal one = getLanguageFactory().createLiteral(1, TypeFacility.RUNTIME_TYPES.INTEGER);
+ join.setCondition(getLanguageFactory().createCompareCriteria(Operator.EQ, one, one));
join.setJoinType(JoinType.INNER_JOIN);
}
}
//DB2 needs projected nulls wrapped in casts
- if (obj instanceof ISelectSymbol) {
- ISelectSymbol selectSymbol = (ISelectSymbol)obj;
- if (selectSymbol.getExpression() instanceof ILiteral) {
- ILiteral literal = (ILiteral)selectSymbol.getExpression();
+ if (obj instanceof DerivedColumn) {
+ DerivedColumn selectSymbol = (DerivedColumn)obj;
+ if (selectSymbol.getExpression() instanceof Literal) {
+ Literal literal = (Literal)selectSymbol.getExpression();
if (literal.getValue() == null) {
selectSymbol.setExpression(ConvertModifier.createConvertFunction(getLanguageFactory(), literal, TypeFacility.getDataTypeName(literal.getType())));
}
@@ -145,13 +145,9 @@
}
return super.translate(obj, context);
}
+
@Override
- public String getDefaultConnectionTestQuery() {
- return "Select 'x' from sysibm.systables where 1 = 2"; //$NON-NLS-1$
- }
-
- @Override
public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
return DB2Capabilities.class;
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/derby/DerbySQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/derby/DerbySQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/derby/DerbySQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -23,9 +23,9 @@
package org.teiid.connector.jdbc.derby;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.db2.DB2SQLTranslator;
import org.teiid.connector.jdbc.oracle.LeftOrRightFunctionModifier;
import org.teiid.connector.jdbc.translator.EscapeSyntaxModifier;
@@ -40,7 +40,7 @@
private String version = DerbyCapabilities.TEN_1;
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
//additional derby functions
registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new EscapeSyntaxModifier());
@@ -57,11 +57,6 @@
}
@Override
- public String getDefaultConnectionTestQuery() {
- return "Select 0 from sys.systables where 1 = 2"; //$NON-NLS-1$
- }
-
- @Override
public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
return DerbyCapabilities.class;
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,9 +27,9 @@
import java.sql.Timestamp;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.hsql.AddDiffModifier;
import org.teiid.connector.jdbc.oracle.ConcatFunctionModifier;
import org.teiid.connector.jdbc.translator.AliasModifier;
@@ -41,7 +41,7 @@
public class H2Translator extends Translator {
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.PARSETIMESTAMP, new AliasModifier("parsedatetime")); //$NON-NLS-1$
registerFunctionModifier(SourceSystemFunctions.FORMATTIMESTAMP, new AliasModifier("formatdatetime")); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -30,11 +30,11 @@
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.ExtractFunctionModifier;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.visitor.util.SQLReservedWords;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.SQLReservedWords;
public class AddDiffModifier extends FunctionModifier {
@@ -50,21 +50,21 @@
}
private boolean add;
- private ILanguageFactory factory;
+ private LanguageFactory factory;
- public AddDiffModifier(boolean add, ILanguageFactory factory) {
+ public AddDiffModifier(boolean add, LanguageFactory factory) {
this.add = add;
this.factory = factory;
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
if (add) {
function.setName("dateadd"); //$NON-NLS-1$
} else {
function.setName("datediff"); //$NON-NLS-1$
}
- ILiteral intervalType = (ILiteral)function.getParameters().get(0);
+ Literal intervalType = (Literal)function.getParameters().get(0);
String interval = ((String)intervalType.getValue()).toUpperCase();
String newInterval = INTERVAL_MAP.get(interval);
if (newInterval != null) {
@@ -74,15 +74,15 @@
if (add) {
if (interval.equals(SQLReservedWords.SQL_TSI_FRAC_SECOND)) {
intervalType.setValue("MILLISECOND"); //$NON-NLS-1$
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(1000000, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ Expression[] args = new Expression[] {function.getParameters().get(1), factory.createLiteral(1000000, TypeFacility.RUNTIME_TYPES.INTEGER)};
function.getParameters().set(1, factory.createFunction("/", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
} else if (interval.equals(SQLReservedWords.SQL_TSI_QUARTER)) {
intervalType.setValue(ExtractFunctionModifier.DAY);
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(91, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ Expression[] args = new Expression[] {function.getParameters().get(1), factory.createLiteral(91, TypeFacility.RUNTIME_TYPES.INTEGER)};
function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
} else {
intervalType.setValue(ExtractFunctionModifier.DAY);
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(7, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ Expression[] args = new Expression[] {function.getParameters().get(1), factory.createLiteral(7, TypeFacility.RUNTIME_TYPES.INTEGER)};
function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
}
return null;
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,9 +27,9 @@
import java.sql.Timestamp;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.ConvertModifier;
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
@@ -37,7 +37,7 @@
public class HsqlTranslator extends Translator {
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new AddDiffModifier(true, getLanguageFactory()));
registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new AddDiffModifier(false, getLanguageFactory()));
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/informix/InformixSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/informix/InformixSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/informix/InformixSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,9 +25,9 @@
package org.teiid.connector.jdbc.informix;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.ConvertModifier;
import org.teiid.connector.jdbc.translator.Translator;
@@ -37,17 +37,12 @@
public class InformixSQLTranslator extends Translator {
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.CONVERT, new ConvertModifier());
}
@Override
- public String getDefaultConnectionTestQuery() {
- return "select 'x' from informix.sysusers where 1=0"; //$NON-NLS-1$
- }
-
- @Override
public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
return InformixCapabilities.class;
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/BitFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/BitFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/BitFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -28,13 +28,13 @@
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.AliasModifier;
import org.teiid.connector.jdbc.translator.ConvertModifier;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
public class BitFunctionModifier extends AliasModifier {
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
- public BitFunctionModifier(String alias, ILanguageFactory langFactory) {
+ public BitFunctionModifier(String alias, LanguageFactory langFactory) {
super(alias);
this.langFactory = langFactory;
}
@@ -43,7 +43,7 @@
* Wrap the renamed function in a convert back to integer
*/
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
modify(function);
return Arrays.asList(ConvertModifier.createConvertFunction(langFactory, function, TypeFacility.RUNTIME_NAMES.INTEGER));
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQL5Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQL5Translator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQL5Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,21 +26,21 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.Function;
public class MySQL5Translator extends MySQLTranslator {
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.CHAR, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("char(", function.getParameters().get(0), " USING ASCII)"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/mysql/MySQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -32,15 +32,15 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.ConvertModifier;
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.LocateFunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.Function;
/**
* @since 4.3
@@ -52,7 +52,7 @@
*/
private final class PadFunctionModifier extends FunctionModifier {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
if (function.getParameters().size() == 2) {
function.getParameters().add(getLanguageFactory().createLiteral(" ", TypeFacility.RUNTIME_TYPES.STRING)); //$NON-NLS-1$
}
@@ -61,7 +61,7 @@
}
@Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.BITAND, new BitFunctionModifier("&", getLanguageFactory())); //$NON-NLS-1$
registerFunctionModifier(SourceSystemFunctions.BITNOT, new BitFunctionModifier("~", getLanguageFactory())); //$NON-NLS-1$
@@ -87,7 +87,7 @@
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.STRING, new ConvertModifier.FormatModifier("date_format", "%Y-%m-%d %H:%i:%S.%f")); //$NON-NLS-1$ //$NON-NLS-2$
convertModifier.addTypeConversion(new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList(function.getParameters().get(0), " + 0.0"); //$NON-NLS-1$
}
}, FunctionModifier.BIGDECIMAL, FunctionModifier.BIGINTEGER, FunctionModifier.FLOAT, FunctionModifier.DOUBLE);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/ConcatFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/ConcatFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/ConcatFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,12 +29,13 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.ICriteria;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.language.ICompoundCriteria.Operator;
+import org.teiid.connector.language.Condition;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.SearchedWhenClause;
+import org.teiid.connector.language.AndOr.Operator;
@@ -45,23 +46,22 @@
* </code>
*/
public class ConcatFunctionModifier extends FunctionModifier {
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
/**
* @param langFactory
*/
- public ConcatFunctionModifier(ILanguageFactory langFactory) {
+ public ConcatFunctionModifier(LanguageFactory langFactory) {
this.langFactory = langFactory;
}
@Override
- public List<?> translate(IFunction function) {
- List when = new ArrayList();
- IExpression a = function.getParameters().get(0);
- IExpression b = function.getParameters().get(1);
- List crits = new ArrayList();
+ public List<?> translate(Function function) {
+ Expression a = function.getParameters().get(0);
+ Expression b = function.getParameters().get(1);
+ List<Condition> crits = new ArrayList<Condition>();
- ILiteral nullValue = langFactory.createLiteral(null, TypeFacility.RUNTIME_TYPES.STRING);
+ Literal nullValue = langFactory.createLiteral(null, TypeFacility.RUNTIME_TYPES.STRING);
if (isNull(a)) {
return Arrays.asList(nullValue);
} else if (!isNotNull(a)) {
@@ -73,27 +73,26 @@
crits.add(langFactory.createIsNullCriteria(b, false));
}
- ICriteria crit = null;
+ Condition crit = null;
if (crits.isEmpty()) {
return null;
} else if (crits.size() == 1) {
- crit = (ICriteria)crits.get(0);
+ crit = crits.get(0);
} else {
- crit = langFactory.createCompoundCriteria(Operator.OR, crits);
- }
- when.add(crit);
- List then = Arrays.asList(new IExpression[] {nullValue});
- return Arrays.asList(langFactory.createSearchedCaseExpression(when, then, function, TypeFacility.RUNTIME_TYPES.STRING));
+ crit = langFactory.createAndOr(Operator.OR, crits.get(0), crits.get(1));
+ }
+ List<SearchedWhenClause> cases = Arrays.asList(langFactory.createSearchedWhenCondition(crit, nullValue));
+ return Arrays.asList(langFactory.createSearchedCaseExpression(cases, function, TypeFacility.RUNTIME_TYPES.STRING));
}
- private boolean isNotNull(IExpression expr) {
- if (expr instanceof ILiteral) {
- ILiteral literal = (ILiteral)expr;
+ private boolean isNotNull(Expression expr) {
+ if (expr instanceof Literal) {
+ Literal literal = (Literal)expr;
return literal.getValue() != null;
}
- if (expr instanceof IFunction) {
- IFunction function = (IFunction)expr;
+ if (expr instanceof Function) {
+ Function function = (Function)expr;
if (function.getName().equalsIgnoreCase("NVL") || function.getName().equalsIgnoreCase(SourceSystemFunctions.IFNULL)) { //$NON-NLS-1$
return isNotNull(function.getParameters().get(1));
}
@@ -101,9 +100,9 @@
return false;
}
- private boolean isNull(IExpression expr) {
- if (expr instanceof ILiteral) {
- ILiteral literal = (ILiteral)expr;
+ private boolean isNull(Expression expr) {
+ if (expr instanceof Literal) {
+ Literal literal = (Literal)expr;
return literal.getValue() == null;
}
return false;
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/DayWeekQuarterFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/DayWeekQuarterFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/DayWeekQuarterFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,7 +26,7 @@
import java.util.List;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.Function;
/**
@@ -45,7 +45,7 @@
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("to_number(TO_CHAR(",function.getParameters().get(0), ", '", format,"'))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/LeftOrRightFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/LeftOrRightFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/LeftOrRightFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,9 +27,9 @@
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
/**
@@ -37,16 +37,16 @@
* or right(string, count) --> substr(string, -1 * count) - we lack a way to express a unary negation
*/
public class LeftOrRightFunctionModifier extends FunctionModifier {
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
- public LeftOrRightFunctionModifier(ILanguageFactory langFactory) {
+ public LeftOrRightFunctionModifier(LanguageFactory langFactory) {
this.langFactory = langFactory;
}
@Override
- public List<?> translate(IFunction function) {
- List<IExpression> args = function.getParameters();
- IFunction func = null;
+ public List<?> translate(Function function) {
+ List<Expression> args = function.getParameters();
+ Function func = null;
if (function.getName().equalsIgnoreCase("left")) { //$NON-NLS-1$
func = langFactory.createFunction("SUBSTR", //$NON-NLS-1$
@@ -56,7 +56,7 @@
args.get(1)),
String.class);
} else if (function.getName().equalsIgnoreCase("right")) { //$NON-NLS-1$
- IFunction negIndex = langFactory.createFunction("*", //$NON-NLS-1$
+ Function negIndex = langFactory.createFunction("*", //$NON-NLS-1$
Arrays.asList(langFactory.createLiteral(Integer.valueOf(-1), TypeFacility.RUNTIME_TYPES.INTEGER), args.get(1)),
Integer.class);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/Log10FunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/Log10FunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/Log10FunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,24 +26,24 @@
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
public class Log10FunctionModifier extends FunctionModifier {
- private ILanguageFactory languageFactory;
+ private LanguageFactory languageFactory;
- public Log10FunctionModifier(ILanguageFactory languageFactory) {
+ public Log10FunctionModifier(LanguageFactory languageFactory) {
this.languageFactory = languageFactory;
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
function.setName("log"); //$NON-NLS-1$
- List<IExpression> args = function.getParameters();
+ List<Expression> args = function.getParameters();
args.add(args.get(0));
args.set(0, languageFactory.createLiteral(new Integer(10), TypeFacility.RUNTIME_TYPES.INTEGER));
return null;
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/MonthOrDayNameFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/MonthOrDayNameFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/MonthOrDayNameFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -28,9 +28,9 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
/**
@@ -38,26 +38,26 @@
* Format: to_char(timestampvalue/dayvalue, 'Month'/'Day')
*/
public class MonthOrDayNameFunctionModifier extends FunctionModifier {
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
private String format;
- public MonthOrDayNameFunctionModifier(ILanguageFactory langFactory, String format) {
+ public MonthOrDayNameFunctionModifier(LanguageFactory langFactory, String format) {
this.langFactory = langFactory;
this.format = format;
}
@Override
- public List<?> translate(IFunction function) {
- List<IExpression> args = function.getParameters();
+ public List<?> translate(Function function) {
+ List<Expression> args = function.getParameters();
- IFunction func = langFactory.createFunction("TO_CHAR", //$NON-NLS-1$
+ Function func = langFactory.createFunction("TO_CHAR", //$NON-NLS-1$
Arrays.asList(
args.get(0),
langFactory.createLiteral(format, TypeFacility.RUNTIME_TYPES.STRING)),
TypeFacility.RUNTIME_TYPES.STRING);
// For some reason, these values have trailing spaces
- IFunction trimFunc = langFactory.createFunction(SourceSystemFunctions.RTRIM,
+ Function trimFunc = langFactory.createFunction(SourceSystemFunctions.RTRIM,
Arrays.asList( func ), TypeFacility.RUNTIME_TYPES.STRING);
return Arrays.asList(trimFunc);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -36,10 +36,10 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.JDBCPlugin;
import org.teiid.connector.jdbc.translator.AliasModifier;
import org.teiid.connector.jdbc.translator.ConvertModifier;
@@ -47,20 +47,20 @@
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.LocateFunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IElement;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.IGroup;
-import org.teiid.connector.language.IInsert;
-import org.teiid.connector.language.IInsertExpressionValueSource;
-import org.teiid.connector.language.ILimit;
-import org.teiid.connector.language.IQuery;
-import org.teiid.connector.language.IQueryCommand;
-import org.teiid.connector.language.ISelectSymbol;
-import org.teiid.connector.language.ISetQuery.Operation;
-import org.teiid.connector.metadata.runtime.Element;
+import org.teiid.connector.language.ColumnReference;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.DerivedColumn;
+import org.teiid.connector.language.ExpressionValueSource;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.Insert;
+import org.teiid.connector.language.Limit;
+import org.teiid.connector.language.NamedTable;
+import org.teiid.connector.language.QueryExpression;
+import org.teiid.connector.language.Select;
+import org.teiid.connector.language.SQLReservedWords.Tokens;
+import org.teiid.connector.language.SetQuery.Operation;
+import org.teiid.connector.metadata.runtime.Column;
import org.teiid.connector.visitor.util.CollectorVisitor;
-import org.teiid.connector.visitor.util.SQLReservedWords;
public class OracleSQLTranslator extends Translator {
@@ -78,7 +78,7 @@
public final static String ROWNUM = "ROWNUM"; //$NON-NLS-1$
public final static String SEQUENCE = ":SEQUENCE="; //$NON-NLS-1$
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.CHAR, new AliasModifier("chr")); //$NON-NLS-1$
registerFunctionModifier(SourceSystemFunctions.LCASE, new AliasModifier("lower")); //$NON-NLS-1$
@@ -118,13 +118,13 @@
convertModifier.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.TIME, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("case when ", function.getParameters().get(0), " is null then null else to_date('1970-01-01 ' || to_char(",function.getParameters().get(0),", 'HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') end"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
});
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.DATE, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("trunc(cast(",function.getParameters().get(0)," AS date))"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
@@ -140,7 +140,7 @@
FunctionModifier.FLOAT, FunctionModifier.DOUBLE, FunctionModifier.BIGDECIMAL);
convertModifier.addTypeConversion(new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
if (Number.class.isAssignableFrom(function.getParameters().get(0).getType())) {
return Arrays.asList("trunc(", function.getParameters().get(0), ")"); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -153,24 +153,24 @@
registerFunctionModifier(SourceSystemFunctions.CONVERT, convertModifier);
}
- public void handleInsertSequences(IInsert insert) throws ConnectorException {
+ public void handleInsertSequences(Insert insert) throws ConnectorException {
/*
* If a missing auto_increment column is modeled with name in source indicating that an Oracle Sequence
* then pull the Sequence name out of the name in source of the column.
*/
- if (!(insert.getValueSource() instanceof IInsertExpressionValueSource)) {
+ if (!(insert.getValueSource() instanceof ExpressionValueSource)) {
return;
}
- IInsertExpressionValueSource values = (IInsertExpressionValueSource)insert.getValueSource();
- List<Element> allElements = insert.getGroup().getMetadataObject().getChildren();
+ ExpressionValueSource values = (ExpressionValueSource)insert.getValueSource();
+ List<Column> allElements = insert.getTable().getMetadataObject().getColumns();
if (allElements.size() == values.getValues().size()) {
return;
}
int index = 0;
- List<IElement> elements = insert.getElements();
+ List<ColumnReference> elements = insert.getColumns();
- for (Element element : allElements) {
+ for (Column element : allElements) {
if (!element.isAutoIncremented()) {
continue;
}
@@ -193,38 +193,38 @@
String sequence = name.substring(seqIndex + SEQUENCE.length());
- int delimiterIndex = sequence.indexOf(SQLReservedWords.DOT);
+ int delimiterIndex = sequence.indexOf(Tokens.DOT);
if (delimiterIndex == -1) {
throw new ConnectorException("Invalid name in source sequence format. Expected <element name>" + SEQUENCE + "<sequence name>.<sequence value>, but was " + name); //$NON-NLS-1$ //$NON-NLS-2$
}
String sequenceGroupName = sequence.substring(0, delimiterIndex);
String sequenceElementName = sequence.substring(delimiterIndex + 1);
- IGroup sequenceGroup = this.getLanguageFactory().createGroup(sequenceGroupName, null, null);
- IElement sequenceElement = this.getLanguageFactory().createElement(sequenceElementName, sequenceGroup, null, element.getJavaType());
- insert.getElements().add(index, this.getLanguageFactory().createElement(element.getName(), insert.getGroup(), element, element.getJavaType()));
+ NamedTable sequenceGroup = this.getLanguageFactory().createNamedTable(sequenceGroupName, null, null);
+ ColumnReference sequenceElement = this.getLanguageFactory().createColumnReference(sequenceElementName, sequenceGroup, null, element.getJavaType());
+ insert.getColumns().add(index, this.getLanguageFactory().createColumnReference(element.getName(), insert.getTable(), element, element.getJavaType()));
values.getValues().add(index, sequenceElement);
}
}
@Override
- public List<?> translateCommand(ICommand command, ExecutionContext context) {
- if (command instanceof IInsert) {
+ public List<?> translateCommand(Command command, ExecutionContext context) {
+ if (command instanceof Insert) {
try {
- handleInsertSequences((IInsert)command);
+ handleInsertSequences((Insert)command);
} catch (ConnectorException e) {
throw new RuntimeException(e);
}
}
- if (!(command instanceof IQueryCommand)) {
+ if (!(command instanceof QueryExpression)) {
return null;
}
- IQueryCommand queryCommand = (IQueryCommand)command;
+ QueryExpression queryCommand = (QueryExpression)command;
if (queryCommand.getLimit() == null) {
return null;
}
- ILimit limit = queryCommand.getLimit();
+ Limit limit = queryCommand.getLimit();
queryCommand.setLimit(null);
List<Object> parts = new ArrayList<Object>();
parts.add("SELECT "); //$NON-NLS-1$
@@ -234,8 +234,8 @@
* we just use the projected names
*/
boolean allAliased = true;
- for (ISelectSymbol selectSymbol : queryCommand.getProjectedQuery().getSelect().getSelectSymbols()) {
- if (!selectSymbol.hasAlias()) {
+ for (DerivedColumn selectSymbol : queryCommand.getProjectedQuery().getDerivedColumns()) {
+ if (selectSymbol.getAlias() == null) {
allAliased = false;
break;
}
@@ -283,7 +283,7 @@
}
@Override
- public String getSourceComment(ExecutionContext context, ICommand command) {
+ public String getSourceComment(ExecutionContext context, Command command) {
String comment = super.getSourceComment(context, command);
if (context != null) {
@@ -297,7 +297,7 @@
}
}
- if (command instanceof IQuery) {
+ if (command instanceof Select) {
//
// This simple algorithm determines the hint which will be added to the
// query.
@@ -305,8 +305,8 @@
// (returned as a collection)
// Then we check if any of those functions are sdo_relate
// If so, the ORDERED hint is added, if not, it isn't
- Collection<IFunction> col = CollectorVisitor.collectObjects(IFunction.class, command);
- for (IFunction func : col) {
+ Collection<Function> col = CollectorVisitor.collectObjects(Function.class, command);
+ for (Function func : col) {
if (func.getName().equalsIgnoreCase(RELATE)) {
return comment + "/*+ ORDERED */ "; //$NON-NLS-1$
}
@@ -329,13 +329,13 @@
if (useIndex >= 0) {
String name = element.substring(0, useIndex);
if (group != null) {
- return group + SQLReservedWords.DOT + name;
+ return group + Tokens.DOT + name;
}
return name;
}
// Check if the group name should be discarded
- if((group != null && group.equalsIgnoreCase(DUAL)) || element.equalsIgnoreCase(ROWNUM)) {
+ if((group != null && DUAL.equalsIgnoreCase(group)) || element.equalsIgnoreCase(ROWNUM)) {
// Strip group if group or element are pseudo-columns
return element;
}
@@ -347,13 +347,8 @@
public boolean hasTimeType() {
return false;
}
-
+
@Override
- public String getDefaultConnectionTestQuery() {
- return "Select 'x' from DUAL"; //$NON-NLS-1$
- }
-
- @Override
public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException {
if(param == null && Object.class.equals(paramType)){
//Oracle drive does not support JAVA_OBJECT type
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSpatialFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSpatialFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/oracle/OracleSpatialFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,9 +26,9 @@
import java.util.List;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.Literal;
public class OracleSpatialFunctionModifier extends FunctionModifier {
@@ -37,8 +37,8 @@
* If either of the first two parameters are a Literal String, then we need to put the literal itself in the SQL
* to be passed to Oracle, without the tick marks
*/
- public List<?> translate(IFunction function) {
- List<IExpression> params = function.getParameters();
+ public List<?> translate(Function function) {
+ List<Expression> params = function.getParameters();
List<Object> objs = new ArrayList<Object>();
objs.add(function.getName());
objs.add("("); //$NON-NLS-1$
@@ -55,10 +55,10 @@
}
protected void addParamWithConversion(List<Object> objs,
- IExpression expression) {
- if ((expression instanceof ILiteral)
- && (((ILiteral) expression).getValue() instanceof String)) {
- objs.add(((ILiteral) expression).getValue());
+ Expression expression) {
+ if ((expression instanceof Literal)
+ && (((Literal) expression).getValue() instanceof String)) {
+ objs.add(((Literal) expression).getValue());
} else {
objs.add(expression);
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/LocateFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/LocateFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/LocateFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,32 +26,32 @@
import java.util.List;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
public class LocateFunctionModifier extends org.teiid.connector.jdbc.translator.LocateFunctionModifier {
- public LocateFunctionModifier(ILanguageFactory factory) {
+ public LocateFunctionModifier(LanguageFactory factory) {
super(factory);
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
modify(function);
List<Object> parts = new ArrayList<Object>();
- List<IExpression> params = function.getParameters();
+ List<Expression> params = function.getParameters();
parts.add("position("); //$NON-NLS-1$
parts.add(params.get(0));
parts.add(" in "); //$NON-NLS-1$
boolean useSubStr = false;
if (params.size() == 3) {
useSubStr = true;
- if (params.get(2) instanceof ILiteral && ((ILiteral)params.get(2)).getValue() instanceof Integer) {
- Integer value = (Integer)((ILiteral)params.get(2)).getValue();
+ if (params.get(2) instanceof Literal && ((Literal)params.get(2)).getValue() instanceof Integer) {
+ Integer value = (Integer)((Literal)params.get(2)).getValue();
if (value > 1) {
- ((ILiteral)params.get(2)).setValue(value - 1);
+ ((Literal)params.get(2)).setValue(value - 1);
} else {
useSubStr = false;
}
@@ -62,7 +62,7 @@
parts.add(this.getLanguageFactory().createFunction("substr", params.subList(1, 3), TypeFacility.RUNTIME_TYPES.STRING)); //$NON-NLS-1$
parts.add(")"); //$NON-NLS-1$
parts.add(" + "); //$NON-NLS-1$
- if (params.get(2) instanceof ILiteral && ((ILiteral)params.get(2)).getValue() instanceof Integer) {
+ if (params.get(2) instanceof Literal && ((Literal)params.get(2)).getValue() instanceof Integer) {
parts.add(params.get(2));
} else {
parts.add(params.get(2));
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/PostgreSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/PostgreSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/postgresql/PostgreSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,11 +29,11 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.oracle.LeftOrRightFunctionModifier;
import org.teiid.connector.jdbc.oracle.MonthOrDayNameFunctionModifier;
import org.teiid.connector.jdbc.translator.AliasModifier;
@@ -43,13 +43,13 @@
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.ModFunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.IAggregate;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageObject;
-import org.teiid.connector.language.ILimit;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.visitor.util.SQLReservedWords;
+import org.teiid.connector.language.AggregateFunction;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageObject;
+import org.teiid.connector.language.Limit;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.SQLReservedWords;
@@ -61,7 +61,7 @@
private String version = PostgreSQLCapabilities.EIGHT_0;
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
//TODO: all of the functions (except for convert) can be handled through just the escape syntax
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.LOG, new AliasModifier("ln")); //$NON-NLS-1$
@@ -118,13 +118,13 @@
convertModifier.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
convertModifier.addConvert(FunctionModifier.TIME, FunctionModifier.TIMESTAMP, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList(function.getParameters().get(0), " + TIMESTAMP '1970-01-01'"); //$NON-NLS-1$
}
});
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.TIME, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return Arrays.asList("cast(date_trunc('second', ", function.getParameters().get(0), ") AS time)"); //$NON-NLS-1$ //$NON-NLS-2$
}
});
@@ -133,15 +133,15 @@
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.STRING, new ConvertModifier.FormatModifier("to_char", "YYYY-MM-DD HH24:MI:SS.UF")); //$NON-NLS-1$ //$NON-NLS-2$
convertModifier.addConvert(FunctionModifier.BOOLEAN, FunctionModifier.STRING, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
- IExpression stringValue = function.getParameters().get(0);
+ public List<?> translate(Function function) {
+ Expression stringValue = function.getParameters().get(0);
return Arrays.asList("CASE WHEN ", stringValue, " THEN 'true' WHEN not(", stringValue, ") THEN 'false' END"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
});
convertModifier.addSourceConversion(new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
- ((ILiteral)function.getParameters().get(1)).setValue("integer"); //$NON-NLS-1$
+ public List<?> translate(Function function) {
+ ((Literal)function.getParameters().get(1)).setValue("integer"); //$NON-NLS-1$
return null;
}
}, FunctionModifier.BOOLEAN);
@@ -178,7 +178,7 @@
@SuppressWarnings("unchecked")
@Override
- public List<?> translateLimit(ILimit limit, ExecutionContext context) {
+ public List<?> translateLimit(Limit limit, ExecutionContext context) {
if (limit.getRowOffset() > 0) {
return Arrays.asList("LIMIT ", limit.getRowLimit(), " OFFSET ", limit.getRowOffset()); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -188,13 +188,13 @@
/**
* Postgres doesn't provide min/max(boolean), so this conversion writes a min(BooleanValue) as
* bool_and(BooleanValue)
- * @see org.teiid.connector.visitor.framework.LanguageObjectVisitor#visit(org.teiid.connector.language.IAggregate)
+ * @see org.teiid.connector.visitor.framework.LanguageObjectVisitor#visit(org.teiid.connector.language.AggregateFunction)
* @since 4.3
*/
@Override
- public List<?> translate(ILanguageObject obj, ExecutionContext context) {
- if (obj instanceof IAggregate) {
- IAggregate agg = (IAggregate)obj;
+ public List<?> translate(LanguageObject obj, ExecutionContext context) {
+ if (obj instanceof AggregateFunction) {
+ AggregateFunction agg = (AggregateFunction)obj;
if (TypeFacility.RUNTIME_TYPES.BOOLEAN.equals(agg.getExpression().getType())) {
if (agg.getName().equalsIgnoreCase(SQLReservedWords.MIN)) {
agg.setName("bool_and"); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -28,16 +28,13 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.sybase.SybaseSQLTranslator;
-import org.teiid.connector.language.IElement;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageObject;
+import org.teiid.connector.language.ColumnReference;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageObject;
-import com.metamatrix.core.MetaMatrixRuntimeException;
-
/**
* Updated to assume the use of the DataDirect, 2005 driver, or later.
*/
@@ -46,12 +43,12 @@
//TEIID-31 remove mod modifier for SQL Server 2008
@Override
- protected List<Object> convertDateToString(IFunction function) {
+ protected List<Object> convertDateToString(Function function) {
return Arrays.asList("replace(convert(varchar, ", function.getParameters().get(0), ", 102), '.', '-')"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
- protected List<?> convertTimestampToString(IFunction function) {
+ protected List<?> convertTimestampToString(Function function) {
return Arrays.asList("convert(varchar, ", function.getParameters().get(0), ", 21)"); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -61,15 +58,11 @@
}
@Override
- public List<?> translate(ILanguageObject obj, ExecutionContext context) {
- if (obj instanceof IElement) {
- IElement elem = (IElement)obj;
- try {
- if (TypeFacility.RUNTIME_TYPES.STRING.equals(elem.getType()) && elem.getMetadataObject() != null && "uniqueidentifier".equalsIgnoreCase(elem.getMetadataObject().getNativeType())) { //$NON-NLS-1$
- return Arrays.asList("cast(", elem, " as char(36))"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- } catch (ConnectorException e) {
- throw new MetaMatrixRuntimeException(e);
+ public List<?> translate(LanguageObject obj, ExecutionContext context) {
+ if (obj instanceof ColumnReference) {
+ ColumnReference elem = (ColumnReference)obj;
+ if (TypeFacility.RUNTIME_TYPES.STRING.equals(elem.getType()) && elem.getMetadataObject() != null && "uniqueidentifier".equalsIgnoreCase(elem.getMetadataObject().getNativeType())) { //$NON-NLS-1$
+ return Arrays.asList("cast(", elem, " as char(36))"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
return super.translate(obj, context);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SubstringFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SubstringFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SubstringFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -28,9 +28,9 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
/**
@@ -38,15 +38,15 @@
*/
public class SubstringFunctionModifier extends FunctionModifier {
- private ILanguageFactory languageFactory;
+ private LanguageFactory languageFactory;
- public SubstringFunctionModifier(ILanguageFactory languageFactory) {
+ public SubstringFunctionModifier(LanguageFactory languageFactory) {
this.languageFactory = languageFactory;
}
@Override
- public List<?> translate(IFunction function) {
- List<IExpression> args = function.getParameters();
+ public List<?> translate(Function function) {
+ List<Expression> args = function.getParameters();
if(args.size() == 2) {
args.add(languageFactory.createFunction(SourceSystemFunctions.LENGTH, Arrays.asList(args.get(0)), TypeFacility.RUNTIME_TYPES.INTEGER));
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SybaseSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SybaseSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sybase/SybaseSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,21 +29,21 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.AliasModifier;
import org.teiid.connector.jdbc.translator.ConvertModifier;
import org.teiid.connector.jdbc.translator.EscapeSyntaxModifier;
import org.teiid.connector.jdbc.translator.FunctionModifier;
import org.teiid.connector.jdbc.translator.ModFunctionModifier;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILimit;
-import org.teiid.connector.language.IOrderBy;
-import org.teiid.connector.language.ISetQuery;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.Limit;
+import org.teiid.connector.language.OrderBy;
+import org.teiid.connector.language.SetQuery;
/**
@@ -53,7 +53,7 @@
/*
* @see com.metamatrix.connector.jdbc.extension.SQLTranslator#initialize(com.metamatrix.data.api.ConnectorEnvironment, com.metamatrix.data.metadata.runtime.RuntimeMetadata)
*/
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.MOD, new ModFunctionModifier("%", getLanguageFactory())); //$NON-NLS-1$
registerFunctionModifier(SourceSystemFunctions.CONCAT, new AliasModifier("+")); //$NON-NLS-1$
@@ -93,7 +93,7 @@
convertModifier.addTypeMapping("datetime", FunctionModifier.DATE, FunctionModifier.TIME, FunctionModifier.TIMESTAMP); //$NON-NLS-1$
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.TIME, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
List<Object> result = new ArrayList<Object>();
result.add("cast("); //$NON-NLS-1$
result.add("'1970-01-01 ' + "); //$NON-NLS-1$
@@ -104,7 +104,7 @@
});
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.DATE, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
List<Object> result = new ArrayList<Object>();
result.add("cast("); //$NON-NLS-1$
result.addAll(convertDateToString(function));
@@ -114,19 +114,19 @@
});
convertModifier.addConvert(FunctionModifier.TIME, FunctionModifier.STRING, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return convertTimeToString(function);
}
});
convertModifier.addConvert(FunctionModifier.DATE, FunctionModifier.STRING, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return convertDateToString(function);
}
});
convertModifier.addConvert(FunctionModifier.TIMESTAMP, FunctionModifier.STRING, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
return convertTimestampToString(function);
}
});
@@ -134,11 +134,11 @@
registerFunctionModifier(SourceSystemFunctions.CONVERT, convertModifier);
}
- private List<Object> convertTimeToString(IFunction function) {
+ private List<Object> convertTimeToString(Function function) {
return Arrays.asList("convert(varchar, ", function.getParameters().get(0), ", 8)"); //$NON-NLS-1$ //$NON-NLS-2$
}
- protected List<Object> convertDateToString(IFunction function) {
+ protected List<Object> convertDateToString(Function function) {
return Arrays.asList("stuff(stuff(convert(varchar, ", function.getParameters().get(0), ", 102), 5, 1, '-'), 8, 1, '-')"); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -147,7 +147,7 @@
* @param function
* @return
*/
- protected List<?> convertTimestampToString(IFunction function) {
+ protected List<?> convertTimestampToString(Function function) {
return Arrays.asList("stuff(convert(varchar, ", function.getParameters().get(0), ", 123), 11, 1, ' ')"); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -170,16 +170,16 @@
* SetQueries don't have a concept of TOP, an inline view is needed.
*/
@Override
- public List<?> translateCommand(ICommand command, ExecutionContext context) {
- if (!(command instanceof ISetQuery)) {
+ public List<?> translateCommand(Command command, ExecutionContext context) {
+ if (!(command instanceof SetQuery)) {
return null;
}
- ISetQuery queryCommand = (ISetQuery)command;
+ SetQuery queryCommand = (SetQuery)command;
if (queryCommand.getLimit() == null) {
return null;
}
- ILimit limit = queryCommand.getLimit();
- IOrderBy orderBy = queryCommand.getOrderBy();
+ Limit limit = queryCommand.getLimit();
+ OrderBy orderBy = queryCommand.getOrderBy();
queryCommand.setLimit(null);
queryCommand.setOrderBy(null);
List<Object> parts = new ArrayList<Object>(6);
@@ -197,7 +197,7 @@
@SuppressWarnings("unchecked")
@Override
- public List<?> translateLimit(ILimit limit, ExecutionContext context) {
+ public List<?> translateLimit(Limit limit, ExecutionContext context) {
return Arrays.asList("TOP ", limit.getRowLimit()); //$NON-NLS-1$
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/AliasModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/AliasModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/AliasModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -39,12 +39,12 @@
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
modify(function);
return null;
}
- protected void modify(IFunction function) {
+ protected void modify(Function function) {
function.setName(alias);
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ConvertModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ConvertModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ConvertModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,10 +29,10 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
/**
* Base class for handling the convert function.
@@ -68,12 +68,12 @@
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
modify(function);
if (format == null) {
function.getParameters().remove(1);
} else {
- ((ILiteral)function.getParameters().get(1)).setValue(format);
+ ((Literal)function.getParameters().get(1)).setValue(format);
}
return null;
}
@@ -114,10 +114,10 @@
}
@Override
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
function.setName("cast"); //$NON-NLS-1$
int targetCode = getCode(function.getType());
- List<IExpression> args = function.getParameters();
+ List<Expression> args = function.getParameters();
Class<?> srcType = args.get(0).getType();
int sourceCode = getCode(srcType);
@@ -154,7 +154,7 @@
if (type != null
&& (!type.equals(typeMapping.get(sourceCode)) || sourceCode == targetCode)) { //checks for implicit, but allows for dummy converts
- ((ILiteral)function.getParameters().get(1)).setValue(type);
+ ((Literal)function.getParameters().get(1)).setValue(type);
return null;
}
}
@@ -162,10 +162,10 @@
return Arrays.asList(function.getParameters().get(0));
}
- public static IFunction createConvertFunction(ILanguageFactory langFactory, IExpression expr, String typeName) {
+ public static Function createConvertFunction(LanguageFactory langFactory, Expression expr, String typeName) {
Class<?> type = TypeFacility.getDataTypeClass(typeName);
return langFactory.createFunction(SourceSystemFunctions.CONVERT,
- new IExpression[] {expr, langFactory.createLiteral(typeName, type)}, type);
+ new Expression[] {expr, langFactory.createLiteral(typeName, type)}, type);
}
public void addNumericBooleanConversions() {
@@ -173,17 +173,17 @@
//number -> boolean
this.addTypeConversion(new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
- IExpression stringValue = function.getParameters().get(0);
+ public List<?> translate(Function function) {
+ Expression stringValue = function.getParameters().get(0);
return Arrays.asList("CASE WHEN ", stringValue, " = 0 THEN 0 WHEN ", stringValue, " IS NOT NULL THEN 1 END"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}, FunctionModifier.BOOLEAN);
this.addConvert(FunctionModifier.BOOLEAN, FunctionModifier.STRING, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
- IExpression booleanValue = function.getParameters().get(0);
- if (booleanValue instanceof IFunction) {
- IFunction nested = (IFunction)booleanValue;
+ public List<?> translate(Function function) {
+ Expression booleanValue = function.getParameters().get(0);
+ if (booleanValue instanceof Function) {
+ Function nested = (Function)booleanValue;
if (nested.getName().equalsIgnoreCase("convert") && Number.class.isAssignableFrom(nested.getParameters().get(0).getType())) { //$NON-NLS-1$
booleanValue = nested.getParameters().get(0);
}
@@ -193,8 +193,8 @@
});
this.addConvert(FunctionModifier.STRING, FunctionModifier.BOOLEAN, new FunctionModifier() {
@Override
- public List<?> translate(IFunction function) {
- IExpression stringValue = function.getParameters().get(0);
+ public List<?> translate(Function function) {
+ Expression stringValue = function.getParameters().get(0);
return Arrays.asList("CASE WHEN ", stringValue, " IN ('false', '0') THEN 0 WHEN ", stringValue, " IS NOT NULL THEN 1 END"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
});
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/EscapeSyntaxModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/EscapeSyntaxModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/EscapeSyntaxModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,7 +25,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.Function;
/**
@@ -36,10 +36,10 @@
public class EscapeSyntaxModifier extends FunctionModifier {
/**
- * @see org.teiid.connector.jdbc.translator.BasicFunctionModifier#translate(org.teiid.connector.language.IFunction)
+ * @see org.teiid.connector.jdbc.translator.BasicFunctionModifier#translate(org.teiid.connector.language.Function)
* @since 5.0
*/
- public List<?> translate(IFunction function) {
+ public List<?> translate(Function function) {
List<Object> objs = new ArrayList<Object>();
objs.add("{fn "); //$NON-NLS-1$
objs.add(function);
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ExtractFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ExtractFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ExtractFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -28,9 +28,10 @@
import java.util.Map;
import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.visitor.util.SQLReservedWords;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.SQLReservedWords;
+import org.teiid.connector.language.SQLReservedWords.Tokens;
/**
@@ -68,18 +69,18 @@
public ExtractFunctionModifier() {
}
- public List<?> translate(IFunction function) {
- List<IExpression> args = function.getParameters();
+ public List<?> translate(Function function) {
+ List<Expression> args = function.getParameters();
List<Object> objs = new ArrayList<Object>();
objs.add("EXTRACT("); //$NON-NLS-1$
objs.add(FUNCTION_PART_MAP.get(function.getName().toLowerCase()));
- objs.add(SQLReservedWords.SPACE);
+ objs.add(Tokens.SPACE);
objs.add(SQLReservedWords.FROM);
- objs.add(SQLReservedWords.SPACE);
+ objs.add(Tokens.SPACE);
objs.add(args.get(0));
- objs.add(SQLReservedWords.RPAREN);
+ objs.add(Tokens.RPAREN);
if (function.getName().toLowerCase().equals(SourceSystemFunctions.DAYOFWEEK)) {
- objs.add(0, SQLReservedWords.LPAREN);
+ objs.add(0, Tokens.LPAREN);
objs.add(" + 1)"); //$NON-NLS-1$
}
return objs;
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/FunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/FunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/FunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,8 +29,8 @@
import java.util.Map;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageObject;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageObject;
/**
@@ -90,13 +90,13 @@
}
/**
- * Return a List of translated parts ({@link ILanguageObject}s and Objects), or null
+ * Return a List of translated parts ({@link LanguageObject}s and Objects), or null
* if this FunctionModifier wishes to rely on the default translation of the
* conversion visitor.
* @param function IFunction to be translated
* @return List of translated parts, or null
* @since 4.2
*/
- public abstract List<?> translate(IFunction function);
+ public abstract List<?> translate(Function function);
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/LocateFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/LocateFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/LocateFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,12 +25,13 @@
import java.util.Arrays;
import java.util.List;
-import org.teiid.connector.language.ICompareCriteria;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.language.ICompareCriteria.Operator;
+import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.language.Comparison;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.Comparison.Operator;
/**
@@ -73,7 +74,7 @@
public static String LOCATE = "LOCATE"; //$NON-NLS-1$
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
private boolean sourceStringFirst;
/**
@@ -83,7 +84,7 @@
*
* @param langFactory the language factory associated with translation
*/
- public LocateFunctionModifier(ILanguageFactory langFactory) {
+ public LocateFunctionModifier(LanguageFactory langFactory) {
this(langFactory, LOCATE, false);
}
@@ -96,7 +97,7 @@
* @param functionName the function name or alias to be used instead of LOCATE
* @param sourceStringFirst
*/
- public LocateFunctionModifier(ILanguageFactory langFactory, final String functionName, boolean sourceStringFirst) {
+ public LocateFunctionModifier(LanguageFactory langFactory, final String functionName, boolean sourceStringFirst) {
super(functionName);
this.langFactory = langFactory;
this.sourceStringFirst = sourceStringFirst;
@@ -113,14 +114,14 @@
* and <code>startIndex</code> is a literal value, it is translated for
* consistency between the built-in system function
* <code>LOCATE(searchStr, sourceStr, startIndex)</code> and the sources
- * implementation. This is done by calling {@link #getStartIndexExpression(ILiteral)}
+ * implementation. This is done by calling {@link #getStartIndexExpression(Literal)}
* and passing it the literal <code>startIndex</code> value.
* <p>
* If <code>function</code> represents <code>LOCATE(searchStr, sourceStr, startIndex)</code>
* and <code>startIndex</code> is not a literal value, it is translated for
* consistency between the built-in system function
* <code>LOCATE(searchStr, sourceStr, startIndex)</code> and the sources
- * implementation. This is done by calling {@link #getStartIndexExpression(IExpression)}
+ * implementation. This is done by calling {@link #getStartIndexExpression(Expression)}
* and passing it the non-literal <code>startIndex</code> value.
* <p>
* Finally, <code>function</code>'s parameters may be rearranged depending
@@ -141,11 +142,11 @@
*
* @param function the LOCATE function that may need to be modified
*/
- public void modify(IFunction function) {
+ public void modify(Function function) {
super.modify(function);
- List<IExpression> args = function.getParameters();
- IExpression searchStr = args.get(0);
- IExpression sourceStr = args.get(1);
+ List<Expression> args = function.getParameters();
+ Expression searchStr = args.get(0);
+ Expression sourceStr = args.get(1);
// if startIndex was given then we may need to do additional work
if (args.size() > 2) {
@@ -157,30 +158,30 @@
}
}
- private IExpression ensurePositiveStartIndex(IExpression startIndex) {
- if (startIndex instanceof ILiteral) {
- ILiteral literal = (ILiteral)startIndex;
+ private Expression ensurePositiveStartIndex(Expression startIndex) {
+ if (startIndex instanceof Literal) {
+ Literal literal = (Literal)startIndex;
if (literal.getValue() instanceof Integer && ((Integer)literal.getValue() < 1)) {
literal.setValue(1);
}
} else {
- ICompareCriteria[] whenExpr = {langFactory.createCompareCriteria(
+ Comparison whenExpr = langFactory.createCompareCriteria(
Operator.LT,
startIndex,
langFactory.createLiteral(1, Integer.class)
- )};
- ILiteral[] thenExpr = {langFactory.createLiteral(1, Integer.class)};
- startIndex = langFactory.createSearchedCaseExpression(Arrays.asList(whenExpr), Arrays.asList(thenExpr), startIndex, Integer.class);
+ );
+ Literal thenExpr = langFactory.createLiteral(1, Integer.class);
+ startIndex = langFactory.createSearchedCaseExpression(Arrays.asList(langFactory.createSearchedWhenCondition(whenExpr, thenExpr)), startIndex, TypeFacility.RUNTIME_TYPES.INTEGER);
}
return startIndex;
}
/**
- * Get the instance of {@link ILanguageFactory} set during construction.
+ * Get the instance of {@link LanguageFactory} set during construction.
*
* @return the <code>ILanguageFactory</code> instance
*/
- protected ILanguageFactory getLanguageFactory() {
+ protected LanguageFactory getLanguageFactory() {
return this.langFactory;
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ModFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ModFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/ModFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -31,9 +31,9 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
/**
* Adds mod (remainder) support for non-integral types
@@ -42,13 +42,13 @@
private Set<Class> supportedTypes = new HashSet<Class>(Arrays.asList(TypeFacility.RUNTIME_TYPES.INTEGER, TypeFacility.RUNTIME_TYPES.LONG));
- private ILanguageFactory langFactory;
+ private LanguageFactory langFactory;
- public ModFunctionModifier(String modFunction, ILanguageFactory langFactory) {
+ public ModFunctionModifier(String modFunction, LanguageFactory langFactory) {
this(modFunction, langFactory, null);
}
- public ModFunctionModifier(String modFunction, ILanguageFactory langFactory, Collection<Class> supportedTypes) {
+ public ModFunctionModifier(String modFunction, LanguageFactory langFactory, Collection<Class> supportedTypes) {
super(modFunction);
this.langFactory = langFactory;
if (supportedTypes != null) {
@@ -57,26 +57,26 @@
}
@Override
- public List<?> translate(IFunction function) {
- List<IExpression> expressions = function.getParameters();
+ public List<?> translate(Function function) {
+ List<Expression> expressions = function.getParameters();
Class<?> type = function.getType();
if (supportedTypes.contains(type)) {
modify(function);
return null;
}
//x % y => x - sign(x) * floor(abs(x / y)) * y
- IFunction divide = langFactory.createFunction(SourceSystemFunctions.DIVIDE_OP, new ArrayList<IExpression>(expressions), type);
+ Function divide = langFactory.createFunction(SourceSystemFunctions.DIVIDE_OP, new ArrayList<Expression>(expressions), type);
- IFunction abs = langFactory.createFunction(SourceSystemFunctions.ABS, Arrays.asList(divide), type);
+ Function abs = langFactory.createFunction(SourceSystemFunctions.ABS, Arrays.asList(divide), type);
- IFunction floor = langFactory.createFunction(SourceSystemFunctions.FLOOR, Arrays.asList(abs), type);
+ Function floor = langFactory.createFunction(SourceSystemFunctions.FLOOR, Arrays.asList(abs), type);
- IFunction sign = langFactory.createFunction(SourceSystemFunctions.SIGN, Arrays.asList(expressions.get(0)), type);
+ Function sign = langFactory.createFunction(SourceSystemFunctions.SIGN, Arrays.asList(expressions.get(0)), type);
- List<? extends IExpression> multArgs = Arrays.asList(sign, floor, langFactory.createFunction(SourceSystemFunctions.ABS, Arrays.asList(expressions.get(1)), type));
- IFunction mult = langFactory.createFunction(SourceSystemFunctions.MULTIPLY_OP, multArgs, type);
+ List<? extends Expression> multArgs = Arrays.asList(sign, floor, langFactory.createFunction(SourceSystemFunctions.ABS, Arrays.asList(expressions.get(1)), type));
+ Function mult = langFactory.createFunction(SourceSystemFunctions.MULTIPLY_OP, multArgs, type);
- List<IExpression> minusArgs = Arrays.asList(expressions.get(0), mult);
+ List<Expression> minusArgs = Arrays.asList(expressions.get(0), mult);
return Arrays.asList(langFactory.createFunction(SourceSystemFunctions.SUBTRACT_OP, minusArgs, type));
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -30,7 +30,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.IdentityHashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -38,23 +37,25 @@
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.Translator.NullOrder;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.ICompareCriteria;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.IInCriteria;
-import org.teiid.connector.language.IInsertExpressionValueSource;
-import org.teiid.connector.language.ILanguageObject;
-import org.teiid.connector.language.ILikeCriteria;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.language.IOrderByItem;
-import org.teiid.connector.language.IParameter;
-import org.teiid.connector.language.IProcedure;
-import org.teiid.connector.language.ISearchedCaseExpression;
-import org.teiid.connector.language.ISelectSymbol;
-import org.teiid.connector.language.ISetClause;
-import org.teiid.connector.language.IParameter.Direction;
-import org.teiid.connector.language.ISetQuery.Operation;
-import org.teiid.connector.visitor.util.SQLReservedWords;
+import org.teiid.connector.language.Argument;
+import org.teiid.connector.language.Call;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Comparison;
+import org.teiid.connector.language.DerivedColumn;
+import org.teiid.connector.language.ExpressionValueSource;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.In;
+import org.teiid.connector.language.LanguageObject;
+import org.teiid.connector.language.Like;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.SQLReservedWords;
+import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.SetClause;
+import org.teiid.connector.language.SortSpecification;
+import org.teiid.connector.language.Argument.Direction;
+import org.teiid.connector.language.SQLReservedWords.Tokens;
+import org.teiid.connector.language.SetQuery.Operation;
+import org.teiid.connector.language.SortSpecification.Ordering;
import org.teiid.connector.visitor.util.SQLStringVisitor;
@@ -76,8 +77,8 @@
private List preparedValues = new ArrayList();
- private Set<ILanguageObject> recursionObjects = Collections.newSetFromMap(new IdentityHashMap<ILanguageObject, Boolean>());
- private Map<ILanguageObject, Object> translations = new IdentityHashMap<ILanguageObject, Object>();
+ private Set<LanguageObject> recursionObjects = Collections.newSetFromMap(new IdentityHashMap<LanguageObject, Boolean>());
+ private Map<LanguageObject, Object> translations = new IdentityHashMap<LanguageObject, Object>();
private boolean replaceWithBinding = false;
@@ -87,9 +88,9 @@
}
@Override
- public void append(ILanguageObject obj) {
+ public void append(LanguageObject obj) {
boolean replacementMode = replaceWithBinding;
- if (obj instanceof ICommand || obj instanceof IFunction) {
+ if (obj instanceof Command || obj instanceof Function) {
/*
* In general it is not appropriate to use bind values within a function
* unless the particulars of the function parameters are know.
@@ -103,8 +104,8 @@
Object trans = this.translations.get(obj);
if (trans instanceof List<?>) {
parts = (List<?>)trans;
- } else if (trans instanceof ILanguageObject) {
- obj = (ILanguageObject)trans;
+ } else if (trans instanceof LanguageObject) {
+ obj = (LanguageObject)trans;
} else {
parts = translator.translate(obj, context);
if (parts != null) {
@@ -117,8 +118,8 @@
if (parts != null) {
recursionObjects.add(obj);
for (Object part : parts) {
- if(part instanceof ILanguageObject) {
- append((ILanguageObject)part);
+ if(part instanceof LanguageObject) {
+ append((LanguageObject)part);
} else {
buffer.append(part);
}
@@ -131,13 +132,13 @@
}
@Override
- public void visit(IOrderByItem obj) {
+ public void visit(SortSpecification obj) {
super.visit(obj);
NullOrder nullOrder = this.translator.getDefaultNullOrder();
if (!this.translator.supportsExplicitNullOrdering() || nullOrder == NullOrder.LOW) {
return;
}
- if (obj.getDirection() == IOrderByItem.ASC) {
+ if (obj.getOrdering() == Ordering.ASC) {
if (nullOrder != NullOrder.FIRST) {
buffer.append(" NULLS FIRST"); //$NON-NLS-1$
}
@@ -188,29 +189,29 @@
} else {
// If obj is string, toSting() will not create a new String
// object, it returns it self, so new object creation.
- valuesbuffer.append(SQLReservedWords.QUOTE)
- .append(escapeString(obj.toString(), SQLReservedWords.QUOTE))
- .append(SQLReservedWords.QUOTE);
+ valuesbuffer.append(Tokens.QUOTE)
+ .append(escapeString(obj.toString(), Tokens.QUOTE))
+ .append(Tokens.QUOTE);
}
}
}
/**
- * @see org.teiid.connector.visitor.util.SQLStringVisitor#visit(org.teiid.connector.language.IProcedure)
+ * @see org.teiid.connector.visitor.util.SQLStringVisitor#visit(org.teiid.connector.language.Call)
*/
- public void visit(IProcedure obj) {
+ public void visit(Call obj) {
this.prepared = true;
/*
* preparedValues is now a list of procedure params instead of just values
*/
- this.preparedValues = obj.getParameters();
+ this.preparedValues = obj.getArguments();
buffer.append(generateSqlForStoredProcedure(obj));
}
/**
- * @see org.teiid.connector.visitor.util.SQLStringVisitor#visit(org.teiid.connector.language.ILiteral)
+ * @see org.teiid.connector.visitor.util.SQLStringVisitor#visit(org.teiid.connector.language.Literal)
*/
- public void visit(ILiteral obj) {
+ public void visit(Literal obj) {
if (this.prepared && (replaceWithBinding || TranslatedCommand.isBindEligible(obj) || obj.isBindValue())) {
buffer.append(UNDEFINED_PARAM);
preparedValues.add(obj);
@@ -220,43 +221,43 @@
}
@Override
- public void visit(IInCriteria obj) {
+ public void visit(In obj) {
replaceWithBinding = true;
super.visit(obj);
}
@Override
- public void visit(ILikeCriteria obj) {
+ public void visit(Like obj) {
replaceWithBinding = true;
super.visit(obj);
}
@Override
- public void visit(ICompareCriteria obj) {
+ public void visit(Comparison obj) {
replaceWithBinding = true;
super.visit(obj);
}
@Override
- public void visit(IInsertExpressionValueSource obj) {
+ public void visit(ExpressionValueSource obj) {
replaceWithBinding = true;
super.visit(obj);
}
@Override
- public void visit(ISetClause obj) {
+ public void visit(SetClause obj) {
replaceWithBinding = true;
super.visit(obj);
}
@Override
- public void visit(ISelectSymbol obj) {
+ public void visit(DerivedColumn obj) {
replaceWithBinding = false;
super.visit(obj);
}
@Override
- public void visit(ISearchedCaseExpression obj) {
+ public void visit(SearchedCase obj) {
replaceWithBinding = false;
super.visit(obj);
}
@@ -280,7 +281,7 @@
return this.context;
}
- protected String getSourceComment(ICommand command) {
+ protected String getSourceComment(Command command) {
return this.translator.getSourceComment(this.context, command);
}
@@ -290,22 +291,14 @@
* @param exec The command for the stored procedure.
* @return String to be executed by CallableStatement.
*/
- protected String generateSqlForStoredProcedure(IProcedure exec) {
+ protected String generateSqlForStoredProcedure(Call exec) {
StringBuffer prepareCallBuffer = new StringBuffer();
prepareCallBuffer.append("{ "); //$NON-NLS-1$
- List params = exec.getParameters();
+ List<Argument> params = exec.getArguments();
//check whether a "?" is needed if there are returns
- boolean needQuestionMark = false;
- Iterator iter = params.iterator();
- while(iter.hasNext()){
- IParameter param = (IParameter)iter.next();
- if(param.getDirection() == Direction.RETURN){
- needQuestionMark = true;
- break;
- }
- }
+ boolean needQuestionMark = exec.getReturnType() != null;
prepareCallBuffer.append(getSourceComment(exec));
@@ -318,9 +311,7 @@
prepareCallBuffer.append("("); //$NON-NLS-1$
int numberOfParameters = 0;
- iter = params.iterator();
- while(iter.hasNext()){
- IParameter param = (IParameter)iter.next();
+ for (Argument param : params) {
if(param.getDirection() == Direction.IN || param.getDirection() == Direction.OUT || param.getDirection() == Direction.INOUT){
if(numberOfParameters > 0){
prepareCallBuffer.append(","); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/TranslatedCommand.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/TranslatedCommand.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/TranslatedCommand.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -29,8 +29,8 @@
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Literal;
import org.teiid.connector.visitor.util.CollectorVisitor;
@@ -64,7 +64,7 @@
* @param command ICommand to be translated
* @throws ConnectorException
*/
- public void translateCommand(ICommand command) throws ConnectorException {
+ public void translateCommand(Command command) throws ConnectorException {
SQLConversionVisitor sqlConversionVisitor = sqlTranslator.getSQLConversionVisitor();
sqlConversionVisitor.setExecutionContext(context);
if (sqlTranslator.usePreparedStatements() || hasBindValue(command)) {
@@ -83,8 +83,8 @@
* @param command
* @return
*/
- private boolean hasBindValue(ICommand command) {
- for (ILiteral l : CollectorVisitor.collectObjects(ILiteral.class, command)) {
+ private boolean hasBindValue(Command command) {
+ for (Literal l : CollectorVisitor.collectObjects(Literal.class, command)) {
if (l.isBindValue() || isBindEligible(l)) {
return true;
}
@@ -96,7 +96,7 @@
* @param l
* @return
*/
- static boolean isBindEligible(ILiteral l) {
+ static boolean isBindEligible(Literal l) {
return TypeFacility.RUNTIME_TYPES.XML.equals(l.getType())
|| TypeFacility.RUNTIME_TYPES.CLOB.equals(l.getType())
|| TypeFacility.RUNTIME_TYPES.BLOB.equals(l.getType())
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -48,22 +48,21 @@
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.JDBCCapabilities;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.JDBCPlugin;
import org.teiid.connector.jdbc.JDBCPropertyNames;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IElement;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILanguageObject;
-import org.teiid.connector.language.ILimit;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.language.IParameter;
-import org.teiid.connector.language.ISetQuery;
-import org.teiid.connector.language.IParameter.Direction;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.ColumnReference;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.LanguageObject;
+import org.teiid.connector.language.Limit;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.Argument;
+import org.teiid.connector.language.SetQuery;
+import org.teiid.connector.language.Argument.Direction;
-import com.metamatrix.common.util.PropertiesUtils;
-import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.util.ReflectionHelper;
/**
@@ -130,7 +129,7 @@
};
private Map<String, FunctionModifier> functionModifiers = new HashMap<String, FunctionModifier>();
- private ConnectorEnvironment environment;
+ private JDBCManagedConnectionFactory environment;
private boolean useComments;
private boolean usePreparedStatements;
@@ -138,8 +137,6 @@
private TypeFacility typeFacility;
private volatile boolean initialConnection;
- private String connectionTestQuery;
- private int isValidTimeout = -1;
private boolean trimChar;
/**
@@ -148,11 +145,11 @@
* @param metadata
* @throws ConnectorException
*/
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
this.environment = env;
this.typeFacility = env.getTypeFacility();
- String timeZone = env.getProperties().getProperty(JDBCPropertyNames.DATABASE_TIME_ZONE);
+ String timeZone = this.environment.getDatabaseTimeZone();
if(timeZone != null && timeZone.trim().length() > 0) {
TimeZone tz = TimeZone.getTimeZone(timeZone);
if(!DEFAULT_TIME_ZONE.hasSameRules(tz)) {
@@ -160,11 +157,9 @@
}
}
- this.useComments = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.USE_COMMENTS_SOURCE_QUERY, false);
- this.usePreparedStatements = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.USE_BIND_VARIABLES, false);
- this.connectionTestQuery = env.getProperties().getProperty(JDBCPropertyNames.CONNECTION_TEST_QUERY, getDefaultConnectionTestQuery());
- this.isValidTimeout = PropertiesUtils.getIntProperty(env.getProperties(), JDBCPropertyNames.IS_VALID_TIMEOUT, -1);
- this.trimChar = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.TRIM_STRINGS, false);
+ this.useComments = this.environment.isUseCommentsInSourceQuery();
+ this.usePreparedStatements = this.environment.isUseBindVariables();
+ trimChar = this.environment.isTrimStrings();
}
/**
@@ -186,66 +181,62 @@
}
/**
- * Gets the {@link ILanguageFactory}
+ * Gets the {@link LanguageFactory}
*/
- public final ILanguageFactory getLanguageFactory() {
+ public final LanguageFactory getLanguageFactory() {
return environment.getLanguageFactory();
}
/**
- * Return a List of translated parts ({@link ILanguageObject}s and Objects), or null
+ * Return a List of translated parts ({@link LanguageObject}s and Objects), or null
* if to rely on the default translation. Override with care.
* @param command
* @param context
* @return
*/
- public List<?> translate(ILanguageObject obj, ExecutionContext context) {
+ public List<?> translate(LanguageObject obj, ExecutionContext context) {
List<?> parts = null;
- if (obj instanceof IFunction) {
- IFunction function = (IFunction)obj;
+ if (obj instanceof Function) {
+ Function function = (Function)obj;
if (functionModifiers != null) {
FunctionModifier modifier = functionModifiers.get(function.getName().toLowerCase());
if (modifier != null) {
parts = modifier.translate(function);
}
}
- } else if (obj instanceof ICommand) {
- parts = translateCommand((ICommand)obj, context);
- } else if (obj instanceof ILimit) {
- parts = translateLimit((ILimit)obj, context);
- } else if (obj instanceof IElement) {
- IElement elem = (IElement)obj;
- try {
- if (trimChar && elem.getType() == TypeFacility.RUNTIME_TYPES.STRING && elem.getMetadataObject() != null
- && ("char".equalsIgnoreCase(elem.getMetadataObject().getNativeType()) || "nchar".equalsIgnoreCase(elem.getMetadataObject().getNativeType()))) { //$NON-NLS-1$ //$NON-NLS-2$
- return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.RTRIM, new IExpression[] {elem}, TypeFacility.RUNTIME_TYPES.STRING));
- }
- } catch (ConnectorException e) {
- throw new MetaMatrixRuntimeException(e);
- }
+ } else if (obj instanceof Command) {
+ parts = translateCommand((Command)obj, context);
+ } else if (obj instanceof Limit) {
+ parts = translateLimit((Limit)obj, context);
+ } else if (obj instanceof ColumnReference) {
+ ColumnReference elem = (ColumnReference)obj;
+ if (trimChar && elem.getType() == TypeFacility.RUNTIME_TYPES.STRING && elem.getMetadataObject() != null
+ && ("char".equalsIgnoreCase(elem.getMetadataObject().getNativeType()) || "nchar".equalsIgnoreCase(elem.getMetadataObject().getNativeType()))) { //$NON-NLS-1$ //$NON-NLS-2$
+ return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.RTRIM, new Expression[] {elem}, TypeFacility.RUNTIME_TYPES.STRING));
+ }
}
return parts;
}
/**
- * Return a List of translated parts ({@link ILanguageObject}s and Objects), or null
+ * Return a List of translated parts ({@link LanguageObject}s and Objects), or null
* if to rely on the default translation.
* @param command
* @param context
* @return
*/
- public List<?> translateCommand(ICommand command, ExecutionContext context) {
+ public List<?> translateCommand(Command command, ExecutionContext context) {
return null;
}
/**
- * Return a List of translated parts ({@link ILanguageObject}s and Objects), or null
+ * Return a List of translated parts ({@link LanguageObject}s and Objects), or null
* if to rely on the default translation.
* @param limit
* @param context
* @return
*/
- public List<?> translateLimit(ILimit limit, ExecutionContext context) {
+ public List<?> translateLimit(Limit limit, ExecutionContext context) {
return null;
}
@@ -367,7 +358,7 @@
/**
* Use PreparedStatements (or CallableStatements) as
* appropriate for all commands. Bind values will be
- * determined by the {@link BindValueVisitor}. {@link ILiteral#setBindValue(boolean)}
+ * determined by the {@link BindValueVisitor}. {@link Literal#setBindValue(boolean)}
* can be used to force a literal to be a bind value.
*/
public boolean usePreparedStatements() {
@@ -393,11 +384,11 @@
}
/**
- * Returns the name for a given {@link ISetQuery.Operation}
+ * Returns the name for a given {@link SetQuery.Operation}
* @param operation
* @return
*/
- public String getSetOperationString(ISetQuery.Operation operation) {
+ public String getSetOperationString(SetQuery.Operation operation) {
return operation.toString();
}
@@ -407,7 +398,7 @@
* @param command
* @return
*/
- public String getSourceComment(ExecutionContext context, ICommand command) {
+ public String getSourceComment(ExecutionContext context, Command command) {
if (addSourceComment() && context != null) {
return COMMENT.get().format(new Object[] {context.getConnectionIdentifier(), context.getRequestIdentifier(), context.getPartIdentifier()});
}
@@ -432,14 +423,6 @@
return 9;
}
- public String getConnectionTestQuery() {
- return connectionTestQuery;
- }
-
- public String getDefaultConnectionTestQuery() {
- return "select 1"; //$NON-NLS-1$
- }
-
public TypeFacility getTypeFacility() {
return typeFacility;
}
@@ -449,33 +432,28 @@
* stored procedures differently, subclasses should override this method
* if necessary.
*/
- public ResultSet executeStoredProcedure(CallableStatement statement, TranslatedCommand command) throws SQLException {
+ public ResultSet executeStoredProcedure(CallableStatement statement, TranslatedCommand command, Class<?> returnType) throws SQLException {
List params = command.getPreparedValues();
int index = 1;
- Iterator iter = params.iterator();
- while(iter.hasNext()){
- IParameter param = (IParameter)iter.next();
- if(param.getDirection() == Direction.RETURN){
- registerSpecificTypeOfOutParameter(statement,param, index++);
- }
+ if(returnType != null){
+ registerSpecificTypeOfOutParameter(statement, returnType, index++);
}
- iter = params.iterator();
+ Iterator iter = params.iterator();
while(iter.hasNext()){
- IParameter param = (IParameter)iter.next();
+ Argument param = (Argument)iter.next();
if(param.getDirection() == Direction.INOUT){
- registerSpecificTypeOfOutParameter(statement,param, index);
+ registerSpecificTypeOfOutParameter(statement,param.getType(), index);
}else if(param.getDirection() == Direction.OUT){
- registerSpecificTypeOfOutParameter(statement,param, index++);
+ registerSpecificTypeOfOutParameter(statement,param.getType(), index++);
}
if(param.getDirection() == Direction.IN || param.getDirection() == Direction.INOUT){
- bindValue(statement, param.getValue(), param.getType(), index++);
+ bindValue(statement, param.getArgumentValue().getValue(), param.getType(), index++);
}
}
-
boolean resultSetNext = statement.execute();
while (!resultSetNext) {
@@ -496,8 +474,7 @@
* @param parameter
* @throws SQLException
*/
- protected void registerSpecificTypeOfOutParameter(CallableStatement statement, IParameter param, int index) throws SQLException {
- Class runtimeType = param.getType();
+ protected void registerSpecificTypeOfOutParameter(CallableStatement statement, Class<?> runtimeType, int index) throws SQLException {
int typeToSet = TypeFacility.getSQLTypeFromRuntimeType(runtimeType);
statement.registerOutParameter(index,typeToSet);
@@ -763,14 +740,7 @@
}
}
- /**
- * Returns a positive number if query testing should use the JDBC 4.0 isValid check.
- * Can be set via the {@link JDBCPropertyNames#IS_VALID_TIMEOUT} property
- * @return
- */
- public int getIsValidTimeout() {
- return isValidTimeout;
- }
+
/**
* Create the {@link SQLConversionVisitor} that will perform translation. Typical custom
@@ -798,12 +768,11 @@
*/
public ConnectorCapabilities getConnectorCapabilities() throws ConnectorException {
// create Capabilities
- String className = this.environment.getProperties().getProperty(JDBCPropertyNames.EXT_CAPABILITY_CLASS);
+ String className = this.environment.getCapabilitiesClass();
try {
ConnectorCapabilities result = null;
if (className != null && className.length() > 0) {
- result = (ConnectorCapabilities) ReflectionHelper.create(
- className, null, Thread.currentThread().getContextClassLoader());
+ result = (ConnectorCapabilities) ReflectionHelper.create(className, null, Thread.currentThread().getContextClassLoader());
} else {
result = getDefaultCapabilities().newInstance();
}
Copied: trunk/connectors/connector-jdbc/src/main/rar (from rev 1900, branches/JCA/connectors/connector-jdbc/src/main/rar)
Copied: trunk/connectors/connector-jdbc/src/main/rar/META-INF (from rev 1900, branches/JCA/connectors/connector-jdbc/src/main/rar/META-INF)
Deleted: trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml 2010-03-04 15:18:19 UTC (rev 1900)
+++ trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<connector xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
- version="1.5">
-
- <vendor-name>Red Hat Middleware LLC</vendor-name>
- <eis-type>Teiid JDBC Connector</eis-type>
- <resourceadapter-version>1.0</resourceadapter-version>
- <license>
- <description>
- JBoss, Home of Professional Open Source.
- Copyright 2006, Red Hat Middleware LLC, and individual contributors
- as indicated by the @author tags. See the copyright.txt file in the
- distribution for a full listing of individual contributors.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- </description>
- <license-required>true</license-required>
- </license>
- <resourceadapter>
- <resourceadapter-class>org.teiid.connector.basic.BasicResourceAdapter</resourceadapter-class>
-
- <outbound-resourceadapter>
- <connection-definition>
- <managedconnectionfactory-class>org.teiid.connector.jdbc.JDBCManagedConnectionFactory</managedconnectionfactory-class>
-
- <config-property>
- <description>{$display:"Connector Class",$advanced:"true"}</description>
- <config-property-name>ConnectorClass</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- <config-property-value>org.teiid.connector.jdbc.JDBCConnector</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Connector Capabilities",$description:"The class to use to provide the Connector Capabilities",$advanced:"true"}</description>
- <config-property-name>CapabilitiesClass</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- <config-property-value>org.teiid.connector.basic.BasicConnectorCapabilities</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Is Immutable",$description:"Is Immutable, True if the source never changes.",$advanced:"true"}</description>
- <config-property-name>Immutable</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>false</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Is XA Capable",$description:"True, if this connector supports XA Transactions",$advanced:"true"}</description>
- <config-property-name>XaCapable</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>false</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Exception on Exceeding Max Rows",$description:"Indicates if an Exception should be thrown if the specified value for Maximum Result Rows is exceeded; else no exception and no more than the maximum will be returned",$advanced:"true"}</description>
- <config-property-name>ExceptionOnMaxRows</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>true</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Maximum Result Rows",$description:"Maximum Result Rows allowed",$advanced:"true"}</description>
- <config-property-name>MaxResultRows</config-property-name>
- <config-property-type>java.lang.Integer</config-property-type>
- <config-property-value>10000</config-property-value>
- </config-property>
-
- <!-- JDBC Specific properties -->
-
- <config-property>
- <description>{$display:"Use prepared statements and bind variables",$advanced:"true"}</description>
- <config-property-name>UseBindVariables</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>false</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"fetch size used from the connector to its underlying source.",$advanced:"true"}</description>
- <config-property-name>FetchSize</config-property-name>
- <config-property-type>java.lang.Integer</config-property-type>
- <config-property-value>2000</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Database time zone",$description:"Time zone of the database, if different than Integration Server",$advanced:"true"}</description>
- <config-property-name>DatabaseTimeZone</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- </config-property>
-
- <config-property>
- <description>{$display:"Extension SQL Translation Class",$required:"true",$advanced:"true",$allowed:["org.teiid.connector.jdbc.translator.Translator","org.teiid.connector.jdbc.oracle.OracleSQLTranslator","org.teiid.connector.jdbc.db2.DB2SQLTranslator", "org.teiid.connector.jdbc.sqlserver.SqlServerSQLTranslator", "org.teiid.connector.jdbc.mysql.MySQLTranslator","org.teiid.connector.jdbc.mysql.MySQL5Translator", "org.teiid.connector.jdbc.postgresql.PostgreSQLTranslator", "org.teiid.connector.jdbc.derby.DerbySQLTranslator", "org.teiid.connector.jdbc.access.AccessSQLTranslator","org.teiid.connector.jdbc.h2.H2Translator","org.teiid.connector.jdbc.h2.H2Translator"]}</description>
- <config-property-name>ExtensionTranslationClassName</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- <config-property-value>org.teiid.connector.jdbc.translator.Translator</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Source Connection JNDI Name",$required:"true"}</description>
- <description>JNDI Name of the physical resource.</description>
- <config-property-name>SourceJNDIName</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- </config-property>
-
- <config-property>
- <description>{$display:"Trim string flag",$description:"Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function.",$advanced:"true"}</description>
- <config-property-name>TrimStrings</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>false</config-property-value>
- </config-property>
-
- <config-property>
- <description>{$display:"Use informational comments in Source Queries",$description:"This will embed /*comment*/ style comment with session/request id in source SQL query for informational purposes",$advanced:"true"}</description>
- <config-property-name>UseCommentsInSourceQuery</config-property-name>
- <config-property-type>java.lang.Boolean</config-property-type>
- <config-property-value>false</config-property-value>
- </config-property>
-
- <connectionfactory-interface>org.teiid.connector.api.Connector</connectionfactory-interface>
- <connectionfactory-impl-class>org.teiid.connector.basic.WrappedConnector</connectionfactory-impl-class>
- <connection-interface>org.teiid.connector.api.Connection</connection-interface>
- <connection-impl-class>org.teiid.connector.basic.WrappedConnection</connection-impl-class>
-
- </connection-definition>
-
- <transaction-support>NoTransaction</transaction-support>
-
- <authentication-mechanism>
- <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
- <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
- </authentication-mechanism>
- <reauthentication-support>false</reauthentication-support>
- </outbound-resourceadapter>
- </resourceadapter>
-</connector>
Copied: trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml (from rev 1900, branches/JCA/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml)
===================================================================
--- trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml (rev 0)
+++ trunk/connectors/connector-jdbc/src/main/rar/META-INF/ra.xml 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<connector xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+ http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
+ version="1.5">
+
+ <vendor-name>Red Hat Middleware LLC</vendor-name>
+ <eis-type>Teiid JDBC Connector</eis-type>
+ <resourceadapter-version>1.0</resourceadapter-version>
+ <license>
+ <description>
+ JBoss, Home of Professional Open Source.
+ Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags. See the copyright.txt file in the
+ distribution for a full listing of individual contributors.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ </description>
+ <license-required>true</license-required>
+ </license>
+ <resourceadapter>
+ <resourceadapter-class>org.teiid.connector.basic.BasicResourceAdapter</resourceadapter-class>
+
+ <outbound-resourceadapter>
+ <connection-definition>
+ <managedconnectionfactory-class>org.teiid.connector.jdbc.JDBCManagedConnectionFactory</managedconnectionfactory-class>
+
+ <config-property>
+ <description>{$display:"Connector Class",$advanced:"true"}</description>
+ <config-property-name>ConnectorClass</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>org.teiid.connector.jdbc.JDBCConnector</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Connector Capabilities",$description:"The class to use to provide the Connector Capabilities",$advanced:"true"}</description>
+ <config-property-name>CapabilitiesClass</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>org.teiid.connector.basic.BasicConnectorCapabilities</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Is Immutable",$description:"Is Immutable, True if the source never changes.",$advanced:"true"}</description>
+ <config-property-name>Immutable</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>false</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Is XA Capable",$description:"True, if this connector supports XA Transactions",$advanced:"true"}</description>
+ <config-property-name>XaCapable</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>false</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Exception on Exceeding Max Rows",$description:"Indicates if an Exception should be thrown if the specified value for Maximum Result Rows is exceeded; else no exception and no more than the maximum will be returned",$advanced:"true"}</description>
+ <config-property-name>ExceptionOnMaxRows</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>true</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Maximum Result Rows",$description:"Maximum Result Rows allowed",$advanced:"true"}</description>
+ <config-property-name>MaxResultRows</config-property-name>
+ <config-property-type>java.lang.Integer</config-property-type>
+ <config-property-value>10000</config-property-value>
+ </config-property>
+
+ <!-- JDBC Specific properties -->
+
+ <config-property>
+ <description>{$display:"Use prepared statements and bind variables",$advanced:"true"}</description>
+ <config-property-name>UseBindVariables</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>false</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"fetch size used from the connector to its underlying source.",$advanced:"true"}</description>
+ <config-property-name>FetchSize</config-property-name>
+ <config-property-type>java.lang.Integer</config-property-type>
+ <config-property-value>2000</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Database time zone",$description:"Time zone of the database, if different than Integration Server",$advanced:"true"}</description>
+ <config-property-name>DatabaseTimeZone</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Extension SQL Translation Class",$required:"true",$advanced:"true",$allowed:["org.teiid.connector.jdbc.translator.Translator","org.teiid.connector.jdbc.oracle.OracleSQLTranslator","org.teiid.connector.jdbc.db2.DB2SQLTranslator", "org.teiid.connector.jdbc.sqlserver.SqlServerSQLTranslator", "org.teiid.connector.jdbc.mysql.MySQLTranslator","org.teiid.connector.jdbc.mysql.MySQL5Translator", "org.teiid.connector.jdbc.postgresql.PostgreSQLTranslator", "org.teiid.connector.jdbc.derby.DerbySQLTranslator", "org.teiid.connector.jdbc.access.AccessSQLTranslator","org.teiid.connector.jdbc.h2.H2Translator","org.teiid.connector.jdbc.h2.H2Translator"]}</description>
+ <config-property-name>ExtensionTranslationClassName</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>org.teiid.connector.jdbc.translator.Translator</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Source Connection JNDI Name",$required:"true"}</description>
+ <description>JNDI Name of the physical resource.</description>
+ <config-property-name>SourceJNDIName</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Trim string flag",$description:"Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function.",$advanced:"true"}</description>
+ <config-property-name>TrimStrings</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>false</config-property-value>
+ </config-property>
+
+ <config-property>
+ <description>{$display:"Use informational comments in Source Queries",$description:"This will embed /*comment*/ style comment with session/request id in source SQL query for informational purposes",$advanced:"true"}</description>
+ <config-property-name>UseCommentsInSourceQuery</config-property-name>
+ <config-property-type>java.lang.Boolean</config-property-type>
+ <config-property-value>false</config-property-value>
+ </config-property>
+
+ <connectionfactory-interface>org.teiid.connector.api.Connector</connectionfactory-interface>
+ <connectionfactory-impl-class>org.teiid.connector.basic.WrappedConnector</connectionfactory-impl-class>
+ <connection-interface>org.teiid.connector.api.Connection</connection-interface>
+ <connection-impl-class>org.teiid.connector.basic.WrappedConnection</connection-impl-class>
+
+ </connection-definition>
+
+ <transaction-support>NoTransaction</transaction-support>
+
+ <authentication-mechanism>
+ <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
+ <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+ </authentication-mechanism>
+ <reauthentication-support>false</reauthentication-support>
+ </outbound-resourceadapter>
+ </resourceadapter>
+</connector>
Modified: trunk/connectors/connector-jdbc/src/main/resources/org/teiid/connector/jdbc/i18n.properties
===================================================================
--- trunk/connectors/connector-jdbc/src/main/resources/org/teiid/connector/jdbc/i18n.properties 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/main/resources/org/teiid/connector/jdbc/i18n.properties 2010-03-05 15:27:12 UTC (rev 1918)
@@ -20,7 +20,7 @@
# 02110-1301 USA.
#
-JDBCSourceConnectionFactory.Missing_JDBC_driver_class_name_1=Missing JDBC driver class name
+JDBCSourceConnectionFactory.Missing_JDBC_jndi_1=Missing JDBC Source JNDI Name
JDBCSourceConnectionFactory.Missing_JDBC_protocol_name_2=Missing JDBC protocol name
JDBCSourceConnectionFactory.Missing_JDBC_database_name_3=Missing JDBC database name
JDBCSourceConnectionFactory.Unable_to_load_the_JDBC_driver_class_6=Unable to load the JDBC driver class "{0}".
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/FakeMetadataFactory.java (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/FakeMetadataFactory.java)
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/FakeMetadataFactory.java (rev 0)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/FakeMetadataFactory.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.connector.jdbc;
+
+import static org.junit.Assert.assertEquals;
+import junit.framework.Assert;
+
+import org.mockito.Mockito;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.translator.TranslatedCommand;
+import org.teiid.connector.jdbc.translator.Translator;
+import org.teiid.connector.language.Command;
+
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.cdk.unittest.FakeTranslationFactory;
+
+public class FakeMetadataFactory {
+
+ public static final String PARTS_VDB = "/PartsSupplier.vdb"; //$NON-NLS-1$
+ public static final String BQT_VDB = "/bqt.vdb"; //$NON-NLS-1$
+
+ public static Command helpTranslate(String vdbFileName, String sql) {
+ TranslationUtility util = null;
+ if (PARTS_VDB.equals(vdbFileName)) {
+ util = new TranslationUtility(FakeMetadataFactory.class.getResource(vdbFileName));
+ } else if (BQT_VDB.equals(vdbFileName)){
+ util = FakeTranslationFactory.getInstance().getBQTTranslationUtility();
+ } else {
+ Assert.fail("unknown vdb"); //$NON-NLS-1$
+ }
+ return util.parseCommand(sql);
+ }
+
+ public static void helpTestVisitor(String vdb, String input, String expectedOutput, Translator translator) throws ConnectorException {
+ // Convert from sql to objects
+ Command obj = helpTranslate(vdb, input);
+
+ TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), translator); //$NON-NLS-1$
+ tc.translateCommand(obj);
+
+ // Check stuff
+ assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+ }
+
+}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,54 +22,54 @@
package org.teiid.connector.jdbc;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Types;
import java.util.Arrays;
-import java.util.Properties;
import org.junit.Test;
import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.dqp.internal.datamgr.metadata.RuntimeMetadataImpl;
+import org.teiid.connector.language.Command;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-
public class TestJDBCProcedureExecution {
@Test public void testProcedureExecution() throws Exception {
- ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8a()"); //$NON-NLS-1$
+ Command command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8a()"); //$NON-NLS-1$
Connection connection = Mockito.mock(Connection.class);
CallableStatement cs = Mockito.mock(CallableStatement.class);
Mockito.stub(cs.getUpdateCount()).toReturn(-1);
Mockito.stub(cs.getInt(1)).toReturn(5);
Mockito.stub(connection.prepareCall("{ call spTest8a(?)}")).toReturn(cs); //$NON-NLS-1$
Translator sqlTranslator = new Translator();
- ExecutionContext context = EnvironmentUtility.createSecurityContext("user"); //$NON-NLS-1$
- RuntimeMetadataImpl runtimeMetadata = new RuntimeMetadataImpl(FakeMetadataFactory.exampleBQTCached());
- JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command, connection, sqlTranslator, Mockito.mock(ConnectorLogger.class), new Properties(), runtimeMetadata, context, EnvironmentUtility.createEnvironment(new Properties()) );
+
+ JDBCManagedConnectionFactory config = Mockito.mock(JDBCManagedConnectionFactory.class);
+ Mockito.stub(config.getExtensionTranslationClass()).toReturn(sqlTranslator);
+ Mockito.stub(config.getLogger()).toReturn(Mockito.mock(ConnectorLogger.class));
+
+ JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command, connection, Mockito.mock(ExecutionContext.class), config);
procedureExecution.execute();
assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
Mockito.verify(cs, Mockito.times(1)).registerOutParameter(1, Types.INTEGER);
}
-
@Test public void testProcedureExecution1() throws Exception {
- ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8(1)"); //$NON-NLS-1$
+ Command command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8(1)"); //$NON-NLS-1$
Connection connection = Mockito.mock(Connection.class);
CallableStatement cs = Mockito.mock(CallableStatement.class);
Mockito.stub(cs.getUpdateCount()).toReturn(-1);
Mockito.stub(cs.getInt(2)).toReturn(5);
Mockito.stub(connection.prepareCall("{ call spTest8(?,?)}")).toReturn(cs); //$NON-NLS-1$
Translator sqlTranslator = new Translator();
- ExecutionContext context = EnvironmentUtility.createSecurityContext("user"); //$NON-NLS-1$
- RuntimeMetadataImpl runtimeMetadata = new RuntimeMetadataImpl(FakeMetadataFactory.exampleBQTCached());
- JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command, connection, sqlTranslator, Mockito.mock(ConnectorLogger.class), new Properties(), runtimeMetadata, context, EnvironmentUtility.createEnvironment(new Properties()) );
+
+ JDBCManagedConnectionFactory config = Mockito.mock(JDBCManagedConnectionFactory.class);
+ Mockito.stub(config.getExtensionTranslationClass()).toReturn(sqlTranslator);
+ Mockito.stub(config.getLogger()).toReturn(Mockito.mock(ConnectorLogger.class));
+
+ JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command, connection, Mockito.mock(ExecutionContext.class), config );
procedureExecution.execute();
assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
Mockito.verify(cs, Mockito.times(1)).registerOutParameter(2, Types.INTEGER);
Deleted: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCSourceConnection.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCSourceConnection.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCSourceConnection.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,118 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.connector.jdbc;
-
-import java.sql.Connection;
-import java.util.Properties;
-
-import org.teiid.connector.api.ConnectorEnvironment;
-import org.teiid.connector.basic.BasicConnectorCapabilities;
-import org.teiid.connector.jdbc.JDBCPropertyNames;
-import org.teiid.connector.jdbc.JDBCSourceConnection;
-import org.teiid.connector.jdbc.translator.Translator;
-
-import junit.framework.TestCase;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.core.util.SimpleMock;
-
-
-/**
- * Test case for JDBCSourceConnection
- * @since 4.3
- */
-public class TestJDBCSourceConnection extends TestCase {
-
- private FakeConnection fakeConnection;
- private Connection connection;
- private ConnectorEnvironment environment;
-
-
- public TestJDBCSourceConnection(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- fakeConnection = new FakeConnection();
- connection = SimpleMock.createSimpleMock(fakeConnection, Connection.class);
-
- final Properties properties = new Properties();
- properties.setProperty(JDBCPropertyNames.EXT_CAPABILITY_CLASS, BasicConnectorCapabilities.class.getName());
-
- environment = EnvironmentUtility.createEnvironment(properties, false);
- }
-
-
- /**
- * Tests JDBCSourceConnection.isConnectionAlive() with a ConnectionQueryStrategy
- * @since 4.3
- */
- public void testIsAlive() throws Exception {
- JDBCSourceConnection sourceConnection = new JDBCSourceConnection(connection, environment, new Translator() {
- @Override
- public String getConnectionTestQuery() {
- return "select 1";
- }
- });
-
- //closed connections should not be 'alive'
- fakeConnection.closed = true;
- assertFalse(sourceConnection.isAlive());
-
- //open connections should be 'alive'
- fakeConnection.closed = false;
- assertTrue(sourceConnection.isAlive());
-
- //failed connections should not be 'alive'
- fakeConnection.fail = true;
- assertFalse(sourceConnection.isAlive());
-
- }
-
- /**
- * Tests JDBCSourceConnection.isConnectionAlive() with a null ConnectionStrategy
- * @since 4.3
- */
- public void testIsAliveNullStrategy() throws Exception {
- JDBCSourceConnection sourceConnection = new JDBCSourceConnection(connection, environment, new Translator() {
- @Override
- public String getConnectionTestQuery() {
- return null;
- }
- });
-
- //closed connections should not be 'alive'
- fakeConnection.closed = true;
- assertFalse(sourceConnection.isAlive());
-
- //open connections should be 'alive'
- fakeConnection.closed = false;
- assertTrue(sourceConnection.isAlive());
-
- //without a strategy, failed connections are detected as 'alive'
- fakeConnection.fail = true;
- assertTrue(sourceConnection.isAlive());
-
- }
-
-}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,26 +25,23 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Arrays;
-import java.util.Properties;
import org.junit.Test;
import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorLogger;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-import org.teiid.connector.language.IInsert;
-import org.teiid.connector.language.IInsertExpressionValueSource;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.language.Insert;
+import org.teiid.connector.language.ExpressionValueSource;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
public class TestJDBCUpdateExecution {
@Test public void testBulkUpdate() throws Exception {
- ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "insert into bqt1.smalla (intkey, intnum) values (1, 2)"); //$NON-NLS-1$
- ILiteral value = ((ILiteral)((IInsertExpressionValueSource)((IInsert)command).getValueSource()).getValues().get(0));
- ILiteral value1 = ((ILiteral)((IInsertExpressionValueSource)((IInsert)command).getValueSource()).getValues().get(1));
+ Command command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "insert into BQT1.SmallA (IntKey, IntNum) values (1, 2)"); //$NON-NLS-1$
+ Literal value = ((Literal)((ExpressionValueSource)((Insert)command).getValueSource()).getValues().get(0));
+ Literal value1 = ((Literal)((ExpressionValueSource)((Insert)command).getValueSource()).getValues().get(1));
value.setMultiValued(true);
value.setBindValue(true);
value.setValue(Arrays.asList(1, 2));
@@ -55,9 +52,12 @@
PreparedStatement p = Mockito.mock(PreparedStatement.class);
Mockito.stub(p.executeBatch()).toReturn(new int [] {1, 1});
Mockito.stub(connection.prepareStatement("INSERT INTO SmallA (IntKey, IntNum) VALUES (?, ?)")).toReturn(p); //$NON-NLS-1$
- Translator sqlTranslator = new Translator();
- ExecutionContext context = EnvironmentUtility.createSecurityContext("user"); //$NON-NLS-1$
- JDBCUpdateExecution updateExecution = new JDBCUpdateExecution(command, connection, sqlTranslator, Mockito.mock(ConnectorLogger.class), new Properties(), context);
+
+ JDBCManagedConnectionFactory config = Mockito.mock(JDBCManagedConnectionFactory.class);
+ Mockito.stub(config.getExtensionTranslationClass()).toReturn(new Translator());
+ Mockito.stub(config.getLogger()).toReturn(Mockito.mock(ConnectorLogger.class));
+
+ JDBCUpdateExecution updateExecution = new JDBCUpdateExecution(command, connection, Mockito.mock(ExecutionContext.class), config);
updateExecution.execute();
Mockito.verify(p, Mockito.times(2)).addBatch();
}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.class)
===================================================================
(Binary files differ)
Deleted: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,69 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.connector.jdbc;
-
-import static org.junit.Assert.*;
-
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
-
-import junit.framework.Assert;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.cdk.unittest.FakeTranslationFactory;
-
-public class TranslationHelper {
-
- public static final String PARTS_VDB = "/PartsSupplier.vdb"; //$NON-NLS-1$
- public static final String BQT_VDB = "/bqt.vdb"; //$NON-NLS-1$
-
- public static ICommand helpTranslate(String vdbFileName, String sql) {
- TranslationUtility util = null;
- if (PARTS_VDB.equals(vdbFileName)) {
- util = new TranslationUtility(TranslationHelper.class.getResource(vdbFileName));
- } else if (BQT_VDB.equals(vdbFileName)){
- util = FakeTranslationFactory.getInstance().getBQTTranslationUtility();
- } else {
- Assert.fail("unknown vdb"); //$NON-NLS-1$
- }
- return util.parseCommand(sql);
- }
-
- public static void helpTestVisitor(String vdb, String input, String expectedOutput, Translator translator) throws ConnectorException {
- // Convert from sql to objects
- ICommand obj = helpTranslate(vdb, input);
-
- helpTestVisitor(expectedOutput, translator, obj);
- }
-
- public static void helpTestVisitor(String expectedOutput,
- Translator translator, ICommand obj) throws ConnectorException {
- TranslatedCommand tc = new TranslatedCommand(EnvironmentUtility.createSecurityContext("user"), translator); //$NON-NLS-1$
- tc.translateCommand(obj);
- assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
- }
-
-}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java)
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java (rev 0)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.connector.jdbc;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Collection;
+
+import junit.framework.Assert;
+
+import org.mockito.Mockito;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.translator.TranslatedCommand;
+import org.teiid.connector.jdbc.translator.Translator;
+import org.teiid.connector.language.Command;
+
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.cdk.unittest.FakeTranslationFactory;
+import com.metamatrix.core.MetaMatrixRuntimeException;
+import com.metamatrix.query.function.metadata.FunctionMetadataReader;
+import com.metamatrix.query.function.metadata.FunctionMethod;
+
+public class TranslationHelper {
+
+ public static final String PARTS_VDB = "/PartsSupplier.vdb"; //$NON-NLS-1$
+ public static final String BQT_VDB = "/bqt.vdb"; //$NON-NLS-1$
+
+ public static Command helpTranslate(String vdbFileName, String sql) {
+ return helpTranslate(vdbFileName, null, sql);
+ }
+
+ public static Command helpTranslate(String vdbFileName, String udf, String sql) {
+ TranslationUtility util = null;
+ if (PARTS_VDB.equals(vdbFileName)) {
+ util = new TranslationUtility(TranslationHelper.class.getResource(vdbFileName));
+ } else if (BQT_VDB.equals(vdbFileName)){
+ util = FakeTranslationFactory.getInstance().getBQTTranslationUtility();
+ } else {
+ Assert.fail("unknown vdb"); //$NON-NLS-1$
+ }
+
+ if (udf != null) {
+ try {
+ Collection <FunctionMethod> methods = FunctionMetadataReader.loadFunctionMethods(TranslationHelper.class.getResource(udf).openStream());
+ util.setUDF(methods);
+ } catch (IOException e) {
+ throw new MetaMatrixRuntimeException("failed to load UDF");
+ }
+ }
+ return util.parseCommand(sql);
+ }
+
+ public static void helpTestVisitor(String vdb, String input, String expectedOutput, Translator translator) throws ConnectorException {
+ helpTestVisitor(vdb,null,input, expectedOutput, translator);
+ }
+
+ public static void helpTestVisitor(String vdb, String udf, String input, String expectedOutput, Translator translator) throws ConnectorException {
+ // Convert from sql to objects
+ Command obj = helpTranslate(vdb, udf, input);
+
+ helpTestVisitor(expectedOutput, translator, obj);
+ }
+
+ public static void helpTestVisitor(String expectedOutput,
+ Translator translator, Command obj) throws ConnectorException {
+ TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), translator);
+ tc.translateCommand(obj);
+ assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+ }
+
+}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/access/TestAccessSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/access/TestAccessSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/access/TestAccessSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,17 +22,16 @@
package org.teiid.connector.jdbc.access;
-import java.util.Properties;
+import junit.framework.TestCase;
+import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.access.AccessSQLTranslator;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.Command;
-import junit.framework.TestCase;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.cdk.unittest.FakeTranslationFactory;
@@ -46,7 +45,7 @@
static {
try {
TRANSLATOR = new AccessSQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize( Mockito.mock(JDBCManagedConnectionFactory.class));
} catch(ConnectorException e) {
e.printStackTrace();
}
@@ -54,9 +53,9 @@
public void helpTestVisitor(String input, String expectedOutput) throws ConnectorException {
// Convert from sql to objects
- ICommand obj = FakeTranslationFactory.getInstance().getBQTTranslationUtility().parseCommand(input);
+ Command obj = FakeTranslationFactory.getInstance().getBQTTranslationUtility().parseCommand(input);
- TranslatedCommand tc = new TranslatedCommand(EnvironmentUtility.createSecurityContext("user"), TRANSLATOR);
+ TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), TRANSLATOR);
tc.translateCommand(obj);
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2ConvertModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2ConvertModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2ConvertModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -26,25 +26,24 @@
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.LanguageFactory;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.query.unittest.TimestampUtil;
/**
*/
public class TestDB2ConvertModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestSybaseConvertModifier.
@@ -54,17 +53,17 @@
super(name);
}
- public String helpGetString(IExpression expr) throws Exception {
+ public String helpGetString(Expression expr) throws Exception {
DB2SQLTranslator trans = new DB2SQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(expr);
return sqlVisitor.toString();
}
- public void helpTest(IExpression srcExpression, String tgtType, String expectedExpression) throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ public void helpTest(Expression srcExpression, String tgtType, String expectedExpression) throws Exception {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
Arrays.asList(
srcExpression,
LANG_FACTORY.createLiteral(tgtType, String.class)),
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -24,17 +24,16 @@
import static org.junit.Assert.assertEquals;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.Command;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.cdk.api.TranslationUtility;
import com.metamatrix.cdk.unittest.FakeTranslationFactory;
import com.metamatrix.core.util.UnitTestUtil;
@@ -48,7 +47,7 @@
@BeforeClass
public static void setUp() throws ConnectorException {
TRANSLATOR = new DB2SQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
public String getTestVDB() {
@@ -57,11 +56,9 @@
public void helpTestVisitor(TranslationUtility util, String input, String expectedOutput) throws ConnectorException {
// Convert from sql to objects
- ICommand obj = util.parseCommand(input);
+ Command obj = util.parseCommand(input);
- ExecutionContext context = EnvironmentUtility.createSecurityContext("user"); //$NON-NLS-1$
-
- TranslatedCommand tc = new TranslatedCommand(context, TRANSLATOR);
+ TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), TRANSLATOR);
tc.translateCommand(obj);
assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,14 +22,12 @@
package org.teiid.connector.jdbc.derby;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
-import com.metamatrix.cdk.api.EnvironmentUtility;
/**
*/
@@ -40,7 +38,7 @@
@BeforeClass
public static void setUp() throws ConnectorException {
TRANSLATOR = new DerbySQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
@Test
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,15 +22,12 @@
package org.teiid.connector.jdbc.h2;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
public class TestH2Translator {
private static H2Translator TRANSLATOR;
@@ -38,7 +35,7 @@
@BeforeClass
public static void setUp() throws ConnectorException {
TRANSLATOR = new H2Translator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
@Test public void testTimestampDiff() throws Exception {
Deleted: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,54 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.connector.jdbc.mysql;
-
-import java.util.Properties;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.TranslationHelper;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
-/**
- */
-public class TestMySQL5Translator {
-
- private static MySQL5Translator TRANSLATOR;
-
- @BeforeClass public static void oneTimeSetup() throws ConnectorException {
- TRANSLATOR = new MySQL5Translator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
- }
-
- @Test public void testChar() throws Exception {
- String input = "SELECT intkey, CHR(CONVERT(bigintegervalue, integer)) FROM BQT1.MediumA"; //$NON-NLS-1$
- String output = "SELECT MediumA.IntKey, char(cast(MediumA.BigIntegerValue AS signed) USING ASCII) FROM MediumA"; //$NON-NLS-1$
-
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
- input,
- output, TRANSLATOR);
- }
-
-}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java)
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java (rev 0)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQL5Translator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,51 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.connector.jdbc.mysql;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
+
+/**
+ */
+public class TestMySQL5Translator {
+
+ private static MySQL5Translator TRANSLATOR;
+
+ @BeforeClass public static void oneTimeSetup() throws ConnectorException {
+ TRANSLATOR = new MySQL5Translator();
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
+ }
+
+ @Test public void testChar() throws Exception {
+ String input = "SELECT intkey, CHR(CONVERT(bigintegervalue, integer)) FROM BQT1.MediumA"; //$NON-NLS-1$
+ String output = "SELECT MediumA.IntKey, char(cast(MediumA.BigIntegerValue AS signed) USING ASCII) FROM MediumA"; //$NON-NLS-1$
+
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ input,
+ output, TRANSLATOR);
+ }
+
+}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.class)
===================================================================
(Binary files differ)
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,16 +22,13 @@
package org.teiid.connector.jdbc.mysql;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
/**
*/
public class TestMySQLTranslator {
@@ -40,7 +37,7 @@
@BeforeClass public static void oneTimeSetup() throws ConnectorException {
TRANSLATOR = new MySQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
private String getTestVDB() {
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -24,25 +24,23 @@
import java.sql.Timestamp;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.query.unittest.TimestampUtil;
/**
*/
public class TestDayWeekQuarterFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestHourFunctionModifier.
@@ -52,13 +50,13 @@
super(name);
}
- public void helpTestMod(ILiteral c, String format, String expectedStr) throws Exception {
- IFunction func = LANG_FACTORY.createFunction(format,
+ public void helpTestMod(Literal c, String format, String expectedStr) throws Exception {
+ Function func = LANG_FACTORY.createFunction(format,
Arrays.asList(c),
String.class);
OracleSQLTranslator trans = new OracleSQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -66,25 +64,25 @@
}
public void test1() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, SourceSystemFunctions.DAYOFYEAR,
"to_number(TO_CHAR({ts '2004-01-21 10:05:00.0'}, 'DDD'))"); //$NON-NLS-1$
}
public void test2() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, SourceSystemFunctions.DAYOFYEAR,
"to_number(TO_CHAR({d '2004-01-21'}, 'DDD'))"); //$NON-NLS-1$
}
public void test9() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, SourceSystemFunctions.QUARTER,
"to_number(TO_CHAR({ts '2004-01-21 10:05:00.0'}, 'Q'))"); //$NON-NLS-1$
}
public void test10() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, SourceSystemFunctions.QUARTER,
"to_number(TO_CHAR({d '2004-01-21'}, 'Q'))"); //$NON-NLS-1$
}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLeftOrRightFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLeftOrRightFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLeftOrRightFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -23,23 +23,20 @@
package org.teiid.connector.jdbc.oracle;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
/**
*/
public class TestLeftOrRightFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestHourFunctionModifier.
@@ -49,13 +46,13 @@
super(name);
}
- public void helpTestMod(ILiteral c, ILiteral d, String target, String expectedStr) throws Exception {
- IFunction func = LANG_FACTORY.createFunction(target,
+ public void helpTestMod(Literal c, Literal d, String target, String expectedStr) throws Exception {
+ Function func = LANG_FACTORY.createFunction(target,
Arrays.asList( c, d ),
String.class);
OracleSQLTranslator trans = new OracleSQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -63,15 +60,15 @@
}
public void test1() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral("1234214", String.class); //$NON-NLS-1$
- ILiteral count = LANG_FACTORY.createLiteral(new Integer(11), Integer.class);
+ Literal arg1 = LANG_FACTORY.createLiteral("1234214", String.class); //$NON-NLS-1$
+ Literal count = LANG_FACTORY.createLiteral(new Integer(11), Integer.class);
helpTestMod(arg1, count, "left", //$NON-NLS-1$
"SUBSTR('1234214', 1, 11)"); //$NON-NLS-1$
}
public void test2() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral("1234214", String.class); //$NON-NLS-1$
- ILiteral count = LANG_FACTORY.createLiteral(new Integer(2), Integer.class);
+ Literal arg1 = LANG_FACTORY.createLiteral("1234214", String.class); //$NON-NLS-1$
+ Literal count = LANG_FACTORY.createLiteral(new Integer(2), Integer.class);
helpTestMod(arg1, count, "right", //$NON-NLS-1$
"SUBSTR('1234214', (-1 * 2))"); //$NON-NLS-1$
}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLog10FunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLog10FunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestLog10FunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,20 +25,19 @@
import java.util.Arrays;
import java.util.List;
-import org.teiid.connector.jdbc.oracle.Log10FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.visitor.util.SQLStringVisitor;
-
import junit.framework.TestCase;
-import com.metamatrix.cdk.CommandBuilder;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.visitor.util.SQLStringVisitor;
/**
*/
public class TestLog10FunctionModifier extends TestCase {
-
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
+
/**
* Constructor for TestLog10FunctionModifier.
* @param name
@@ -48,21 +47,21 @@
}
public void testModifier() {
- ILiteral arg = CommandBuilder.getLanuageFactory().createLiteral(new Double(5.2), Double.class);
- IFunction func = CommandBuilder.getLanuageFactory().createFunction("log10", Arrays.asList(arg), Double.class); //$NON-NLS-1$
+ Literal arg = LANG_FACTORY.createLiteral(new Double(5.2), Double.class);
+ Function func = LANG_FACTORY.createFunction("log10", Arrays.asList(arg), Double.class); //$NON-NLS-1$
- Log10FunctionModifier modifier = new Log10FunctionModifier(CommandBuilder.getLanuageFactory());
+ Log10FunctionModifier modifier = new Log10FunctionModifier(LANG_FACTORY);
modifier.translate(func);
assertEquals("log", func.getName()); //$NON-NLS-1$
assertEquals(Double.class, func.getType());
- List<IExpression> outArgs = func.getParameters();
+ List<Expression> outArgs = func.getParameters();
assertEquals(2, outArgs.size());
assertEquals(arg, outArgs.get(1));
- assertTrue(outArgs.get(1) instanceof ILiteral);
- ILiteral newArg = (ILiteral) outArgs.get(0);
+ assertTrue(outArgs.get(1) instanceof Literal);
+ Literal newArg = (Literal) outArgs.get(0);
assertEquals(Integer.class, newArg.getType());
assertEquals(new Integer(10), newArg.getValue());
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -24,24 +24,22 @@
import java.sql.Timestamp;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.query.unittest.TimestampUtil;
/**
*/
public class TestMonthOrDayNameFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestHourFunctionModifier.
@@ -51,13 +49,13 @@
super(name);
}
- public void helpTestMod(ILiteral c, String format, String expectedStr) throws Exception {
- IFunction func = LANG_FACTORY.createFunction(format.toLowerCase()+"name", // "monthname" //$NON-NLS-1$
+ public void helpTestMod(Literal c, String format, String expectedStr) throws Exception {
+ Function func = LANG_FACTORY.createFunction(format.toLowerCase()+"name", // "monthname" //$NON-NLS-1$
Arrays.asList( c ),
String.class);
OracleSQLTranslator trans = new OracleSQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -65,25 +63,25 @@
}
public void test1() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, "Month", //$NON-NLS-1$
"rtrim(TO_CHAR({ts '2004-01-21 10:05:00.0'}, 'Month'))"); //$NON-NLS-1$
}
public void test2() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, "Month", //$NON-NLS-1$
"rtrim(TO_CHAR({d '2004-01-21'}, 'Month'))"); //$NON-NLS-1$
}
public void test3() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 10, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, "Day", //$NON-NLS-1$
"rtrim(TO_CHAR({ts '2004-01-21 10:05:00.0'}, 'Day'))"); //$NON-NLS-1$
}
public void test4() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, "Day", //$NON-NLS-1$
"rtrim(TO_CHAR({d '2004-01-21'}, 'Day'))"); //$NON-NLS-1$
}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleConvertModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleConvertModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleConvertModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,41 +22,40 @@
package org.teiid.connector.jdbc.oracle;
+import static org.junit.Assert.*;
+
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.Arrays;
-import java.util.Properties;
-import static org.junit.Assert.*;
-
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.query.unittest.TimestampUtil;
/**
*/
public class TestOracleConvertModifier {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
+
private static Translator TRANSLATOR = new OracleSQLTranslator();
@BeforeClass public static void oneTimeSetup() throws Exception {
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
- public String helpGetString(IExpression expr) throws Exception {
+ public String helpGetString(Expression expr) throws Exception {
OracleSQLTranslator trans = new OracleSQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = TRANSLATOR.getSQLConversionVisitor();
sqlVisitor.append(expr);
@@ -64,8 +63,8 @@
return sqlVisitor.toString();
}
- public void helpTest(IExpression srcExpression, String tgtType, String expectedExpression) throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ public void helpTest(Expression srcExpression, String tgtType, String expectedExpression) throws Exception {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
Arrays.asList(
srcExpression,
LANG_FACTORY.createLiteral(tgtType, String.class)),
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.class)
===================================================================
(Binary files differ)
Deleted: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,348 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.connector.jdbc.oracle;
-
-import static org.junit.Assert.*;
-
-import java.util.Properties;
-
-import org.junit.Test;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.JDBCPropertyNames;
-import org.teiid.connector.jdbc.oracle.OracleSQLTranslator;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.language.ICommand;
-import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
-
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.core.util.UnitTestUtil;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.unittest.FakeMetadataFacade;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.unittest.FakeMetadataObject;
-import com.metamatrix.query.unittest.FakeMetadataStore;
-
-public class TestOracleSQLConversionVisitor {
- private static ExecutionContext EMPTY_CONTEXT = new FakeExecutionContextImpl();
-
- private String getTestVDB() {
- return UnitTestUtil.getTestDataPath() + "/PartsSupplierOracle.vdb"; //$NON-NLS-1$
- }
-
- private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
- helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, false);
- }
-
- private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
- helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, correctNaming);
- }
-
- private void helpTestVisitor(String vdb, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
- // Convert from sql to objects
- TranslationUtility util = new TranslationUtility(vdb);
- ICommand obj = util.parseCommand(input, correctNaming, true);
- this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
- }
-
- /** Helper method takes a QueryMetadataInterface impl instead of a VDB filename
- * @throws ConnectorException
- */
- private void helpTestVisitor(QueryMetadataInterface metadata, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
- // Convert from sql to objects
- CommandBuilder commandBuilder = new CommandBuilder(metadata);
- ICommand obj = commandBuilder.getCommand(input);
- this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
- }
-
- private void helpTestVisitor(ICommand obj, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
-
-
- // Apply function replacement
- OracleSQLTranslator translator = new OracleSQLTranslator();
- Properties p = new Properties();
- if (dbmsTimeZone != null) {
- p.setProperty(JDBCPropertyNames.DATABASE_TIME_ZONE, dbmsTimeZone);
- }
- translator.initialize(EnvironmentUtility.createEnvironment(p, false));
- // Convert back to SQL
- TranslatedCommand tc = new TranslatedCommand(context, translator);
- tc.translateCommand(obj);
-
- // Check stuff
- assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
- }
-
- /** defect 21775 */
- @Test public void testDateStuff() throws Exception {
- String input = "SELECT ((CASE WHEN month(datevalue) < 10 THEN ('0' || convert(month(datevalue), string)) ELSE convert(month(datevalue), string) END || CASE WHEN dayofmonth(datevalue) < 10 THEN ('0' || convert(dayofmonth(datevalue), string)) ELSE convert(dayofmonth(datevalue), string) END) || convert(year(datevalue), string)), SUM(intkey) FROM bqt1.SMALLA GROUP BY datevalue"; //$NON-NLS-1$
- String output = "SELECT CASE WHEN (CASE WHEN (CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL) OR (CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL) THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE con!
cat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END IS NULL) OR (to_char(EXTRACT(YEAR FROM SmallA.DateValue)) IS NULL) THEN NULL ELSE concat(CASE WHEN (CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL) OR (CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL) THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FR!
OM SmallA.DateValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.D!
ateValue
) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END, to_char(EXTRACT(YEAR FROM SmallA.DateValue))) END, SUM(SmallA.IntKey) FROM SmallA GROUP BY SmallA.DateValue"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
- @Test public void testAliasedGroup() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select y.part_name from parts as y", //$NON-NLS-1$
- null,
- "SELECT y.PART_NAME FROM PARTS y"); //$NON-NLS-1$
- }
-
- @Test public void testDateLiteral() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select {d '2002-12-31'} FROM parts", //$NON-NLS-1$
- null,
- "SELECT {d '2002-12-31'} FROM PARTS"); //$NON-NLS-1$
- }
-
- @Test public void testTimeLiteral() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select {t '13:59:59'} FROM parts", //$NON-NLS-1$
- null,
- "SELECT {ts '1970-01-01 13:59:59'} FROM PARTS"); //$NON-NLS-1$
- }
-
- @Test public void testTimestampLiteral() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select {ts '2002-12-31 13:59:59'} FROM parts", //$NON-NLS-1$
- null,
- "SELECT {ts '2002-12-31 13:59:59.0'} FROM PARTS"); //$NON-NLS-1$
- }
-
- @Test public void testUnionOrderByWithThreeBranches() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select part_id id FROM parts UNION ALL select part_name FROM parts UNION ALL select part_id FROM parts ORDER BY id", //$NON-NLS-1$
- null,
- "SELECT g_2.PART_ID AS c_0 FROM PARTS g_2 UNION ALL SELECT g_1.PART_NAME AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_ID AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
- true);
- }
-
- @Test public void testUnionOrderBy() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select part_id FROM parts UNION ALL select part_name FROM parts ORDER BY part_id", //$NON-NLS-1$
- null,
- "SELECT g_1.PART_ID AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_NAME AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
- true);
- }
-
- @Test public void testUnionOrderBy2() throws Exception {
- helpTestVisitor(getTestVDB(),
- "select part_id as p FROM parts UNION ALL select part_name FROM parts ORDER BY p", //$NON-NLS-1$
- null,
- "SELECT PARTS.PART_ID AS p FROM PARTS UNION ALL SELECT PARTS.PART_NAME FROM PARTS ORDER BY p NULLS FIRST"); //$NON-NLS-1$
- }
-
- @Test public void testUpdateWithFunction() throws Exception {
- String input = "UPDATE bqt1.smalla SET intkey = intkey + 1"; //$NON-NLS-1$
- String output = "UPDATE SmallA SET IntKey = (SmallA.IntKey + 1)"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
-
- /**
- * Oracle's DUAL table is a pseudo-table; element names cannot be
- * fully qualified since the table doesn't really exist nor contain
- * any columns. But this requires modeling the DUAL table in
- * MM as if it were a real physical table, and also modeling any
- * columns in the table. Case 3742
- *
- * @since 4.3
- */
- @Test public void testDUAL() throws Exception {
- String input = "SELECT something FROM DUAL"; //$NON-NLS-1$
- String output = "SELECT something FROM DUAL"; //$NON-NLS-1$
-
- helpTestVisitor(getTestVDB(),
- input,
- null,
- output);
- }
-
- /**
- * Test Oracle's rownum pseudo-column. Not a real column, so it can't
- * be fully-qualified with a table name. MM requires this column to be
- * modeled in any table which the user wants to use rownum with.
- * Case 3739
- *
- * @since 4.3
- */
- @Test public void testROWNUM() throws Exception {
- String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
- String output = "SELECT PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
-
- helpTestVisitor(getTestVDB(),
- input,
- null,
- output);
- }
-
- /**
- * Test Oracle's rownum pseudo-column. Not a real column, so it can't
- * be fully-qualified with a table name. MM requires this column to be
- * modeled in any table which the user wants to use rownum with. Case 3739
- *
- * @since 4.3
- */
- @Test public void testROWNUM2() throws Exception {
- String input = "SELECT part_name FROM parts where rownum < 100"; //$NON-NLS-1$
- String output = "SELECT PARTS.PART_NAME FROM PARTS WHERE ROWNUM < 100"; //$NON-NLS-1$
-
- helpTestVisitor(getTestVDB(),
- input,
- null,
- output);
- }
-
- /**
- * Case 3744. Test that an Oracle-specific db hint, delivered as a String via command
- * payload, is added to the translated SQL.
- *
- * @since 4.3
- */
- @Test public void testOracleCommentPayload() throws Exception {
- String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
- String output = "SELECT /*+ ALL_ROWS */ PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
-
- String hint = "/*+ ALL_ROWS */"; //$NON-NLS-1$
- ExecutionContext context = new ExecutionContextImpl(null, null, null, null, hint, null, "", null, null, null); //$NON-NLS-1$
-
- helpTestVisitor(getTestVDB(),
- input,
- context,
- null,
- output,
- false);
- }
-
- /**
- * reproducing this case relies on the name in source for the table being different from
- * the name
- */
- @Test public void testCase3845() throws Exception {
-
- String input = "SELECT (DoubleNum * 1.0) FROM BQT1.Smalla"; //$NON-NLS-1$
- String output = "SELECT (SmallishA.DoubleNum * 1.0) FROM SmallishA"; //$NON-NLS-1$
-
- FakeMetadataFacade metadata = exampleCase3845();
-
- helpTestVisitor(metadata, input, EMPTY_CONTEXT, null, output);
- }
-
- /** create fake BQT metadata to test this case, name in source is important */
- private FakeMetadataFacade exampleCase3845() {
- // Create models
- FakeMetadataObject bqt1 = FakeMetadataFactory.createPhysicalModel("BQT1"); //$NON-NLS-1$
- FakeMetadataObject bqt1SmallA = FakeMetadataFactory.createPhysicalGroup("BQT1.SmallA", bqt1); //$NON-NLS-1$
- bqt1SmallA.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, "SmallishA");//$NON-NLS-1$
- FakeMetadataObject doubleNum = FakeMetadataFactory.createElement("BQT1.SmallA.DoubleNum", bqt1SmallA, DataTypeManager.DefaultDataTypes.DOUBLE, 0); //$NON-NLS-1$
-
- FakeMetadataStore store = new FakeMetadataStore();
- store.addObject(bqt1);
- store.addObject(bqt1SmallA);
- store.addObject(doubleNum);
- return new FakeMetadataFacade(store);
- }
-
- public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
- helpTestVisitor(vdb, input, null, expectedOutput);
- }
-
- @Test public void testRowLimit2() throws Exception {
- String input = "select intkey from bqt1.smalla limit 100"; //$NON-NLS-1$
- String output = "SELECT * FROM (SELECT SmallA.IntKey FROM SmallA) WHERE ROWNUM <= 100"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
- @Test public void testRowLimit3() throws Exception {
- String input = "select intkey from bqt1.smalla limit 50, 100"; //$NON-NLS-1$
- String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
- @Test public void testLimitWithNestedInlineView() throws Exception {
- String input = "select max(intkey), stringkey from (select intkey, stringkey from bqt1.smalla order by intkey limit 100) x group by stringkey"; //$NON-NLS-1$
- String output = "SELECT MAX(x.intkey), x.stringkey FROM (SELECT * FROM (SELECT SmallA.IntKey, SmallA.StringKey FROM SmallA ORDER BY intkey NULLS FIRST) WHERE ROWNUM <= 100) x GROUP BY x.stringkey"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
- @Test public void testExceptAsMinus() throws Exception {
- String input = "select intkey, intnum from bqt1.smalla except select intnum, intkey from bqt1.smallb"; //$NON-NLS-1$
- String output = "SELECT SmallA.IntKey, SmallA.IntNum FROM SmallA MINUS SELECT SmallB.IntNum, SmallB.IntKey FROM SmallB"; //$NON-NLS-1$
-
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
- input,
- EMPTY_CONTEXT, null, output);
- }
-
- @Test public void testConcat2_useLiteral() throws Exception {
- String sql = "select concat2(stringnum,'_xx') from BQT1.Smalla"; //$NON-NLS-1$
- String expected = "SELECT concat(nvl(SmallA.StringNum, ''), '_xx') FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
- }
-
- @Test public void testConcat2() throws Exception {
- String sql = "select concat2(stringnum, stringnum) from BQT1.Smalla"; //$NON-NLS-1$
- String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(nvl(SmallA.StringNum, ''), nvl(SmallA.StringNum, '')) END FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
- }
-
- @Test public void testConcat() throws Exception {
- String sql = "select concat(stringnum, stringkey) from BQT1.Smalla"; //$NON-NLS-1$
- String expected = "SELECT CASE WHEN (SmallA.StringNum IS NULL) OR (SmallA.StringKey IS NULL) THEN NULL ELSE concat(SmallA.StringNum, SmallA.StringKey) END FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
- }
-
- @Test public void testConcat_withLiteral() throws Exception {
- String sql = "select stringnum || '1' from BQT1.Smalla"; //$NON-NLS-1$
- String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(SmallA.StringNum, '1') END FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
- }
-
- @Test public void testRowLimitWithUnionOrderBy() throws Exception {
- String input = "(select intkey from bqt1.smalla limit 50, 100) union select intnum from bqt1.smalla order by intkey"; //$NON-NLS-1$
- String output = "SELECT c_0 FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT g_1.IntKey AS c_0 FROM SmallA g_1) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50 UNION SELECT g_0.IntNum AS c_0 FROM SmallA g_0 ORDER BY c_0 NULLS FIRST"; //$NON-NLS-1$
-
- CommandBuilder commandBuilder = new CommandBuilder(FakeMetadataFactory.exampleBQTCached());
- ICommand obj = commandBuilder.getCommand(input, true, true);
- this.helpTestVisitor(obj, EMPTY_CONTEXT, null, output);
- }
-
-}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.class)
===================================================================
(Binary files differ)
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,86 +22,70 @@
package org.teiid.connector.jdbc.oracle;
-import java.io.File;
-import java.net.URL;
+import static org.junit.Assert.*;
+
+import java.util.List;
import java.util.Properties;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.JDBCPropertyNames;
import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
+import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.cdk.unittest.FakeTranslationFactory;
-import com.metamatrix.query.function.FunctionLibraryManager;
-import com.metamatrix.query.function.UDFSource;
+import com.metamatrix.cdk.CommandBuilder;
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.core.util.UnitTestUtil;
+import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.query.unittest.FakeMetadataFactory;
+import com.metamatrix.query.unittest.RealMetadataFactory;
public class TestOracleTranslator {
/**
* An instance of {@link Translator} which has already been initialized.
*/
- private static Translator TRANSLATOR;
+ private Translator TRANSLATOR;
+ private String UDF = "/OracleSpatialFunctions.xmi"; //$NON-NLS-1$;
+ private static ExecutionContext EMPTY_CONTEXT = new FakeExecutionContextImpl();
- @BeforeClass public static void oneTimeSetup() throws Exception {
- TRANSLATOR = new OracleSQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
- // Define a UDFSource to hold the reference to our function definitions
- File udfFile = new File("src/main/resources/OracleSpatialFunctions.xmi"); //$NON-NLS-1$;
- URL[] urls = new URL[0];
- UDFSource udfSource = new UDFSource(udfFile.toURI().toURL(), urls);
- FunctionLibraryManager.deregisterSource(udfSource);
- FunctionLibraryManager.registerSource(udfSource);
+ @Before
+ public void setup() throws Exception {
+ TRANSLATOR = new OracleSQLTranslator();
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
- /**
- * Performs cleanup tasks that should be executed after all test methods
- * have been executed. This method should only be executed once and does
- * not protect from multiple executions. It is intended to be executed by
- * the JUnit4 test framework.
- * <p>
- * This method unloads the function definitions supported by the Oracle Spatial
- * Connector from the global instance of <code>FunctionLibraryManager</code>
- * so that they are no longer resolvable during query parsing.
- *
- * @throws Exception
- */
- @AfterClass public static void oneTimeFinished() throws Exception {
- // Define a UDFSource to hold the reference to our function definitions
- File udfFile = new File("src/main/resources/OracleSpatialFunctions.xmi"); //$NON-NLS-1$;
- URL[] urls = new URL[0];
- UDFSource udfSource = new UDFSource(udfFile.toURI().toURL(), urls);
- FunctionLibraryManager.deregisterSource(udfSource);
- }
-
private void helpTestVisitor(String input, String expectedOutput) throws ConnectorException {
- // Convert from sql to objects
- ICommand obj = FakeTranslationFactory.getInstance().getAutoIncrementTranslationUtility().parseCommand(input);
-
- TranslatedCommand tc = new TranslatedCommand(EnvironmentUtility.createSecurityContext("user"), TRANSLATOR); //$NON-NLS-1$
- tc.translateCommand(obj);
-
- // Check stuff
- org.junit.Assert.assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+ helpTestVisitor(getOracleSpecificMetadata(), input, EMPTY_CONTEXT, null, expectedOutput);
}
@Test public void testInsertWithSequnce() throws Exception {
- helpTestVisitor("insert into test.group (e0) values (1)", "INSERT INTO group (e0, e1) VALUES (1, MYSEQUENCE.nextVal)"); //$NON-NLS-1$ //$NON-NLS-2$
+ helpTestVisitor("insert into smalla (doublenum) values (1)", "INSERT INTO SmallishA (DoubleNum, ID) VALUES (1.0, MYSEQUENCE.nextVal)"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testInsertWithSequnce1() throws Exception {
- helpTestVisitor("insert into test.group (e0, e1) values (1, 'x')", "INSERT INTO group (e0, e1) VALUES (1, 'x')"); //$NON-NLS-1$ //$NON-NLS-2$
+ helpTestVisitor("insert into smalla (doublenum, id) values (1, 1)", "INSERT INTO SmallishA (DoubleNum, ID) VALUES (1.0, 1)"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testJoins() throws Exception {
String input = "select smalla.intkey from bqt1.smalla inner join bqt1.smallb on smalla.stringkey=smallb.stringkey cross join bqt1.mediuma"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA INNER JOIN SmallB ON SmallA.StringKey = SmallB.StringKey CROSS JOIN MediumA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input,
output, TRANSLATOR);
}
@@ -110,7 +94,7 @@
String input = "select smalla.intkey from bqt1.smalla cross join (bqt1.smallb cross join bqt1.mediuma)"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA CROSS JOIN (SmallB CROSS JOIN MediumA)"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input,
output, TRANSLATOR);
}
@@ -119,7 +103,7 @@
String input = "SELECT char(convert(STRINGNUM, integer) + 100) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT chr((trunc(to_number(SmallA.StringNum)) + 100)) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -128,7 +112,7 @@
String input = "SELECT convert(STRINGNUM, long) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT trunc(to_number(SmallA.StringNum)) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -137,7 +121,7 @@
String input = "SELECT convert(convert(STRINGNUM, long), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(to_number(SmallA.StringNum))) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -146,7 +130,7 @@
String input = "SELECT convert(convert(TIMESTAMPVALUE, date), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(cast(SmallA.TimestampValue AS date)), 'YYYY-MM-DD') FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -154,7 +138,7 @@
String input = "SELECT convert(convert(TIMEVALUE, timestamp), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(cast(SmallA.TimeValue AS timestamp), 'YYYY-MM-DD HH24:MI:SS.FF') FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -162,7 +146,7 @@
String input = "SELECT nvl(INTNUM, 'otherString') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT nvl(to_char(SmallA.IntNum), 'otherString') FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -170,7 +154,7 @@
String input = "SELECT convert(convert(STRINGNUM, integer), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(to_number(SmallA.StringNum))) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -187,7 +171,7 @@
String input = "SELECT locate(INTNUM, 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', to_char(SmallA.IntNum), 1) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -204,7 +188,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -221,7 +205,7 @@
String input = "SELECT locate(INTNUM, '234567890', 1) FROM BQT1.SMALLA WHERE INTKEY = 26"; //$NON-NLS-1$
String output = "SELECT INSTR('234567890', to_char(SmallA.IntNum), 1) FROM SmallA WHERE SmallA.IntKey = 26"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -238,7 +222,7 @@
String input = "SELECT locate('c', 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT 1 FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -255,7 +239,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', -5) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, 1) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -272,7 +256,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', INTNUM) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, CASE WHEN SmallA.IntNum < 1 THEN 1 ELSE SmallA.IntNum END) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -289,7 +273,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', LOCATE(STRINGNUM, 'chimp') + 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, CASE WHEN (INSTR('chimp', SmallA.StringNum) + 1) < 1 THEN 1 ELSE (INSTR('chimp', SmallA.StringNum) + 1) END) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -298,7 +282,7 @@
String input = "SELECT substring(StringNum, 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT substr(SmallA.StringNum, 1) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -306,7 +290,7 @@
String input = "SELECT substring(StringNum, 1, 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT substr(SmallA.StringNum, 1, 1) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -314,7 +298,7 @@
String input = "SELECT IntKey FROM BQT1.SMALLA UNION SELECT IntKey FROM BQT1.SMALLB ORDER BY IntKey"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA UNION SELECT SmallB.IntKey FROM SmallB ORDER BY IntKey NULLS FIRST"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -322,7 +306,7 @@
String input = "select intkey from bqt1.smalla limit 10, 0"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 10) WHERE ROWNUM_ > 10"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -330,7 +314,7 @@
String input = "select intkey from bqt1.smalla limit 0, 10"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT SmallA.IntKey FROM SmallA) WHERE ROWNUM <= 10"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -338,7 +322,7 @@
String input = "select intkey from bqt1.smalla limit 1, 10"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 11) WHERE ROWNUM_ > 1"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -346,7 +330,7 @@
String input = "select intkey from bqt1.mediuma limit 100"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT MediumA.IntKey FROM MediumA) WHERE ROWNUM <= 100"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -354,7 +338,7 @@
String input = "select intkey from bqt1.mediuma limit 50, 100"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT MediumA.IntKey FROM MediumA) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -362,15 +346,15 @@
@Test public void testConcat2_useLiteral() throws Exception {
String input = "select concat2(stringnum,'_xx') from bqt1.Smalla"; //$NON-NLS-1$
String output = "SELECT concat(nvl(SmallA.StringNum, ''), '_xx') FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@Test public void testConcat2() throws Exception {
String input = "select concat2(stringnum, stringkey) from bqt1.Smalla"; //$NON-NLS-1$
- String output = "SELECT CASE WHEN (SmallA.StringNum IS NULL) AND (SmallA.StringKey IS NULL) THEN NULL ELSE concat(nvl(SmallA.StringNum, ''), nvl(SmallA.StringKey, '')) END FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ String output = "SELECT CASE WHEN SmallA.StringNum IS NULL AND SmallA.StringKey IS NULL THEN NULL ELSE concat(nvl(SmallA.StringNum, ''), nvl(SmallA.StringKey, '')) END FROM SmallA"; //$NON-NLS-1$
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -386,7 +370,7 @@
String input = "SELECT a.INTKEY FROM BQT1.SMALLA A, BQT1.SMALLB B WHERE sdo_relate(A.OBJECTVALUE, b.OBJECTVALUE, 'mask=ANYINTERACT') = true"; //$NON-NLS-1$
String output = "SELECT /*+ ORDERED */ A.IntKey FROM SmallA A, SmallB B WHERE sdo_relate(A.ObjectValue, B.ObjectValue, 'mask=ANYINTERACT') = 'true'"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -402,7 +386,7 @@
String input = "SELECT INTKEY FROM BQT1.SMALLA WHERE sdo_within_distance(OBJECTVALUE, 'SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL)', 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SmallA.ObjectValue, SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -418,7 +402,7 @@
String input = "SELECT INTKEY FROM BQT1.SMALLA WHERE sdo_within_distance('SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL)', OBJECTVALUE, 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), SmallA.ObjectValue, 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -439,7 +423,7 @@
// as the signature was the best match for this query.
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SmallA.StringKey, SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = ?"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -460,7 +444,7 @@
// as the signature was the best match for this query.
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = ?"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -476,7 +460,7 @@
String input = "SELECT a.INTKEY FROM BQT1.SMALLA A, BQT1.SMALLB B WHERE sdo_within_distance(a.OBJECTVALUE, b.OBJECTVALUE, 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT A.IntKey FROM SmallA A, SmallB B WHERE sdo_within_distance(A.ObjectValue, B.ObjectValue, 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -485,7 +469,7 @@
String input = "SELECT log(CONVERT(stringkey, INTEGER)) FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT ln(trunc(to_number(SmallA.StringKey))) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -494,7 +478,7 @@
String input = "SELECT log10(CONVERT(stringkey, INTEGER)) FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT log(10, trunc(to_number(SmallA.StringKey))) FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
@@ -503,9 +487,280 @@
String input = "SELECT char(CONVERT(stringkey, INTEGER)), lcase(stringkey), ucase(stringkey), ifnull(stringkey, 'x') FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT chr(trunc(to_number(SmallA.StringKey))), lower(SmallA.StringKey), upper(SmallA.StringKey), nvl(SmallA.StringKey, 'x') FROM SmallA"; //$NON-NLS-1$
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, UDF,
input, output,
TRANSLATOR);
}
+
+ private String getTestVDB() {
+ return UnitTestUtil.getTestDataPath() + "/PartsSupplierOracle.vdb"; //$NON-NLS-1$
+ }
+
+ private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+ helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, false);
+ }
+ private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
+ helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, correctNaming);
+ }
+
+ private void helpTestVisitor(String vdb, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
+ // Convert from sql to objects
+ TranslationUtility util = new TranslationUtility(vdb);
+ Command obj = util.parseCommand(input, correctNaming, true);
+ this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
+ }
+
+ /** Helper method takes a QueryMetadataInterface impl instead of a VDB filename
+ * @throws ConnectorException
+ */
+ private void helpTestVisitor(QueryMetadataInterface metadata, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+ // Convert from sql to objects
+ CommandBuilder commandBuilder = new CommandBuilder(metadata);
+ Command obj = commandBuilder.getCommand(input);
+ this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
+ }
+
+ private void helpTestVisitor(Command obj, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+ OracleSQLTranslator translator = new OracleSQLTranslator();
+ Properties p = new Properties();
+ if (dbmsTimeZone != null) {
+ p.setProperty(JDBCPropertyNames.DATABASE_TIME_ZONE, dbmsTimeZone);
+ }
+ translator.initialize(new JDBCManagedConnectionFactory());
+ // Convert back to SQL
+ TranslatedCommand tc = new TranslatedCommand(context, translator);
+ tc.translateCommand(obj);
+
+ // Check stuff
+ assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+ }
+
+ /** defect 21775 */
+ @Test public void testDateStuff() throws Exception {
+ String input = "SELECT ((CASE WHEN month(datevalue) < 10 THEN ('0' || convert(month(datevalue), string)) ELSE convert(month(datevalue), string) END || CASE WHEN dayofmonth(datevalue) < 10 THEN ('0' || convert(dayofmonth(datevalue), string)) ELSE convert(dayofmonth(datevalue), string) END) || convert(year(datevalue), string)), SUM(intkey) FROM bqt1.SMALLA GROUP BY datevalue"; //$NON-NLS-1$
+ String output = "SELECT CASE WHEN CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('!
0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END IS NULL OR to_char(EXTRACT(YEAR FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat(CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.Da!
teValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < !
10 THEN
CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END, to_char(EXTRACT(YEAR FROM SmallA.DateValue))) END, SUM(SmallA.IntKey) FROM SmallA GROUP BY SmallA.DateValue"; //$NON-NLS-1$
+
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+ input,
+ EMPTY_CONTEXT, null, output);
+ }
+
+ @Test public void testAliasedGroup() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select y.part_name from parts as y", //$NON-NLS-1$
+ null,
+ "SELECT y.PART_NAME FROM PARTS y"); //$NON-NLS-1$
+ }
+
+ @Test public void testDateLiteral() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select {d '2002-12-31'} FROM parts", //$NON-NLS-1$
+ null,
+ "SELECT {d '2002-12-31'} FROM PARTS"); //$NON-NLS-1$
+ }
+
+ @Test public void testTimeLiteral() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select {t '13:59:59'} FROM parts", //$NON-NLS-1$
+ null,
+ "SELECT {ts '1970-01-01 13:59:59'} FROM PARTS"); //$NON-NLS-1$
+ }
+
+ @Test public void testTimestampLiteral() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select {ts '2002-12-31 13:59:59'} FROM parts", //$NON-NLS-1$
+ null,
+ "SELECT {ts '2002-12-31 13:59:59.0'} FROM PARTS"); //$NON-NLS-1$
+ }
+
+ @Test public void testUnionOrderByWithThreeBranches() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select part_id id FROM parts UNION ALL select part_name FROM parts UNION ALL select part_id FROM parts ORDER BY id", //$NON-NLS-1$
+ null,
+ "SELECT g_2.PART_ID AS c_0 FROM PARTS g_2 UNION ALL SELECT g_1.PART_NAME AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_ID AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
+ true);
+ }
+
+ @Test public void testUnionOrderBy() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select part_id FROM parts UNION ALL select part_name FROM parts ORDER BY part_id", //$NON-NLS-1$
+ null,
+ "SELECT g_1.PART_ID AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_NAME AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
+ true);
+ }
+
+ @Test public void testUnionOrderBy2() throws Exception {
+ helpTestVisitor(getTestVDB(),
+ "select part_id as p FROM parts UNION ALL select part_name FROM parts ORDER BY p", //$NON-NLS-1$
+ null,
+ "SELECT PARTS.PART_ID AS p FROM PARTS UNION ALL SELECT PARTS.PART_NAME FROM PARTS ORDER BY p NULLS FIRST"); //$NON-NLS-1$
+ }
+
+ @Test public void testUpdateWithFunction() throws Exception {
+ String input = "UPDATE bqt1.smalla SET intkey = intkey + 1"; //$NON-NLS-1$
+ String output = "UPDATE SmallA SET IntKey = (SmallA.IntKey + 1)"; //$NON-NLS-1$
+
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+ input,
+ EMPTY_CONTEXT, null, output);
+ }
+
+
+ /**
+ * Oracle's DUAL table is a pseudo-table; element names cannot be
+ * fully qualified since the table doesn't really exist nor contain
+ * any columns. But this requires modeling the DUAL table in
+ * MM as if it were a real physical table, and also modeling any
+ * columns in the table. Case 3742
+ *
+ * @since 4.3
+ */
+ @Test public void testDUAL() throws Exception {
+ String input = "SELECT something FROM DUAL"; //$NON-NLS-1$
+ String output = "SELECT something FROM DUAL"; //$NON-NLS-1$
+
+ helpTestVisitor(getOracleSpecificMetadata(),
+ input,
+ EMPTY_CONTEXT,
+ null,
+ output);
+ }
+
+ /**
+ * Test Oracle's rownum pseudo-column. Not a real column, so it can't
+ * be fully-qualified with a table name. MM requires this column to be
+ * modeled in any table which the user wants to use rownum with.
+ * Case 3739
+ *
+ * @since 4.3
+ */
+ @Test public void testROWNUM() throws Exception {
+ String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
+ String output = "SELECT PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
+
+ helpTestVisitor(getTestVDB(),
+ input,
+ null,
+ output);
+ }
+
+ /**
+ * Test Oracle's rownum pseudo-column. Not a real column, so it can't
+ * be fully-qualified with a table name. MM requires this column to be
+ * modeled in any table which the user wants to use rownum with. Case 3739
+ *
+ * @since 4.3
+ */
+ @Test public void testROWNUM2() throws Exception {
+ String input = "SELECT part_name FROM parts where rownum < 100"; //$NON-NLS-1$
+ String output = "SELECT PARTS.PART_NAME FROM PARTS WHERE ROWNUM < 100"; //$NON-NLS-1$
+
+ helpTestVisitor(getTestVDB(),
+ input,
+ null,
+ output); }
+
+ /**
+ * Case 3744. Test that an Oracle-specific db hint, delivered as a String via command
+ * payload, is added to the translated SQL.
+ *
+ * @since 4.3
+ */
+ @Test public void testOracleCommentPayload() throws Exception {
+ String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
+ String output = "SELECT /*+ ALL_ROWS */ PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
+
+ String hint = "/*+ ALL_ROWS */"; //$NON-NLS-1$
+ ExecutionContext context = new ExecutionContextImpl(null, 1, hint, null, "", null, null, null); //$NON-NLS-1$
+
+ helpTestVisitor(getTestVDB(),
+ input,
+ context,
+ null,
+ output,
+ false);
+ }
+
+ /**
+ * reproducing this case relies on the name in source for the table being different from
+ * the name
+ */
+ @Test public void testCase3845() throws Exception {
+
+ String input = "SELECT (DoubleNum * 1.0) FROM BQT1.Smalla"; //$NON-NLS-1$
+ String output = "SELECT (SmallishA.DoubleNum * 1.0) FROM SmallishA"; //$NON-NLS-1$
+
+ QueryMetadataInterface metadata = getOracleSpecificMetadata();
+
+ helpTestVisitor(metadata, input, EMPTY_CONTEXT, null, output);
+ }
+
+ /** create fake BQT metadata to test this case, name in source is important */
+ private QueryMetadataInterface getOracleSpecificMetadata() {
+ MetadataStore metadataStore = new MetadataStore();
+ Schema foo = RealMetadataFactory.createPhysicalModel("BQT1", metadataStore); //$NON-NLS-1$
+ Table table = RealMetadataFactory.createPhysicalGroup("SmallA", foo); //$NON-NLS-1$
+ Table dual = RealMetadataFactory.createPhysicalGroup("DUAL", foo); //$NON-NLS-1$
+ table.setNameInSource("SmallishA");//$NON-NLS-1$
+ String[] elemNames = new String[] {
+ "DoubleNum", //$NON-NLS-1$
+ "ID", //$NON-NLS-1$
+ };
+ String[] elemTypes = new String[] {
+ DataTypeManager.DefaultDataTypes.DOUBLE,
+ DataTypeManager.DefaultDataTypes.INTEGER,
+ };
+ List<Column> cols = RealMetadataFactory.createElements(table, elemNames, elemTypes);
+ cols.get(1).setAutoIncremented(true);
+ cols.get(1).setNameInSource("ID:SEQUENCE=MYSEQUENCE.nextVal"); //$NON-NLS-1$
+ RealMetadataFactory.createElements(dual, new String[] {"something"}, new String[] {DataTypeManager.DefaultDataTypes.STRING}); //$NON-NLS-1$
+
+ CompositeMetadataStore store = new CompositeMetadataStore(metadataStore);
+ return new TransformationMetadata(null, store, null, null);
+ }
+
+ public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
+ helpTestVisitor(vdb, input, null, expectedOutput);
+ }
+
+ @Test public void testLimitWithNestedInlineView() throws Exception {
+ String input = "select max(intkey), stringkey from (select intkey, stringkey from bqt1.smalla order by intkey limit 100) x group by stringkey"; //$NON-NLS-1$
+ String output = "SELECT MAX(x.intkey), x.stringkey FROM (SELECT * FROM (SELECT SmallA.IntKey, SmallA.StringKey FROM SmallA ORDER BY intkey NULLS FIRST) WHERE ROWNUM <= 100) x GROUP BY x.stringkey"; //$NON-NLS-1$
+
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+ input,
+ EMPTY_CONTEXT, null, output);
+ }
+
+ @Test public void testExceptAsMinus() throws Exception {
+ String input = "select intkey, intnum from bqt1.smalla except select intnum, intkey from bqt1.smallb"; //$NON-NLS-1$
+ String output = "SELECT SmallA.IntKey, SmallA.IntNum FROM SmallA MINUS SELECT SmallB.IntNum, SmallB.IntKey FROM SmallB"; //$NON-NLS-1$
+
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+ input,
+ EMPTY_CONTEXT, null, output);
+ }
+
+ @Test public void testConcat() throws Exception {
+ String sql = "select concat(stringnum, stringkey) from BQT1.Smalla"; //$NON-NLS-1$
+ String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL OR SmallA.StringKey IS NULL THEN NULL ELSE concat(SmallA.StringNum, SmallA.StringKey) END FROM SmallA"; //$NON-NLS-1$
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
+ }
+
+ @Test public void testConcat_withLiteral() throws Exception {
+ String sql = "select stringnum || '1' from BQT1.Smalla"; //$NON-NLS-1$
+ String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(SmallA.StringNum, '1') END FROM SmallA"; //$NON-NLS-1$
+ helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
+ }
+
+ @Test public void testRowLimitWithUnionOrderBy() throws Exception {
+ String input = "(select intkey from bqt1.smalla limit 50, 100) union select intnum from bqt1.smalla order by intkey"; //$NON-NLS-1$
+ String output = "SELECT c_0 FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT g_1.IntKey AS c_0 FROM SmallA g_1) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50 UNION SELECT g_0.IntNum AS c_0 FROM SmallA g_0 ORDER BY c_0 NULLS FIRST"; //$NON-NLS-1$
+
+ CommandBuilder commandBuilder = new CommandBuilder(FakeMetadataFactory.exampleBQTCached());
+ Command obj = commandBuilder.getCommand(input, true, true);
+ this.helpTestVisitor(obj, EMPTY_CONTEXT, null, output);
+ }
+
}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestSubstringFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestSubstringFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestSubstringFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -23,24 +23,21 @@
package org.teiid.connector.jdbc.oracle;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
/**
*/
public class TestSubstringFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
@@ -51,12 +48,12 @@
super(name);
}
- public void helpTestMod(IExpression[] args, String expectedStr) throws Exception {
- IFunction func = LANG_FACTORY.createFunction("substring", //$NON-NLS-1$
+ public void helpTestMod(Expression[] args, String expectedStr) throws Exception {
+ Function func = LANG_FACTORY.createFunction("substring", //$NON-NLS-1$
Arrays.asList(args), TypeFacility.RUNTIME_TYPES.STRING);
OracleSQLTranslator trans = new OracleSQLTranslator();
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -65,7 +62,7 @@
}
public void testTwoArgs() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a.b.c", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(1), Integer.class)
};
@@ -73,7 +70,7 @@
}
public void testThreeArgsWithConstant() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a.b.c", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(3), Integer.class),
LANG_FACTORY.createLiteral(new Integer(1), Integer.class)
@@ -82,16 +79,16 @@
}
public void testThreeArgsWithElement() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a.b.c", String.class), //$NON-NLS-1$
- LANG_FACTORY.createElement("e1", null, null, Integer.class), //$NON-NLS-1$
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(1), Integer.class)
};
helpTestMod(args, "substr('a.b.c', e1, 1)"); //$NON-NLS-1$
}
public void testThreeArgsWithNull() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a.b.c", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(null, Integer.class),
LANG_FACTORY.createLiteral(new Integer(5), Integer.class)
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,14 +22,11 @@
package org.teiid.connector.jdbc.postgresql;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
public class TestPostgreSQLTranslator {
@@ -37,7 +34,7 @@
@BeforeClass public static void setupOnce() throws Exception {
TRANSLATOR = new PostgreSQLTranslator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
public String getTestVDB() {
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.class)
===================================================================
(Binary files differ)
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -23,22 +23,24 @@
package org.teiid.connector.jdbc.sqlserver;
import java.util.List;
-import java.util.Properties;
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.Command;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.cdk.api.TranslationUtility;
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.unittest.FakeMetadataFacade;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.unittest.FakeMetadataObject;
-import com.metamatrix.query.unittest.FakeMetadataStore;
+import com.metamatrix.query.unittest.RealMetadataFactory;
/**
*/
@@ -48,7 +50,7 @@
@BeforeClass
public static void setup() throws ConnectorException {
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
}
public String getTestVDB() {
@@ -141,31 +143,26 @@
output);
}
- @Test public void testUniqueidentifier() throws Exception {
- FakeMetadataObject ldapModel = FakeMetadataFactory.createPhysicalModel("foo"); //$NON-NLS-1$
- FakeMetadataObject table = FakeMetadataFactory.createPhysicalGroup("bar", ldapModel); //$NON-NLS-1$
+ @Test public void testUniqueidentifier() throws Exception {
+ MetadataStore metadataStore = new MetadataStore();
+ Schema foo = RealMetadataFactory.createPhysicalModel("foo", metadataStore); //$NON-NLS-1$
+ Table table = RealMetadataFactory.createPhysicalGroup("bar", foo); //$NON-NLS-1$
String[] elemNames = new String[] {
"x" //$NON-NLS-1$
};
String[] elemTypes = new String[] {
DataTypeManager.DefaultDataTypes.STRING
};
+ List<Column> cols =RealMetadataFactory.createElements(table, elemNames, elemTypes);
- List cols = FakeMetadataFactory.createElements(table, elemNames, elemTypes);
+ Column obj = cols.get(0);
+ obj.setNativeType("uniqueidentifier"); //$NON-NLS-1$
- FakeMetadataObject obj = (FakeMetadataObject) cols.get(0);
- obj.putProperty(FakeMetadataObject.Props.NATIVE_TYPE, "uniqueidentifier"); //$NON-NLS-1$
+ CompositeMetadataStore store = new CompositeMetadataStore(metadataStore);
+ QueryMetadataInterface metadata = new TransformationMetadata(null, store, null, null);
- FakeMetadataStore store = new FakeMetadataStore();
- store.addObject(ldapModel);
- store.addObject(table);
- store.addObjects(cols);
-
- // Create the facade from the store
- QueryMetadataInterface metadata = new FakeMetadataFacade(store);
-
TranslationUtility tu = new TranslationUtility(metadata);
- ICommand command = tu.parseCommand("select max(x) from bar"); //$NON-NLS-1$
+ Command command = tu.parseCommand("select max(x) from bar"); //$NON-NLS-1$
TranslationHelper.helpTestVisitor("SELECT MAX(cast(bar.x as char(36))) FROM bar", trans, command); //$NON-NLS-1$
command = tu.parseCommand("select * from (select max(x) from bar) x"); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseConvertModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseConvertModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseConvertModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -27,19 +27,17 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
-import java.util.Properties;
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.query.unittest.TimestampUtil;
@@ -47,27 +45,27 @@
*/
public class TestSybaseConvertModifier {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
private static SybaseSQLTranslator trans = new SybaseSQLTranslator();
@BeforeClass
public static void setup() throws ConnectorException {
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
}
- public String helpGetString(IExpression expr) throws Exception {
+ public String helpGetString(Expression expr) throws Exception {
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(expr);
return sqlVisitor.toString();
}
- private void helpGetString1(IFunction func, String expectedStr) throws Exception {
+ private void helpGetString1(Function func, String expectedStr) throws Exception {
assertEquals(expectedStr, helpGetString(func));
}
- public void helpTest(IExpression srcExpression, String tgtType, String expectedExpression) throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ public void helpTest(Expression srcExpression, String tgtType, String expectedExpression) throws Exception {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
srcExpression,
LANG_FACTORY.createLiteral(tgtType, String.class)},
DataTypeManager.getDataTypeClass(tgtType));
@@ -78,8 +76,8 @@
// original test -- this is not a drop one anymore
@Test public void testModDrop() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("5", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("integer", String.class) //$NON-NLS-1$
},
@@ -91,8 +89,8 @@
/********************Beginning of cast(date AS INPUT) ******************/
@Test public void testStringToDate() throws Exception {
String dateStr = "2003-12-31"; //$NON-NLS-1$
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(dateStr, String.class),
LANG_FACTORY.createLiteral("date", String.class)}, //$NON-NLS-1$
java.sql.Date.class);
@@ -101,9 +99,9 @@
}
@Test public void testTimestampToDate() throws Exception {
- ILiteral c = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(89, 2, 3, 7, 8, 12, 99999), Timestamp.class);
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Literal c = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(89, 2, 3, 7, 8, 12, 99999), Timestamp.class);
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
c,
LANG_FACTORY.createLiteral("date", String.class)}, //$NON-NLS-1$
java.sql.Date.class);
@@ -115,8 +113,8 @@
/********************Beginning of cast(time AS INPUT) ******************/
@Test public void testStringToTime() throws Exception {
String timeStr = "12:08:07"; //$NON-NLS-1$
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(timeStr, String.class),
LANG_FACTORY.createLiteral("time", String.class)}, //$NON-NLS-1$
java.sql.Time.class);
@@ -125,9 +123,9 @@
}
@Test public void testTimestampToTime() throws Exception {
- ILiteral c = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(89, 2, 3, 7, 8, 12, 99999), Timestamp.class);
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Literal c = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(89, 2, 3, 7, 8, 12, 99999), Timestamp.class);
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
c,
LANG_FACTORY.createLiteral("time", String.class)}, //$NON-NLS-1$
java.sql.Time.class);
@@ -139,8 +137,8 @@
/********************Beginning of cast(timestamp AS INPUT) ******************/
@Test public void testStringToTimestamp() throws Exception {
String timestampStr = "1989-07-09 12:08:07"; //$NON-NLS-1$
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(timestampStr, String.class),
LANG_FACTORY.createLiteral("timestamp", String.class)}, //$NON-NLS-1$
java.sql.Timestamp.class);
@@ -149,8 +147,8 @@
}
@Test public void testTimeToTimestamp() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(TimestampUtil.createTime(12, 2, 3), java.sql.Time.class),
LANG_FACTORY.createLiteral("timestamp", String.class)}, //$NON-NLS-1$
java.sql.Timestamp.class);
@@ -159,8 +157,8 @@
}
@Test public void testDateToTimestamp() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(TimestampUtil.createDate(89, 2, 3), java.sql.Date.class),
LANG_FACTORY.createLiteral("timestamp", String.class)}, //$NON-NLS-1$
java.sql.Timestamp.class);
@@ -171,8 +169,8 @@
/*****************Beginning of cast(string AS input)******************/
@Test public void testBooleanToStringa() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("string", String.class)}, //$NON-NLS-1$
String.class);
@@ -182,8 +180,8 @@
@Test public void testTimestampToString() throws Exception {
Timestamp ts = TimestampUtil.createTimestamp(103, 10, 1, 12, 5, 2, 0);
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(ts, Timestamp.class),
LANG_FACTORY.createLiteral("string", String.class)}, //$NON-NLS-1$
String.class);
@@ -193,8 +191,8 @@
@Test public void testDateToString() throws Exception {
java.sql.Date d = TimestampUtil.createDate(103, 10, 1);
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(d, java.sql.Date.class),
LANG_FACTORY.createLiteral("string", String.class)}, //$NON-NLS-1$
String.class);
@@ -204,8 +202,8 @@
@Test public void testTimeToString() throws Exception {
java.sql.Time t = TimestampUtil.createTime(3, 10, 1);
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(t, java.sql.Time.class),
LANG_FACTORY.createLiteral("string", String.class)}, //$NON-NLS-1$
String.class);
@@ -215,8 +213,8 @@
@Test public void testBigDecimalToString() throws Exception {
java.math.BigDecimal m = new java.math.BigDecimal("-123124534.3"); //$NON-NLS-1$
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(m, java.math.BigDecimal.class),
LANG_FACTORY.createLiteral("string", String.class)}, //$NON-NLS-1$
String.class);
@@ -227,8 +225,8 @@
/***************** Beginning of cast(char AS input) ************/
@Test public void testStringToChar() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("12", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("char", Character.class)}, //$NON-NLS-1$
Character.class);
@@ -239,8 +237,8 @@
/***************** Beginning of cast(boolean AS input) ************/
@Test public void testStringToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("true", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -249,8 +247,8 @@
}
@Test public void testByteToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Byte((byte)1), Byte.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -259,8 +257,8 @@
}
@Test public void testShortToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Short((short) 0), Short.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -269,8 +267,8 @@
}
@Test public void testIntegerToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Integer(1), Integer.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -279,8 +277,8 @@
}
@Test public void testLongToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Long(1), Long.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -289,8 +287,8 @@
}
@Test public void testBigIntegerToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigInteger("1"), java.math.BigInteger.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -299,8 +297,8 @@
}
@Test public void testFloatToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Float((float)1.0), Float.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -309,8 +307,8 @@
}
@Test public void testDoubleToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Double(1.0), Double.class),
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -319,8 +317,8 @@
}
@Test public void testBigDecimalToBoolean() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigDecimal("1.0"), java.math.BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("boolean", Boolean.class)}, //$NON-NLS-1$
Boolean.class);
@@ -333,8 +331,8 @@
/***************** Beginning of cast(byte AS input) ************/
@Test public void testStringToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("12", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -343,8 +341,8 @@
}
@Test public void testBooleanToBytea() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -353,8 +351,8 @@
}
@Test public void testShortToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Short((short) 123), Short.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -363,8 +361,8 @@
}
@Test public void testIntegerToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Integer(1232321), Integer.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -373,8 +371,8 @@
}
@Test public void testLongToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Long(1231232341), Long.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -383,8 +381,8 @@
}
@Test public void testBigIntegerToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigInteger("123"), java.math.BigInteger.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -393,8 +391,8 @@
}
@Test public void testFloatToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Float((float) 123.0), Float.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -403,8 +401,8 @@
}
@Test public void testDoubleToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Double(1.0), Double.class),
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -413,8 +411,8 @@
}
@Test public void testBigDecimalToByte() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigDecimal("12.3"), java.math.BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("byte", Byte.class)}, //$NON-NLS-1$
Byte.class);
@@ -426,8 +424,8 @@
/*****************Beginning of cast(short AS input)************/
@Test public void testStringToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("123", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -436,8 +434,8 @@
}
@Test public void testBooleanToShorta() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -446,8 +444,8 @@
}
@Test public void testByteToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Byte((byte) 12), Byte.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -456,8 +454,8 @@
}
@Test public void testIntegerToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Integer(1232321), Integer.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -466,8 +464,8 @@
}
@Test public void testLongToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Long(1231232341), Long.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -476,8 +474,8 @@
}
@Test public void testBigIntegerToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigInteger("123"), java.math.BigInteger.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -486,8 +484,8 @@
}
@Test public void testFloatToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Float((float) 123.0), Float.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -496,8 +494,8 @@
}
@Test public void testDoubleToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Double(1.0), Double.class),
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -506,8 +504,8 @@
}
@Test public void testBigDecimalToShort() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigDecimal("12.3"), java.math.BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("short", Short.class)}, //$NON-NLS-1$
Short.class);
@@ -518,8 +516,8 @@
/***************** Beginning of cast(integer AS input) ************/
@Test public void testStringToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("12332", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -528,8 +526,8 @@
}
@Test public void testBooleanToIntegera() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -538,8 +536,8 @@
}
@Test public void testBooleanToIntegerb() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(Boolean.FALSE, Boolean.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -548,8 +546,8 @@
}
@Test public void testByteToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Byte((byte)12), Byte.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -558,8 +556,8 @@
}
@Test public void testShortToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Short((short)1243 ), Short.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -568,8 +566,8 @@
}
@Test public void testLongToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Long(1231232341), Long.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -578,8 +576,8 @@
}
@Test public void testBigIntegerToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigInteger("123"), java.math.BigInteger.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -588,8 +586,8 @@
}
@Test public void testFloatToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Float((float) 123.0), Float.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -598,8 +596,8 @@
}
@Test public void testDoubleToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new Double(1.0), Double.class),
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -608,8 +606,8 @@
}
@Test public void testBigDecimalToInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral(new java.math.BigDecimal("12.3"), java.math.BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("integer", Integer.class)}, //$NON-NLS-1$
Integer.class);
@@ -621,8 +619,8 @@
/***************** Beginning of cast(long AS input) ************/
@Test public void testStringToLong() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("12332131413", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("long", Long.class)}, //$NON-NLS-1$
Long.class);
@@ -631,8 +629,8 @@
}
@Test public void testBooleanToLonga() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class), LANG_FACTORY.createLiteral("long", Long.class)}, //$NON-NLS-1$
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class), LANG_FACTORY.createLiteral("long", Long.class)}, //$NON-NLS-1$
Long.class);
helpGetString1(func, "cast(1 AS numeric(19,0))"); //$NON-NLS-1$
@@ -642,8 +640,8 @@
/***************** Beginning of cast(biginteger AS input) ************/
@Test public void testStringToBigInteger() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("12323143241414", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("biginteger", java.math.BigInteger.class)}, //$NON-NLS-1$
java.math.BigInteger.class);
@@ -652,8 +650,8 @@
}
@Test public void testBooleanToBigIntegera() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class), LANG_FACTORY.createLiteral("biginteger", java.math.BigInteger.class)}, //$NON-NLS-1$
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class), LANG_FACTORY.createLiteral("biginteger", java.math.BigInteger.class)}, //$NON-NLS-1$
BigInteger.class);
helpGetString1(func, "cast(1 AS numeric(38, 0))"); //$NON-NLS-1$
@@ -663,8 +661,8 @@
/***************** Beginning of cast(float AS input) ************/
@Test public void testStringToFloat() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("123", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("float", Float.class)}, //$NON-NLS-1$
Float.class);
@@ -673,8 +671,8 @@
}
@Test public void testBooleanToFloata() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("float", Float.class)}, //$NON-NLS-1$
Float.class);
@@ -682,8 +680,8 @@
}
@Test public void testBooleanToFloatb() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.FALSE, Boolean.class),
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.FALSE, Boolean.class),
LANG_FACTORY.createLiteral("float", Float.class)}, //$NON-NLS-1$
Float.class);
@@ -694,8 +692,8 @@
/***************** Beginning of cast(double AS input) ************/
@Test public void testStringToDouble() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("123", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("double", Double.class)}, //$NON-NLS-1$
Double.class);
@@ -704,8 +702,8 @@
}
@Test public void testBooleanToDoublea() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("double", Double.class)}, //$NON-NLS-1$
Double.class);
@@ -713,8 +711,8 @@
}
@Test public void testBooleanToDoubleb() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.FALSE, Boolean.class),
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.FALSE, Boolean.class),
LANG_FACTORY.createLiteral("double", Double.class)}, //$NON-NLS-1$
Double.class);
@@ -725,8 +723,8 @@
/***************** Beginning of cast(bigdecimal AS input) ************/
@Test public void testStringToBigDecimal() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] {
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] {
LANG_FACTORY.createLiteral("123", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("bigdecimal", java.math.BigDecimal.class)}, //$NON-NLS-1$
java.math.BigDecimal.class);
@@ -735,8 +733,8 @@
}
@Test public void testBooleanToBigDecimala() throws Exception {
- IFunction func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
- new IExpression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
+ Function func = LANG_FACTORY.createFunction("convert", //$NON-NLS-1$
+ new Expression[] { LANG_FACTORY.createLiteral(Boolean.TRUE, Boolean.class),
LANG_FACTORY.createLiteral("bigdecimal", java.math.BigDecimal.class)}, //$NON-NLS-1$
java.math.BigDecimal.class);
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -22,19 +22,18 @@
package org.teiid.connector.jdbc.sybase;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
-import java.util.Properties;
-
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.Command;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
/**
*/
public class TestSybaseSQLConversionVisitor {
@@ -43,7 +42,7 @@
@BeforeClass
public static void setup() throws ConnectorException {
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
}
public String getTestVDB() {
@@ -56,9 +55,9 @@
public void helpTestVisitor(String vdb, String input, String expectedOutput) {
// Convert from sql to objects
- ICommand obj = TranslationHelper.helpTranslate(vdb, input);
+ Command obj = TranslationHelper.helpTranslate(vdb, input);
- TranslatedCommand tc = new TranslatedCommand(EnvironmentUtility.createSecurityContext("user"), trans); //$NON-NLS-1$
+ TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), trans);
try {
tc.translateCommand(obj);
} catch (ConnectorException e) {
Deleted: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -1,79 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.connector.jdbc.translator;
-
-import java.sql.Timestamp;
-import java.util.Arrays;
-import java.util.List;
-
-import org.teiid.connector.jdbc.translator.EscapeSyntaxModifier;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.visitor.util.SQLReservedWords;
-
-import junit.framework.TestCase;
-
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.query.unittest.TimestampUtil;
-
-/**
- */
-public class TestEscapeSyntaxModifier extends TestCase {
-
- /**
- * Constructor for TestDropFunctionModifier.
- * @param name
- */
- public TestEscapeSyntaxModifier(String name) {
- super(name);
- }
-
- public void testEscape() {
- ILiteral arg1 = CommandBuilder.getLanuageFactory().createLiteral("arg1", String.class); //$NON-NLS-1$
- ILiteral arg2 = CommandBuilder.getLanuageFactory().createLiteral("arg2", String.class);//$NON-NLS-1$
- IFunction func = CommandBuilder.getLanuageFactory().createFunction("concat", Arrays.asList( arg1, arg2), Integer.class); //$NON-NLS-1$
-
- helpTest(func, "{fn concat('arg1', 'arg2')}");
- }
-
- public void testTimestampAdd() {
- ILiteral arg1 = CommandBuilder.getLanuageFactory().createLiteral(SQLReservedWords.SQL_TSI_HOUR, String.class);
- ILiteral arg2 = CommandBuilder.getLanuageFactory().createLiteral(Integer.valueOf(1), Integer.class);
- ILiteral arg3 = CommandBuilder.getLanuageFactory().createLiteral(TimestampUtil.createTimestamp(0, 0, 0, 0, 0, 0, 0), Timestamp.class);
- IFunction func = CommandBuilder.getLanuageFactory().createFunction("timestampadd", Arrays.asList( arg1, arg2, arg3), Timestamp.class); //$NON-NLS-1$
-
- helpTest(func, "{fn timestampadd(SQL_TSI_HOUR, 1, {ts '1899-12-31 00:00:00.0'})}");
- }
-
- private void helpTest(IFunction func, String expected) {
- EscapeSyntaxModifier mod = new EscapeSyntaxModifier();
-
- List parts = mod.translate(func);
- StringBuffer sb = new StringBuffer();
- for (Object object : parts) {
- sb.append(object);
- }
- assertEquals(expected, sb.toString());
- }
-
-}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java)
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java (rev 0)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.connector.jdbc.translator;
+
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.List;
+
+import org.teiid.connector.jdbc.translator.EscapeSyntaxModifier;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.SQLReservedWords;
+
+import junit.framework.TestCase;
+
+import com.metamatrix.cdk.CommandBuilder;
+import com.metamatrix.query.unittest.TimestampUtil;
+
+/**
+ */
+public class TestEscapeSyntaxModifier extends TestCase {
+
+ /**
+ * Constructor for TestDropFunctionModifier.
+ * @param name
+ */
+ public TestEscapeSyntaxModifier(String name) {
+ super(name);
+ }
+
+ public void testEscape() {
+ Literal arg1 = CommandBuilder.getLanuageFactory().createLiteral("arg1", String.class); //$NON-NLS-1$
+ Literal arg2 = CommandBuilder.getLanuageFactory().createLiteral("arg2", String.class);//$NON-NLS-1$
+ Function func = CommandBuilder.getLanuageFactory().createFunction("concat", Arrays.asList( arg1, arg2), Integer.class); //$NON-NLS-1$
+
+ helpTest(func, "{fn concat('arg1', 'arg2')}");
+ }
+
+ public void testTimestampAdd() {
+ Literal arg1 = CommandBuilder.getLanuageFactory().createLiteral(SQLReservedWords.SQL_TSI_HOUR, String.class);
+ Literal arg2 = CommandBuilder.getLanuageFactory().createLiteral(Integer.valueOf(1), Integer.class);
+ Literal arg3 = CommandBuilder.getLanuageFactory().createLiteral(TimestampUtil.createTimestamp(0, 0, 0, 0, 0, 0, 0), Timestamp.class);
+ Function func = CommandBuilder.getLanuageFactory().createFunction("timestampadd", Arrays.asList( arg1, arg2, arg3), Timestamp.class); //$NON-NLS-1$
+
+ helpTest(func, "{fn timestampadd(SQL_TSI_HOUR, 1, {ts '1899-12-31 00:00:00.0'})}");
+ }
+
+ private void helpTest(Function func, String expected) {
+ EscapeSyntaxModifier mod = new EscapeSyntaxModifier();
+
+ List parts = mod.translate(func);
+ StringBuffer sb = new StringBuffer();
+ for (Object object : parts) {
+ sb.append(object);
+ }
+ assertEquals(expected, sb.toString());
+ }
+
+}
Copied: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.class (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.class)
===================================================================
(Binary files differ)
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestExtractFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -24,28 +24,26 @@
import java.sql.Timestamp;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.language.IElement;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.IGroup;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.language.ColumnReference;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
+import org.teiid.connector.language.Literal;
+import org.teiid.connector.language.NamedTable;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.query.unittest.TimestampUtil;
/**
*/
public class TestExtractFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestMonthFunctionModifier.
@@ -55,15 +53,15 @@
super(name);
}
- public void helpTestMod(IExpression c, String expectedStr, String target) throws Exception {
- IFunction func = LANG_FACTORY.createFunction(target,
+ public void helpTestMod(Expression c, String expectedStr, String target) throws Exception {
+ Function func = LANG_FACTORY.createFunction(target,
Arrays.asList(c),
Integer.class);
ExtractFunctionModifier mod = new ExtractFunctionModifier ();
Translator trans = new Translator();
trans.registerFunctionModifier(target, mod);
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
@@ -71,45 +69,45 @@
assertEquals(expectedStr, sqlVisitor.toString());
}
public void test1() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, "EXTRACT(MONTH FROM {d '2004-01-21'})" , "month"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test2() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, "EXTRACT(MONTH FROM {ts '2004-01-21 17:05:00.0'})", "month"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test3() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, "EXTRACT(YEAR FROM {d '2004-01-21'})", "year"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test4() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, "EXTRACT(YEAR FROM {ts '2004-01-21 17:05:00.0'})", "year"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test5() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createDate(104, 0, 21), java.sql.Date.class);
helpTestMod(arg1, "EXTRACT(DAY FROM {d '2004-01-21'})", "dayofmonth"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test6() throws Exception {
- ILiteral arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
+ Literal arg1 = LANG_FACTORY.createLiteral(TimestampUtil.createTimestamp(104, 0, 21, 17, 5, 0, 0), Timestamp.class);
helpTestMod(arg1, "EXTRACT(DAY FROM {ts '2004-01-21 17:05:00.0'})", "dayofmonth"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test11() throws Exception {
- IGroup group = LANG_FACTORY.createGroup(null, "group", null); //$NON-NLS-1$
- IElement elem = LANG_FACTORY.createElement("col", group, null, TypeFacility.RUNTIME_TYPES.DATE); //$NON-NLS-1$
- helpTestMod(elem, "EXTRACT(DAY FROM col)", "dayofmonth"); //$NON-NLS-1$ //$NON-NLS-2$
+ NamedTable group = LANG_FACTORY.createNamedTable("group", null, null); //$NON-NLS-1$
+ ColumnReference elem = LANG_FACTORY.createColumnReference("col", group, null, TypeFacility.RUNTIME_TYPES.DATE); //$NON-NLS-1$
+ helpTestMod(elem, "EXTRACT(DAY FROM group.col)", "dayofmonth"); //$NON-NLS-1$ //$NON-NLS-2$
}
public void test12() throws Exception {
- IGroup group = LANG_FACTORY.createGroup(null, "group", null); //$NON-NLS-1$
- IElement elem = LANG_FACTORY.createElement("col", group, null, TypeFacility.RUNTIME_TYPES.DATE); //$NON-NLS-1$
- helpTestMod(elem, "(EXTRACT(DOW FROM col) + 1)", SourceSystemFunctions.DAYOFWEEK); //$NON-NLS-1$
+ NamedTable group = LANG_FACTORY.createNamedTable("group", null, null); //$NON-NLS-1$
+ ColumnReference elem = LANG_FACTORY.createColumnReference("col", group, null, TypeFacility.RUNTIME_TYPES.DATE); //$NON-NLS-1$
+ helpTestMod(elem, "(EXTRACT(DOW FROM group.col) + 1)", SourceSystemFunctions.DAYOFWEEK); //$NON-NLS-1$
}
}
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestLocateFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestLocateFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestLocateFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,26 +25,22 @@
import static org.junit.Assert.*;
import java.util.Arrays;
-import java.util.Properties;
import org.junit.Test;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
/**
* Test <code>LOCATEFunctionModifier</code> by invoking its methods with varying
* parameters to validate it performs as designed and expected.
*/
public class TestLocateFunctionModifier {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Create an expression containing a LOCATE function using <code>args</code>
@@ -57,7 +53,7 @@
* @return On success, the modified expression.
* @throws Exception
*/
- public void helpTestLocate(IExpression[] args, String expectedStr) throws Exception {
+ public void helpTestLocate(Expression[] args, String expectedStr) throws Exception {
this.helpTestLocate(LocateFunctionModifier.LOCATE, false, args, expectedStr);
}
@@ -80,16 +76,16 @@
* @return On success, the modified expression.
* @throws Exception
*/
- public void helpTestLocate(final String locateFunctionName, final boolean parameterOrder, IExpression[] args, String expectedStr) throws Exception {
- IExpression param1 = null;
- IExpression param2 = null;
- IExpression param3 = null;
+ public void helpTestLocate(final String locateFunctionName, final boolean parameterOrder, Expression[] args, String expectedStr) throws Exception {
+ Expression param1 = null;
+ Expression param2 = null;
+ Expression param3 = null;
if (args.length > 0 ) param1 = args[0];
if (args.length > 1 ) param2 = args[1];
if (args.length > 2 ) param3 = args[2];
- IFunction func = null;
+ Function func = null;
if (param3 != null) {
func = LANG_FACTORY.createFunction(SourceSystemFunctions.LOCATE,
@@ -101,14 +97,14 @@
Translator trans = new Translator() {
@Override
- public void initialize(ConnectorEnvironment env)
+ public void initialize(JDBCManagedConnectionFactory env)
throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.LOCATE, new LocateFunctionModifier(getLanguageFactory(), locateFunctionName, parameterOrder));
}
};
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -117,7 +113,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str) using constants for both parameters
* returns LOCATE(search_str, source_str).
* <p>
@@ -127,7 +123,7 @@
* @throws Exception
*/
@Test public void testModifySimple() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class) //$NON-NLS-1$
};
@@ -136,7 +132,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str) using constants for both parameters
* returns locate(search_str, source_str).
* <p>
@@ -146,7 +142,7 @@
* @throws Exception
*/
@Test public void testModifySimple2() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class) //$NON-NLS-1$
};
@@ -155,7 +151,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str) using constants for both parameters
* returns INSTR(source_str, search_str).
* <p>
@@ -165,7 +161,7 @@
* @throws Exception
*/
@Test public void testModifySimple3() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class) //$NON-NLS-1$
};
@@ -174,7 +170,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str) using constants for both parameters
* returns locate(search_str, source_str).
* <p>
@@ -184,7 +180,7 @@
* @throws Exception
*/
@Test public void testModifySimple4() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class) //$NON-NLS-1$
};
@@ -193,7 +189,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, 1) using constants for all parameters
* returns INSTR(source_str, search_str, 1).
* <p>
@@ -203,7 +199,7 @@
* @throws Exception
*/
@Test public void testModifyWithStartIndex() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(1, Integer.class)
@@ -213,7 +209,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, 4) using constants for all parameters
* returns LOCATE(search_str, source_str, 5).
* <p>
@@ -223,7 +219,7 @@
* @throws Exception
*/
@Test public void testModifyWithStartIndex2() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(4, Integer.class)
@@ -233,7 +229,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, -5) using constants for all parameters
* returns LOCATE(search_str, source_str, 1).
* <p>
@@ -243,7 +239,7 @@
* @throws Exception
*/
@Test public void testModifyWithStartIndex3() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(-5, Integer.class)
@@ -253,7 +249,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, null) using constants for all parameters
* returns LOCATE(search_str, source_str, NULL).
* <p>
@@ -263,7 +259,7 @@
* @throws Exception
*/
@Test public void testModifyWithStartIndex4() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(null, Integer.class)
@@ -273,7 +269,7 @@
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, e1) using an element for start index
* parameter returns INSTR(source_str, search_str, CASE WHEN e1 < 1 THEN 1 ELSE e1 END).
* <p>
@@ -283,17 +279,17 @@
* @throws Exception
*/
@Test public void testModifyWithElementStartIndex() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
- LANG_FACTORY.createElement("e1", null, null, Integer.class) //$NON-NLS-1$
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class) //$NON-NLS-1$
};
// INSTR / SOURCE_SEARCH_INDEX
helpTestLocate("INSTR", true, args, "INSTR('abcdefg', 'a', CASE WHEN e1 < 1 THEN 1 ELSE e1 END)"); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
- * Test {@link LocateFunctionModifier#modify(IFunction)} to validate a call
+ * Test {@link LocateFunctionModifier#modify(Function)} to validate a call
* to LOCATE(search_str, source_str, e1) using an element for start index
* parameter returns LOCATE(search_str, source_str, CASE WHEN e1 < 0 THEN 0 ELSE e1 END).
* <p>
@@ -303,10 +299,10 @@
* @throws Exception
*/
@Test public void testModifyWithElementStartIndex2() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral("a", String.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral("abcdefg", String.class), //$NON-NLS-1$
- LANG_FACTORY.createElement("e1", null, null, Integer.class) //$NON-NLS-1$
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class) //$NON-NLS-1$
};
// default / default
helpTestLocate(args, "LOCATE('a', 'abcdefg', CASE WHEN e1 < 1 THEN 1 ELSE e1 END)"); //$NON-NLS-1$
Modified: trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestModFunctionModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestModFunctionModifier.java 2010-03-05 15:12:25 UTC (rev 1917)
+++ trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestModFunctionModifier.java 2010-03-05 15:27:12 UTC (rev 1918)
@@ -25,19 +25,17 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
-import java.util.Properties;
import junit.framework.TestCase;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Function;
+import org.teiid.connector.language.LanguageFactory;
import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.EnvironmentUtility;
/**
* Test <code>ModFunctionModifier</code> by invoking its methods with varying
@@ -45,7 +43,7 @@
*/
public class TestModFunctionModifier extends TestCase {
- private static final ILanguageFactory LANG_FACTORY = CommandBuilder.getLanuageFactory();
+ private static final LanguageFactory LANG_FACTORY = new LanguageFactory();
/**
* Constructor for TestModFunctionModifier.
@@ -67,7 +65,7 @@
* @return On success, the modified expression.
* @throws Exception
*/
- public void helpTestMod(IExpression[] args, String expectedStr) throws Exception {
+ public void helpTestMod(Expression[] args, String expectedStr) throws Exception {
this.helpTestMod("MOD", args, expectedStr); //$NON-NLS-1$
}
@@ -85,23 +83,23 @@
* @return On success, the modified expression.
* @throws Exception
*/
- public void helpTestMod(final String modFunctionName, IExpression[] args, String expectedStr) throws Exception {
- IExpression param1 = args[0];
- IExpression param2 = args[1];
+ public void helpTestMod(final String modFunctionName, Expression[] args, String expectedStr) throws Exception {
+ Expression param1 = args[0];
+ Expression param2 = args[1];
- IFunction func = LANG_FACTORY.createFunction(modFunctionName,
+ Function func = LANG_FACTORY.createFunction(modFunctionName,
Arrays.asList(param1, param2), param1.getType());
Translator trans = new Translator() {
@Override
- public void initialize(ConnectorEnvironment env)
+ public void initialize(JDBCManagedConnectionFactory env)
throws ConnectorException {
super.initialize(env);
registerFunctionModifier(SourceSystemFunctions.MOD, new ModFunctionModifier(modFunctionName, getLanguageFactory()));
}
};
- trans.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
+ trans.initialize(new JDBCManagedConnectionFactory());
SQLConversionVisitor sqlVisitor = trans.getSQLConversionVisitor();
sqlVisitor.append(func);
@@ -110,7 +108,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link Integer} constants for both parameters returns
* MOD(x,y). {@link ModFunctionModifier} will be constructed without
* specifying a function name or a supported type list.
@@ -118,7 +116,7 @@
* @throws Exception
*/
public void testTwoIntConst() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Integer(10), Integer.class),
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
@@ -127,7 +125,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link Integer} constants for both parameters returns
* MOD(x,y). {@link ModFunctionModifier} will be constructed with a
* function name of "MOD" but without a supported type list.
@@ -135,7 +133,7 @@
* @throws Exception
*/
public void testTwoIntConst2() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Integer(10), Integer.class),
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
@@ -144,7 +142,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* x % y using {@link Integer} constants for both parameters returns (x % y).
* {@link ModFunctionModifier} will be constructed with a function name of
* "%" and no supported type list.
@@ -152,7 +150,7 @@
* @throws Exception
*/
public void testTwoIntConst5() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Integer(10), Integer.class),
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
@@ -160,7 +158,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link Long} constants for both parameters returns
* MOD(x,y). {@link ModFunctionModifier} will be constructed without
* specifying a function name or a supported type list.
@@ -168,7 +166,7 @@
* @throws Exception
*/
public void testTwoLongConst() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Long(10), Long.class),
LANG_FACTORY.createLiteral(new Long(6), Long.class)
};
@@ -176,7 +174,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link Long} constants for both parameters returns
* MOD(x,y). {@link ModFunctionModifier} will be constructed with a
* function name of "MOD" but without a supported type list.
@@ -184,7 +182,7 @@
* @throws Exception
*/
public void testTwoLongConst2() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Long(10), Long.class),
LANG_FACTORY.createLiteral(new Long(6), Long.class)
};
@@ -192,7 +190,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* x % y using {@link Long} constants for both parameters returns (x % y).
* {@link ModFunctionModifier} will be constructed with a function name of
* "%" and no supported type list.
@@ -200,7 +198,7 @@
* @throws Exception
*/
public void testTwoLongConst5() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Long(10), Long.class),
LANG_FACTORY.createLiteral(new Long(6), Long.class)
};
@@ -208,7 +206,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link Float} constants for both parameters returns
* (x - (TRUNC((x / y), 0) * y)). {@link ModFunctionModifier} will be
* constructed without specifying a function name or a supported type list.
@@ -216,7 +214,7 @@
* @throws Exception
*/
public void testTwoFloatConst() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new Float(10), Float.class),
LANG_FACTORY.createLiteral(new Float(6), Float.class)
};
@@ -224,7 +222,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link BigInteger} constants for both parameters returns
* (x - (TRUNC((x / y), 0) * y)). {@link ModFunctionModifier} will be
* constructed without specifying a function name or a supported type list.
@@ -232,7 +230,7 @@
* @throws Exception
*/
public void testTwoBigIntConst() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new BigInteger("10"), BigInteger.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new BigInteger("6"), BigInteger.class) //$NON-NLS-1$
};
@@ -240,7 +238,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(x,y) using {@link BigDecimal} constants for both parameters returns
* (x - (TRUNC((x / y), 0) * y)). {@link ModFunctionModifier} will be
* constructed without specifying a function name or a supported type list.
@@ -248,7 +246,7 @@
* @throws Exception
*/
public void testTwoBigDecConst() throws Exception {
- IExpression[] args = new IExpression[] {
+ Expression[] args = new Expression[] {
LANG_FACTORY.createLiteral(new BigDecimal("10"), BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new BigDecimal("6"), BigDecimal.class) //$NON-NLS-1$
};
@@ -256,7 +254,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(e1,y) using a {@link Integer} element and a {@link Integer} constant
* for parameters returns MOD(e1,y). {@link ModFunctionModifier} will be
* constructed without specifying a function name or a supported type list.
@@ -264,15 +262,15 @@
* @throws Exception
*/
public void testOneIntElemOneIntConst() throws Exception {
- IExpression[] args = new IExpression[] {
- LANG_FACTORY.createElement("e1", null, null, Integer.class), //$NON-NLS-1$
+ Expression[] args = new Expression[] {
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
helpTestMod(args, "MOD(e1, 6)"); //$NON-NLS-1$
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(e1,y) using a {@link Integer} element and a {@link Integer} constant
* for parameters returns MOD(e1,y). {@link ModFunctionModifier} will be
* constructed with a function name of "MOD" but without a supported type
@@ -281,8 +279,8 @@
* @throws Exception
*/
public void testOneIntElemOneIntConst2() throws Exception {
- IExpression[] args = new IExpression[] {
- LANG_FACTORY.createElement("e1", null, null, Integer.class), //$NON-NLS-1$
+ Expression[] args = new Expression[] {
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
// mod / default
@@ -290,7 +288,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* e1 % y using a {@link Integer} element and a {@link Integer} constant for
* parameters returns (e1 % y). {@link ModFunctionModifier} will be
* constructed with a function name of "%" and no supported type list.
@@ -298,8 +296,8 @@
* @throws Exception
*/
public void testOneIntElemOneIntConst5() throws Exception {
- IExpression[] args = new IExpression[] {
- LANG_FACTORY.createElement("e1", null, null, Integer.class), //$NON-NLS-1$
+ Expression[] args = new Expression[] {
+ LANG_FACTORY.createColumnReference("e1", null, null, Integer.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new Integer(6), Integer.class)
};
// % / default
@@ -307,7 +305,7 @@
}
/**
- * Test {@link ModFunctionModifier#modify(IFunction)} to validate a call to
+ * Test {@link ModFunctionModifier#modify(Function)} to validate a call to
* MOD(e1,y) using a {@link BigDecimal} element and a {@link BigDecimal}
* constant for parameters returns (e1 - (TRUNC((e1 / y), 0) * y)).
* {@link ModFunctionModifier} will be constructed without specifying a
@@ -316,8 +314,8 @@
* @throws Exception
*/
public void testOneBigDecElemOneBigDecConst() throws Exception {
- IExpression[] args = new IExpression[] {
- LANG_FACTORY.createElement("e1", null, null, BigDecimal.class), //$NON-NLS-1$
+ Expression[] args = new Expression[] {
+ LANG_FACTORY.createColumnReference("e1", null, null, BigDecimal.class), //$NON-NLS-1$
LANG_FACTORY.createLiteral(new BigDecimal(6), BigDecimal.class)
};
// default / default
Copied: trunk/connectors/connector-jdbc/src/test/resources/PartsSupplier.vdb (from rev 1900, branches/JCA/connectors/connector-jdbc/src/test/resources/PartsSupplier.vdb)
===================================================================
(Binary files differ)
More information about the teiid-commits
mailing list