Author: rareddy
Date: 2010-05-12 18:19:30 -0400 (Wed, 12 May 2010)
New Revision: 2121
Added:
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/ldap/
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/yahoo/
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/yahoo/i18n.properties
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/yahoo/
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCBaseExecution.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionException.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCProcedureExecution.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCQueryExecution.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCUpdateExecution.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SimpleCapabilities.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeConnection.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeMetadataFactory.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCExecutionFactory.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCProcedureExecution.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCUpdateExecution.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TranslationHelper.java
trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/
trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/ldap/
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Messages.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/MetadataProcessor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/NameUtil.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Relationship.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/RelationshipImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForceExecutionFactory.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForcePlugin.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceCapabilities.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceConnection.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/AbstractUpdateExecution.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DataPayload.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeleteExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedObject.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedResult.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetDeletedExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetUpdatedExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/InsertExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParent.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParentImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/SalesforceProcedureExecution.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdateExecutionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdatedResult.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/salesforce/
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/salesforce/i18n.properties
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/
trunk/connectors/translator-text/src/main/java/org/teiid/translator/
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/text/
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/text/i18n.properties
trunk/connectors/translator-text/src/test/java/org/teiid/translator/
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/
Removed:
trunk/connector-api/src/main/java/org/teiid/connector/metadata/
trunk/connector-api/src/main/java/org/teiid/connector/visitor/
trunk/connector-api/src/main/java/org/teiid/resource/adapter/
trunk/connectors/connector-ldap/src/main/java/org/teiid/resource/cci/
trunk/connectors/connector-ldap/src/test/java/com/
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/cci/
trunk/connectors/connector-salesforce/src/main/java/com/
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/cci/
trunk/connectors/connector-salesforce/src/test/java/com/
trunk/connectors/connector-text/src/main/java/org/teiid/resource/cci/
trunk/connectors/connector-text/src/test/java/com/
trunk/connectors/connector-text/src/test/java/org/
trunk/connectors/sandbox/translator-yahoo/src/main/java/com/
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/resource/
trunk/connectors/sandbox/translator-yahoo/src/test/java/com/
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/resource/adapter/yahoo/
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/
trunk/connectors/translator-ldap/src/main/java/org/teiid/resource/
trunk/connectors/translator-ldap/src/test/java/org/teiid/resource/
trunk/connectors/translator-loopback/src/main/java/com/
trunk/connectors/translator-loopback/src/main/java/org/teiid/resource/
trunk/connectors/translator-loopback/src/test/java/com/
trunk/connectors/translator-loopback/src/test/java/org/teiid/resource/
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/resource/
trunk/connectors/translator-salesforce/src/test/java/org/teiid/resource/
trunk/connectors/translator-text/src/main/java/org/teiid/resource/
trunk/connectors/translator-text/src/main/resources/org/teiid/resource/
trunk/connectors/translator-text/src/test/java/org/teiid/resource/
Modified:
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/ldap/TestLDAPConnection.java
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/TickerCollectorVisitor.java
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooCapabilities.java
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecution.java
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecutionFactory.java
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooPlugin.java
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/yahoo/TestYahooTranslation.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/Translator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/access/AccessCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2Capabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2SQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbyCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbySQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Capabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Translator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixSQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mm/MMCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQL5Translator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleSQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseSQLTranslator.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teiid/TeiidCapabilities.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teradata/TeradataCapabilities.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestExtractFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestLocateFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestModFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestSQLConversionVisitor.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/access/TestAccessSQLTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2ConvertModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2SqlTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/derby/TestDerbySQLTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/h2/TestH2Translator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQL5Translator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQLTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestLeftOrRightFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleConvertModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestSubstringFunctionModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/postgresql/TestPostgreSQLTranslator.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseConvertModifier.java
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseSQLConversionVisitor.java
trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/ldap/TestIQueryToLdapSearchParser.java
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackCapabilities.java
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecution.java
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecutionFactory.java
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoobackAsynch.java
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoopbackExecution.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/DeleteVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/ICriteriaVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/IQueryProvidingVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/InsertVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/JoinQueryVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/UpdateVisitor.java
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/StringToDateTranslator.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextCapabilities.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextConnectionImpl.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextDescriptorPropertyNames.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextExecutionFactory.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextPlugin.java
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextSynchExecution.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestMultiFileTextSynchExecution.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestRowHeaderTextSynchExecution.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnection.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnector.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextSynchExecution.java
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/Util.java
Log:
TEIID-1075:Fixing the package names to "adapter" for "connections" and
"translator" for translators
Copied: trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/ldap
(from rev 2119,
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/cci/ldap)
Modified:
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/ldap/TestLDAPConnection.java
===================================================================
---
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/cci/ldap/TestLDAPConnection.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/connector-ldap/src/test/java/org/teiid/resource/adapter/ldap/TestLDAPConnection.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.cci.ldap;
+package org.teiid.resource.adapter.ldap;
import java.util.Hashtable;
Copied:
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce
(from rev 2119,
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/cci/salesforce)
Modified:
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java
===================================================================
---
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/cci/salesforce/SalesForceManagedConnectionFactory.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.cci.salesforce;
+package org.teiid.resource.adapter.salesforce;
import java.net.MalformedURLException;
import java.net.URL;
Modified:
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
===================================================================
---
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/cci/salesforce/SalesforceConnectionImpl.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.cci.salesforce;
+package org.teiid.resource.adapter.salesforce;
import java.net.URL;
import java.util.ArrayList;
@@ -32,14 +32,14 @@
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
-import org.teiid.resource.adapter.salesforce.Messages;
-import org.teiid.resource.adapter.salesforce.SalesforceConnection;
-import org.teiid.resource.adapter.salesforce.execution.DataPayload;
-import org.teiid.resource.adapter.salesforce.execution.DeletedObject;
-import org.teiid.resource.adapter.salesforce.execution.DeletedResult;
-import org.teiid.resource.adapter.salesforce.execution.UpdatedResult;
import org.teiid.resource.spi.BasicConnection;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.salesforce.Messages;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.execution.DataPayload;
+import org.teiid.translator.salesforce.execution.DeletedObject;
+import org.teiid.translator.salesforce.execution.DeletedResult;
+import org.teiid.translator.salesforce.execution.UpdatedResult;
import com.sforce.soap.partner.CallOptions;
import com.sforce.soap.partner.DeleteResult;
Modified: trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml
===================================================================
--- trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml 2010-05-12 19:17:10
UTC (rev 2120)
+++ trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml 2010-05-12 22:19:30
UTC (rev 2121)
@@ -38,7 +38,7 @@
<outbound-resourceadapter>
<connection-definition>
-
<managedconnectionfactory-class>org.teiid.resource.cci.salesforce.SalesForceManagedConnectionFactory</managedconnectionfactory-class>
+
<managedconnectionfactory-class>org.teiid.resource.adapter.salesforce.SalesForceManagedConnectionFactory</managedconnectionfactory-class>
<config-property>
<description>{$display:"User Name",$description:"Name
value for Salesforce authentication",$required:"true"}</description>
Copied: trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo
(from rev 2119,
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo)
Modified:
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/TickerCollectorVisitor.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/TickerCollectorVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/TickerCollectorVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import java.util.*;
Modified:
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooCapabilities.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/YahooCapabilities.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import java.util.Collections;
import java.util.List;
Modified:
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecution.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/YahooExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import java.io.BufferedReader;
import java.io.IOException;
Modified:
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecutionFactory.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/YahooExecutionFactory.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import org.teiid.language.QueryExpression;
import org.teiid.language.Select;
Modified:
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooPlugin.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/resource/adapter/yahoo/YahooPlugin.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/java/org/teiid/translator/yahoo/YahooPlugin.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import java.util.ResourceBundle;
@@ -28,6 +28,6 @@
public class YahooPlugin {
- public static final String PLUGIN_ID = "org.teiid.resource.adapter.yahoo" ;
//$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.teiid.translator.yahoo" ;
//$NON-NLS-1$
public static final BundleUtil Util = new BundleUtil(PLUGIN_ID,PLUGIN_ID +
".i18n", ResourceBundle.getBundle(PLUGIN_ID + ".i18n")); //$NON-NLS-1$
//$NON-NLS-2$
}
Copied:
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/yahoo/i18n.properties
(from rev 2119,
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/resource/adapter/yahoo/i18n.properties)
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/yahoo/i18n.properties
(rev 0)
+++
trunk/connectors/sandbox/translator-yahoo/src/main/resources/org/teiid/translator/yahoo/i18n.properties 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,33 @@
+#
+# 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.
+#
+
+YahooExecution.URL_BEGIN=http://finance.yahoo.com/d/quotes.csv?s=
+YahooExecution.URL_APPEND_CHAR=+
+YahooExecution.URL_END=&f=sl1d1t1c1ohgv&e=.csv
+TickerCollectorVisitor.Unexpected_type=Unable to parse literal of type: {0}
+TickerCollectorVisitor.Unexpected_expression=Unable to parse expression: {0}
+YahooExecution.No_tickers=Yahoo connector must be called with tickers in the criteria
+YahooExecution.Must_have_criteria=Query against Yahoo connector must have criteria
+YahooExecution.Parse_date_error=Unable to parse date value: {0}, got: {1}
+YahooExecution.Parse_time_value=Unable to parse time value: {0}, got: {1}
+YahooExecution.Invalid_select_symbol=Yahoo connector can''t handle {0} in SELECT
+YahooConnector.proxyPortNotSet=HTTP proxy port is not set. The default port number 80
will be used.
Copied: trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/yahoo
(from rev 2119,
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/resource/adapter/yahoo)
Modified:
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/yahoo/TestYahooTranslation.java
===================================================================
---
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/resource/adapter/yahoo/TestYahooTranslation.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/sandbox/translator-yahoo/src/test/java/org/teiid/translator/yahoo/TestYahooTranslation.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,11 +20,11 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.yahoo;
+package org.teiid.translator.yahoo;
import org.teiid.language.Command;
import org.teiid.language.Select;
-import org.teiid.resource.adapter.yahoo.YahooExecution;
+import org.teiid.translator.yahoo.YahooExecution;
import junit.framework.TestCase;
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCBaseExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCBaseExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCBaseExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCBaseExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,219 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Statement;
+import java.util.List;
+
+import org.teiid.language.Command;
+import org.teiid.language.Literal;
+import org.teiid.logging.LogConstants;
+import org.teiid.logging.LogManager;
+import org.teiid.logging.MessageLevel;
+import org.teiid.translator.BasicExecution;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+
+
+/**
+ */
+public abstract class JDBCBaseExecution extends BasicExecution {
+
+ //
===========================================================================================================================
+ // Fields
+ //
===========================================================================================================================
+
+ // Passed to constructor
+ protected Connection connection;
+ protected Translator sqlTranslator;
+ protected ExecutionContext context;
+
+ // Derived from properties
+ protected boolean trimString;
+ protected int fetchSize;
+ protected int maxResultRows;
+
+ // Set during execution
+ protected Statement statement;
+
+ //
===========================================================================================================================
+ // Constructors
+ //
===========================================================================================================================
+
+ protected JDBCBaseExecution(Connection connection, ExecutionContext context,
JDBCExecutionFactory env, Translator translator) {
+ this.connection = connection;
+ this.sqlTranslator = translator;
+ this.context = context;
+
+ 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 && env.isExceptionOnMaxRows()) {
+ maxResultRows++;
+ }
+ if (maxResultRows > 0) {
+ fetchSize = Math.min(fetchSize, maxResultRows);
+ }
+ }
+
+ /**
+ * Return true if this is a batched update
+ */
+ protected void bindPreparedStatementValues(PreparedStatement stmt, TranslatedCommand
tc, int rowCount) throws SQLException {
+ List<?> params = tc.getPreparedValues();
+
+ for (int row = 0; row < rowCount; row++) {
+ for (int i = 0; i< params.size(); i++) {
+ Literal paramValue = (Literal)params.get(i);
+ Object value = paramValue.getValue();
+ if (paramValue.isMultiValued()) {
+ value = ((List<?>)value).get(row);
+ }
+ Class<?> paramType = paramValue.getType();
+ sqlTranslator.bindValue(stmt, value, paramType, i+1);
+ }
+ if (rowCount > 1) {
+ stmt.addBatch();
+ }
+ }
+ }
+
+ //
===========================================================================================================================
+ // Methods
+ //
===========================================================================================================================
+
+ protected TranslatedCommand translateCommand(Command command) throws
ConnectorException {
+ TranslatedCommand translatedCommand = new TranslatedCommand(context,
sqlTranslator);
+ translatedCommand.translateCommand(command);
+
+ if (translatedCommand.getSql() != null &&
LogManager.isMessageToBeRecorded(LogConstants.CTX_CONNECTOR, MessageLevel.DETAIL)) {
+ LogManager.logDetail("Source-specific command: " +
translatedCommand.getSql()); //$NON-NLS-1$
+ }
+
+ return translatedCommand;
+ }
+
+ /*
+ * @see com.metamatrix.data.Execution#close()
+ */
+ public synchronized void close() throws ConnectorException {
+ try {
+ if (statement != null) {
+ statement.close();
+ }
+ if (connection != null) {
+ connection.close();
+ }
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ /*
+ * @see com.metamatrix.data.Execution#cancel()
+ */
+ public synchronized void cancel() throws ConnectorException {
+ // if both the DBMS and driver support aborting an SQL
+ try {
+ if (statement != null) {
+ statement.cancel();
+ }
+ } catch (SQLException e) {
+ // Defect 16187 - DataDirect does not support the cancel() method for
+ // Statement.cancel() for DB2 and Informix. Here we are tolerant
+ // of these and other JDBC drivers that do not support the cancel()
operation.
+ }
+ }
+
+ protected void setSizeContraints(Statement statement) throws SQLException {
+ if (maxResultRows > 0) {
+ statement.setMaxRows(maxResultRows);
+ }
+ statement.setFetchSize(fetchSize);
+ }
+
+ protected synchronized Statement getStatement() throws SQLException {
+ if (statement != null) {
+ statement.close();
+ statement = null;
+ }
+ statement = connection.createStatement();
+ setSizeContraints(statement);
+ return statement;
+ }
+
+ protected synchronized CallableStatement getCallableStatement(String sql) throws
SQLException {
+ if (statement != null) {
+ statement.close();
+ statement = null;
+ }
+ statement = connection.prepareCall(sql);
+ setSizeContraints(statement);
+ return (CallableStatement)statement;
+ }
+
+ protected synchronized PreparedStatement getPreparedStatement(String sql) throws
SQLException {
+ if (statement != null) {
+ statement.close();
+ statement = null;
+ }
+ statement = connection.prepareStatement(sql);
+ setSizeContraints(statement);
+ return (PreparedStatement)statement;
+ }
+
+ /**
+ * Returns the JDBC connection used by the execution object.
+ *
+ * @return Returns the connection.
+ * @since 4.1.1
+ */
+ public Connection getConnection() {
+ return this.connection;
+ }
+
+ public Translator getSqlTranslator() {
+ return sqlTranslator;
+ }
+
+ public void addStatementWarnings() throws SQLException {
+ SQLWarning warning = this.statement.getWarnings();
+ while (warning != null) {
+ SQLWarning toAdd = warning;
+ warning = toAdd.getNextWarning();
+ toAdd.setNextException(null);
+ if (LogManager.isMessageToBeRecorded(LogConstants.CTX_CONNECTOR,
MessageLevel.DETAIL)) {
+ LogManager.logDetail(context.getRequestIdentifier() + " Warning: ",
warning); //$NON-NLS-1$
+ }
+ context.addWarning(toAdd);
+ }
+ this.statement.clearWarnings();
+ }
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCBaseExecution.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCCapabilities.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCCapabilities.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCCapabilities.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,331 @@
+/*
+ * 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.translator.jdbc;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.teiid.translator.BasicConnectorCapabilities;
+
+
+/**
+ */
+public class JDBCCapabilities extends BasicConnectorCapabilities {
+
+ /**
+ *
+ */
+ public JDBCCapabilities() {
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#getSupportedFunctions()
+ */
+ public List<String> getSupportedFunctions() {
+ return Arrays.asList(new String[] { "+", "-", "*",
"/" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
+
+ /**
+ * @see org.teiid.translator.BasicConnectorCapabilities#getMaxInCriteriaSize()
+ * @since 4.2
+ */
+ public int getMaxInCriteriaSize() {
+ return 1000;
+ }
+
+ @Override
+ public boolean supportsGroupBy() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesAvg()
+ */
+ public boolean supportsAggregatesAvg() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesCount()
+ */
+ public boolean supportsAggregatesCount() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesCountStar()
+ */
+ public boolean supportsAggregatesCountStar() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesDistinct()
+ */
+ public boolean supportsAggregatesDistinct() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesMax()
+ */
+ public boolean supportsAggregatesMax() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesMin()
+ */
+ public boolean supportsAggregatesMin() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAggregatesSum()
+ */
+ public boolean supportsAggregatesSum() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsAliasedGroup()
+ */
+ public boolean supportsAliasedGroup() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsBetweenCriteria()
+ */
+ public boolean supportsBetweenCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsCaseExpressions()
+ */
+ public boolean supportsCaseExpressions() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsCompareCriteriaEquals()
+ */
+ public boolean supportsCompareCriteriaEquals() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsCorrelatedSubqueries()
+ */
+ public boolean supportsCorrelatedSubqueries() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsExistsCriteria()
+ */
+ public boolean supportsExistsCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsFullOuterJoins()
+ */
+ public boolean supportsFullOuterJoins() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsInCriteria()
+ */
+ public boolean supportsInCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsInCriteriaSubquery()
+ */
+ public boolean supportsInCriteriaSubquery() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsIsNullCriteria()
+ */
+ public boolean supportsIsNullCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsLikeCriteria()
+ */
+ public boolean supportsLikeCriteria() {
+ return true;
+ }
+
+ /*
+ * @see
com.metamatrix.data.ConnectorCapabilities#supportsLikeCriteriaEscapeCharacter()
+ */
+ public boolean supportsLikeCriteriaEscapeCharacter() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsNotCriteria()
+ */
+ public boolean supportsNotCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsOrCriteria()
+ */
+ public boolean supportsOrCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsOrderBy()
+ */
+ public boolean supportsOrderBy() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsOrderByUnrelated() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsOuterJoins()
+ */
+ public boolean supportsOuterJoins() {
+ return true;
+ }
+
+ /*
+ * @see
com.metamatrix.data.ConnectorCapabilities#supportsQuantifiedCompareCriteriaAll()
+ */
+ public boolean supportsQuantifiedCompareCriteriaAll() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsScalarSubqueries()
+ */
+ public boolean supportsScalarSubqueries() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsSearchedCaseExpressions()
+ */
+ public boolean supportsSearchedCaseExpressions() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsSelectDistinct()
+ */
+ public boolean supportsSelectDistinct() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.ConnectorCapabilities#supportsSelfJoins()
+ */
+ public boolean supportsSelfJoins() {
+ return true;
+ }
+
+ /**
+ * @see org.teiid.translator.ConnectorCapabilities#supportsInlineViews()
+ */
+ public boolean supportsInlineViews() {
+ return false;
+ }
+
+ /**
+ * @see
org.teiid.translator.ConnectorCapabilities#supportsQuantifiedCompareCriteriaSome()
+ */
+ public boolean supportsQuantifiedCompareCriteriaSome() {
+ return true;
+ }
+
+ /**
+ * @see org.teiid.translator.BasicConnectorCapabilities#supportsSetQueryOrderBy()
+ */
+ @Override
+ public boolean supportsSetQueryOrderBy() {
+ return true;
+ }
+
+ /**
+ * @see org.teiid.translator.ConnectorCapabilities#supportsUnions()
+ */
+ public boolean supportsUnions() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsBulkUpdate() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsBatchedUpdates() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsCompareCriteriaOrdered() {
+ return true;
+ }
+
+ @Override
+ public SupportedJoinCriteria getSupportedJoinCriteria() {
+ return SupportedJoinCriteria.ANY;
+ }
+
+ @Override
+ public boolean supportsHaving() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsInnerJoins() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsSelectExpression() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsInsertWithQueryExpression() {
+ return true;
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCCapabilities.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionException.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCExecutionException.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionException.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionException.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,40 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+
+import org.teiid.translator.ConnectorException;
+
+
+public class JDBCExecutionException extends ConnectorException {
+
+ private static final long serialVersionUID = 1758087499488916573L;
+
+ public JDBCExecutionException(SQLException error,
+ TranslatedCommand... commands) {
+ super(error.getErrorCode(), commands == null ? error.getMessage() :
JDBCPlugin.Util.getString("JDBCQueryExecution.Error_executing_query__1",
//$NON-NLS-1$
+ error.getMessage(), Arrays.toString(commands)));
+ }
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionException.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCExecutionFactory.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,229 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.sql.DataSource;
+
+import org.teiid.core.TeiidException;
+import org.teiid.core.util.PropertiesUtils;
+import org.teiid.core.util.ReflectionHelper;
+import org.teiid.core.util.StringUtil;
+import org.teiid.language.Call;
+import org.teiid.language.Command;
+import org.teiid.language.QueryExpression;
+import org.teiid.metadata.MetadataFactory;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.BasicExecutionFactory;
+import org.teiid.translator.ConnectorCapabilities;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.MetadataProvider;
+import org.teiid.translator.ProcedureExecution;
+import org.teiid.translator.ResultSetExecution;
+import org.teiid.translator.TranslatorProperty;
+import org.teiid.translator.UpdateExecution;
+
+
+/**
+ * JDBC implementation of Connector interface.
+ */
+public class JDBCExecutionFactory extends BasicExecutionFactory implements
MetadataProvider {
+
+ private ConnectorCapabilities capabilities;
+ private Translator sqlTranslator;
+ private boolean useBindVariables;
+ private String databaseTimeZone;
+ private String extensionTranslationClassName;
+ private boolean trimStrings;
+ private boolean useCommentsInSourceQuery;
+ private int fetchSize;
+
+ @Override
+ public void start() throws ConnectorException {
+ super.start();
+ capabilities = getTranslator().getConnectorCapabilities();
+ }
+
+ public Translator getTranslator() throws ConnectorException {
+ if (this.sqlTranslator == null) {
+ try {
+ String className = getExtensionTranslationClassName();
+ if (!StringUtil.isValid(className)) {
+ this.sqlTranslator = new Translator();
+ } else {
+ this.sqlTranslator = (Translator)ReflectionHelper.create(className, null,
Thread.currentThread().getContextClassLoader());
+ }
+ sqlTranslator.initialize(this);
+ } catch (TeiidException e) {
+ throw new ConnectorException(e);
+ }
+ }
+ return this.sqlTranslator;
+ }
+
+ @Override
+ public ConnectorCapabilities getCapabilities() {
+ return capabilities;
+ }
+
+ @TranslatorProperty(name="UseBindVariables", display="Use Bind
Variables", description="Use prepared statements and bind
variables",advanced=true, defaultValue="false")
+ public boolean isUseBindVariables() {
+ return this.useBindVariables;
+ }
+
+ public void setUseBindVariables(boolean useBindVariables) {
+ this.useBindVariables = useBindVariables;
+ }
+
+ @TranslatorProperty(name="DatabaseTimeZone", display="Database time
zone", description="Time zone of the database, if different than Integration
Server", advanced=true)
+ public String getDatabaseTimeZone() {
+ return this.databaseTimeZone;
+ }
+
+ public void setDatabaseTimeZone(String databaseTimeZone) {
+ this.databaseTimeZone = databaseTimeZone;
+ }
+
+ @TranslatorProperty(name="ExtensionTranslationClassName",
display="Extension SQL Translation Class", required=true,
+ defaultValue="org.teiid.translator.jdbc.translator.Translator",
+ allowed= {"org.teiid.translator.jdbc.translator.Translator",
+ "org.teiid.translator.jdbc.access.AccessSQLTranslator",
+ "org.teiid.translator.jdbc.db2.DB2SQLTranslator",
+ "org.teiid.translator.jdbc.derby.DerbySQLTranslator",
+ "org.teiid.translator.jdbc.h2.H2Translator",
+ "org.teiid.translator.jdbc.hsql.HsqlTranslator",
+ "org.teiid.translator.jdbc.mysql.MySQLTranslator",
+ "org.teiid.translator.jdbc.mysql.MySQL5Translator",
+ "org.teiid.translator.jdbc.oracle.OracleSQLTranslator",
+ "org.teiid.translator.jdbc.postgresql.PostgreSQLTranslator",
+ "org.teiid.translator.jdbc.sqlserver.SqlServerSQLTranslator",
+ "org.teiid.translator.jdbc.sybase.SybaseSQLTranslator"
+ })
+ public String getExtensionTranslationClassName() {
+ return this.extensionTranslationClassName;
+ }
+
+ public void setExtensionTranslationClassName(String extensionTranslationClassName) {
+ this.extensionTranslationClassName = extensionTranslationClassName;
+ }
+
+ @TranslatorProperty(name="TrimStrings",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, defaultValue="false")
+ public boolean isTrimStrings() {
+ return this.trimStrings;
+ }
+
+ public void setTrimStrings(boolean trimStrings) {
+ this.trimStrings = trimStrings;
+ }
+
+ @TranslatorProperty(name="UseCommentsInSourceQuery", 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, defaultValue="false")
+ public boolean isUseCommentsInSourceQuery() {
+ return this.useCommentsInSourceQuery;
+ }
+
+ public void setUseCommentsInSourceQuery(boolean useCommentsInSourceQuery) {
+ this.useCommentsInSourceQuery = useCommentsInSourceQuery;
+ }
+
+
+ @TranslatorProperty(name="FetchSize", display="FetCh Size",
description="fetch size used from the connector to its underlying source.",
advanced=true, defaultValue="1024")
+ public int getFetchSize() {
+ return this.fetchSize;
+ }
+
+ @Override
+ public boolean isSourceRequired() {
+ return true;
+ }
+
+ public void setFetchSize(int fetchSize) {
+ this.fetchSize = fetchSize;
+ }
+
+ @Override
+ public ResultSetExecution createResultSetExecution(QueryExpression command,
ExecutionContext executionContext, RuntimeMetadata metadata, Object connectionFactory)
+ throws ConnectorException {
+ try {
+ DataSource ds = (DataSource)connectionFactory;
+ Connection conn = ds.getConnection();
+ //TODO: This is not correct; this should be only called once for connection
creation
+ getTranslator().afterConnectionCreation(conn);
+ return new JDBCQueryExecution(command, conn, executionContext, this,
getTranslator());
+ } catch(SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ @Override
+ public ProcedureExecution createProcedureExecution(Call command, ExecutionContext
executionContext, RuntimeMetadata metadata, Object connectionFactory)
+ throws ConnectorException {
+ try {
+ DataSource ds = (DataSource)connectionFactory;
+ Connection conn = ds.getConnection();
+ //TODO: This is not correct; this should be only called once for connection creation
+ getTranslator().afterConnectionCreation(conn);
+ return new JDBCProcedureExecution(command, conn, executionContext, this,
getTranslator());
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ @Override
+ public UpdateExecution createUpdateExecution(Command command, ExecutionContext
executionContext, RuntimeMetadata metadata, Object connectionFactory)
+ throws ConnectorException {
+ try {
+ DataSource ds = (DataSource)connectionFactory;
+ Connection conn = ds.getConnection();
+
+ //TODO: This is not correct; this should be only called once for connection creation
+ getTranslator().afterConnectionCreation(conn);
+ return new JDBCUpdateExecution(command, conn, executionContext, this,
getTranslator());
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ @Override
+ public void getConnectorMetadata(MetadataFactory metadataFactory, Object
connectionFactory) throws ConnectorException {
+ try {
+ Connection conn = null;
+ try {
+ DataSource ds = (DataSource)connectionFactory;
+ conn = ds.getConnection();
+
+ JDBCMetdataProcessor metadataProcessor = new JDBCMetdataProcessor();
+ PropertiesUtils.setBeanProperties(metadataProcessor,
metadataFactory.getImportProperties(), "importer"); //$NON-NLS-1$
+ metadataProcessor.getConnectorMetadata(conn, metadataFactory);
+ } finally {
+ if (conn != null) {
+ conn.close();
+ }
+ }
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCMetdataProcessor.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,434 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.teiid.core.util.StringUtil;
+import org.teiid.logging.LogManager;
+import org.teiid.metadata.AbstractMetadataRecord;
+import org.teiid.metadata.BaseColumn;
+import org.teiid.metadata.Column;
+import org.teiid.metadata.MetadataFactory;
+import org.teiid.metadata.Procedure;
+import org.teiid.metadata.Table;
+import org.teiid.metadata.BaseColumn.NullType;
+import org.teiid.metadata.ProcedureParameter.Type;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.TypeFacility;
+
+
+/**
+ * Reads from {@link DatabaseMetaData} and creates metadata through the {@link
MetadataFactory}.
+ */
+public class JDBCMetdataProcessor {
+
+ /**
+ * A holder for table records that keeps track of catalog and schema information.
+ */
+ private static class TableInfo {
+ private String catalog;
+ private String schema;
+ private String name;
+ private Table table;
+
+ public TableInfo(String catalog, String schema, String name, Table table) {
+ this.catalog = catalog;
+ this.schema = schema;
+ this.name = name;
+ this.table = table;
+ }
+ }
+
+ private boolean importProcedures;
+ private boolean importKeys;
+ private boolean importIndexes;
+ private String procedureNamePattern;
+ private boolean useFullSchemaName;
+ private String[] tableTypes;
+ private String tableNamePattern;
+ private String catalog;
+ private String schemaPattern;
+ private boolean importApproximateIndexes = true;
+ private boolean widenUnsingedTypes = true;
+ private boolean quoteNameInSource = true;
+ //TODO add an option to not fully qualify name in source
+
+ private Set<String> unsignedTypes = new HashSet<String>();
+ private String quoteString;
+
+ public void getConnectorMetadata(Connection conn, MetadataFactory metadataFactory)
+ throws SQLException, ConnectorException {
+ DatabaseMetaData metadata = conn.getMetaData();
+
+ quoteString = metadata.getIdentifierQuoteString();
+ if (quoteString != null && quoteString.trim().length() == 0) {
+ quoteString = null;
+ }
+
+ if (widenUnsingedTypes) {
+ ResultSet rs = metadata.getTypeInfo();
+ while (rs.next()) {
+ String name = rs.getString(1);
+ boolean unsigned = rs.getBoolean(10);
+ if (unsigned) {
+ unsignedTypes.add(name);
+ }
+ }
+ }
+
+ Map<String, TableInfo> tableMap = getTables(metadataFactory, metadata);
+
+ if (importKeys) {
+ getPrimaryKeys(metadataFactory, metadata, tableMap);
+
+ getForeignKeys(metadataFactory, metadata, tableMap);
+ }
+
+ if (importIndexes) {
+ getIndexes(metadataFactory, metadata, tableMap);
+ }
+
+ if (importProcedures) {
+ getProcedures(metadataFactory, metadata);
+ }
+
+ }
+
+ private void getProcedures(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata) throws SQLException, ConnectorException {
+ LogManager.logDetail("JDBCMetadataProcessor - Importing procedures");
//$NON-NLS-1$
+ ResultSet procedures = metadata.getProcedures(catalog, schemaPattern,
procedureNamePattern);
+ while (procedures.next()) {
+ String procedureCatalog = procedures.getString(1);
+ String procedureSchema = procedures.getString(2);
+ String procedureName = procedures.getString(3);
+ String fullProcedureName = getFullyQualifiedName(procedureCatalog, procedureSchema,
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()) {
+ String columnName = columns.getString(4);
+ short columnType = columns.getShort(5);
+ int sqlType = columns.getInt(6);
+ String typeName = columns.getString(7);
+ sqlType = checkForUnsigned(sqlType, typeName);
+ if (columnType == DatabaseMetaData.procedureColumnUnknown) {
+ continue; //there's a good chance this won't work
+ }
+ BaseColumn record = null;
+ if (columnType == DatabaseMetaData.procedureColumnResult) {
+ Column column = metadataFactory.addProcedureResultSetColumn(columnName,
TypeFacility.getDataTypeNameFromSQLType(sqlType), procedure);
+ record = column;
+ column.setNativeType(typeName);
+ } else {
+ record = metadataFactory.addProcedureParameter(columnName,
TypeFacility.getDataTypeNameFromSQLType(sqlType), Type.values()[columnType], procedure);
+ }
+ record.setPrecision(columns.getInt(8));
+ record.setLength(columns.getInt(9));
+ record.setScale(columns.getInt(10));
+ record.setRadix(columns.getInt(11));
+ record.setNullType(NullType.values()[columns.getShort(12)]);
+ record.setAnnotation(columns.getString(13));
+ }
+ }
+ procedures.close();
+ }
+
+ private int checkForUnsigned(int sqlType, String typeName) {
+ if (widenUnsingedTypes && unsignedTypes.contains(typeName)) {
+ switch (sqlType) {
+ case Types.TINYINT:
+ sqlType = Types.SMALLINT;
+ break;
+ case Types.SMALLINT:
+ sqlType = Types.INTEGER;
+ break;
+ case Types.INTEGER:
+ sqlType = Types.BIGINT;
+ break;
+ }
+ }
+ return sqlType;
+ }
+
+ private Map<String, TableInfo> getTables(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata) throws SQLException, ConnectorException {
+ LogManager.logDetail("JDBCMetadataProcessor - Importing tables");
//$NON-NLS-1$
+ ResultSet tables = metadata.getTables(catalog, schemaPattern, tableNamePattern,
tableTypes);
+ Map<String, TableInfo> tableMap = new HashMap<String, TableInfo>();
+ while (tables.next()) {
+ String tableCatalog = tables.getString(1);
+ String tableSchema = tables.getString(2);
+ String tableName = tables.getString(3);
+ String fullName = getFullyQualifiedName(tableCatalog, tableSchema, tableName);
+ Table table = metadataFactory.addTable(useFullSchemaName?fullName:tableName);
+ table.setNameInSource(getFullyQualifiedName(tableCatalog, tableSchema, tableName,
true));
+ table.setSupportsUpdate(true);
+ String remarks = tables.getString(5);
+ table.setAnnotation(remarks);
+ tableMap.put(fullName, new TableInfo(tableCatalog, tableSchema, tableName, table));
+ 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 {
+ LogManager.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;
+ }
+ return name;
+ }
+
+ private void getPrimaryKeys(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata, Map<String, TableInfo> tableMap)
+ throws SQLException, ConnectorException {
+ LogManager.logDetail("JDBCMetadataProcessor - Importing primary keys");
//$NON-NLS-1$
+ for (TableInfo tableInfo : tableMap.values()) {
+ ResultSet pks = metadata.getPrimaryKeys(tableInfo.catalog, tableInfo.schema,
tableInfo.name);
+ TreeMap<Short, String> keyColumns = null;
+ String pkName = null;
+ while (pks.next()) {
+ String columnName = pks.getString(4);
+ short seqNum = pks.getShort(5);
+ if (keyColumns == null) {
+ keyColumns = new TreeMap<Short, String>();
+ }
+ keyColumns.put(seqNum, columnName);
+ if (pkName == null) {
+ pkName = pks.getString(6);
+ if (pkName == null) {
+ pkName = "PK_" + tableInfo.table.getName().toUpperCase(); //$NON-NLS-1$
+ }
+ }
+ }
+ if (keyColumns != null) {
+ metadataFactory.addPrimaryKey(pkName, new
ArrayList<String>(keyColumns.values()), tableInfo.table);
+ }
+ pks.close();
+ }
+ }
+
+ private void getForeignKeys(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata, Map<String, TableInfo> tableMap) throws SQLException,
ConnectorException {
+ LogManager.logDetail("JDBCMetadataProcessor - Importing foreign keys");
//$NON-NLS-1$
+ for (TableInfo tableInfo : tableMap.values()) {
+ ResultSet fks = metadata.getImportedKeys(tableInfo.catalog, tableInfo.schema,
tableInfo.name);
+ TreeMap<Short, String> keyColumns = null;
+ String fkName = null;
+ TableInfo pkTable = null;
+ short savedSeqNum = Short.MAX_VALUE;
+ while (fks.next()) {
+ String columnName = fks.getString(8);
+ short seqNum = fks.getShort(9);
+ if (seqNum <= savedSeqNum) {
+ if (keyColumns != null) {
+ metadataFactory.addForiegnKey(fkName, new
ArrayList<String>(keyColumns.values()), pkTable.table, tableInfo.table);
+ }
+ keyColumns = new TreeMap<Short, String>();
+ fkName = null;
+ }
+ savedSeqNum = seqNum;
+ keyColumns.put(seqNum, columnName);
+ if (fkName == null) {
+ String tableCatalog = fks.getString(1);
+ String tableSchema = fks.getString(2);
+ String tableName = fks.getString(3);
+ String fullTableName = getFullyQualifiedName(tableCatalog, tableSchema, tableName);
+ pkTable = tableMap.get(fullTableName);
+ if (pkTable == null) {
+ throw new
ConnectorException(JDBCPlugin.Util.getString("JDBCMetadataProcessor.cannot_find_primary",
fullTableName)); //$NON-NLS-1$
+ }
+ fkName = fks.getString(12);
+ if (fkName == null) {
+ fkName = "FK_" + tableInfo.table.getName().toUpperCase(); //$NON-NLS-1$
+ }
+ }
+ }
+ if (keyColumns != null) {
+ metadataFactory.addForiegnKey(fkName, new
ArrayList<String>(keyColumns.values()), pkTable.table, tableInfo.table);
+ }
+ fks.close();
+ }
+ }
+
+ private void getIndexes(MetadataFactory metadataFactory,
+ DatabaseMetaData metadata, Map<String, TableInfo> tableMap) throws SQLException,
ConnectorException {
+ LogManager.logDetail("JDBCMetadataProcessor - Importing index info");
//$NON-NLS-1$
+ for (TableInfo tableInfo : tableMap.values()) {
+ ResultSet indexInfo = metadata.getIndexInfo(tableInfo.catalog, tableInfo.schema,
tableInfo.name, false, importApproximateIndexes);
+ TreeMap<Short, String> indexColumns = null;
+ String indexName = null;
+ short savedOrdinalPosition = Short.MAX_VALUE;
+ boolean nonUnique = false;
+ while (indexInfo.next()) {
+ short type = indexInfo.getShort(7);
+ if (type == DatabaseMetaData.tableIndexStatistic) {
+ tableInfo.table.setCardinality(indexInfo.getInt(11));
+ continue;
+ }
+ short ordinalPosition = indexInfo.getShort(8);
+ if (ordinalPosition <= savedOrdinalPosition) {
+ if (indexColumns != null) {
+ metadataFactory.addIndex(indexName, nonUnique, new
ArrayList<String>(indexColumns.values()), tableInfo.table);
+ }
+ indexColumns = new TreeMap<Short, String>();
+ indexName = null;
+ }
+ savedOrdinalPosition = ordinalPosition;
+ String columnName = indexInfo.getString(9);
+ nonUnique = indexInfo.getBoolean(4);
+ indexColumns.put(ordinalPosition, columnName);
+ if (indexName == null) {
+ indexName = indexInfo.getString(6);
+ if (indexName == null) {
+ indexName = "NDX_" + tableInfo.table.getName().toUpperCase();
//$NON-NLS-1$
+ }
+ }
+ }
+ if (indexColumns != null) {
+ metadataFactory.addIndex(indexName, nonUnique, new
ArrayList<String>(indexColumns.values()), tableInfo.table);
+ }
+ indexInfo.close();
+ }
+ }
+
+ private String getFullyQualifiedName(String catalogName, String schemaName, String
objectName) {
+ return getFullyQualifiedName(catalogName, schemaName, objectName, false);
+ }
+
+ private String getFullyQualifiedName(String catalogName, String schemaName, String
objectName, boolean quoted) {
+ String fullName = (quoted?quoteName(objectName):objectName);
+ if (schemaName != null && schemaName.length() > 0) {
+ fullName = (quoted?quoteName(schemaName):schemaName) +
AbstractMetadataRecord.NAME_DELIM_CHAR + fullName;
+ }
+ if (catalogName != null && catalogName.length() > 0) {
+ fullName = (quoted?quoteName(catalogName):catalogName) +
AbstractMetadataRecord.NAME_DELIM_CHAR + fullName;
+ }
+ return fullName;
+ }
+
+
+
+ public void setTableNamePattern(String tableNamePattern) {
+ this.tableNamePattern = tableNamePattern;
+ }
+
+ public void setTableTypes(String[] tableTypes) {
+ this.tableTypes = tableTypes;
+ }
+
+ public void setUseFullSchemaName(boolean useFullSchemaName) {
+ this.useFullSchemaName = useFullSchemaName;
+ }
+
+ public void setProcedureNamePattern(String procedureNamePattern) {
+ this.procedureNamePattern = procedureNamePattern;
+ }
+
+ public void setImportIndexes(boolean importIndexes) {
+ this.importIndexes = importIndexes;
+ }
+
+ public void setImportKeys(boolean importKeys) {
+ this.importKeys = importKeys;
+ }
+
+ public void setImportProcedures(boolean importProcedures) {
+ this.importProcedures = importProcedures;
+ }
+
+ public void setImportApproximateIndexes(boolean importApproximateIndexes) {
+ this.importApproximateIndexes = importApproximateIndexes;
+ }
+
+ public void setWidenUnsingedTypes(boolean widenUnsingedTypes) {
+ this.widenUnsingedTypes = widenUnsingedTypes;
+ }
+
+ public void setQuoteNameInSource(boolean quoteIdentifiers) {
+ this.quoteNameInSource = quoteIdentifiers;
+ }
+
+ // Importer specific properties
+ public void setCatalog(String catalog) {
+ this.catalog = catalog;
+ }
+
+ public void setSchemaPattern(String schema) {
+ this.schemaPattern = schema;
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCProcedureExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCProcedureExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCProcedureExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCProcedureExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,115 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.language.Argument;
+import org.teiid.language.Call;
+import org.teiid.language.Command;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.ProcedureExecution;
+
+/**
+ */
+public class JDBCProcedureExecution extends JDBCQueryExecution implements
ProcedureExecution {
+
+ /**
+ * @param connection
+ * @param sqlTranslator
+ * @param logger
+ * @param props
+ * @param id
+ */
+ public JDBCProcedureExecution(Command command, Connection connection, ExecutionContext
context, JDBCExecutionFactory env, Translator translator) {
+ super(command, connection, context, env, translator);
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ Call procedure = (Call)command;
+ columnDataTypes = procedure.getResultSetColumnTypes();
+
+ //translate command
+ TranslatedCommand translatedComm = translateCommand(procedure);
+
+ //create statement or CallableStatement and execute
+ String sql = translatedComm.getSql();
+ try{
+ //create parameter index map
+ CallableStatement cstmt = getCallableStatement(sql);
+ 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$
+ }
+
+ }
+
+ @Override
+ public List<?> next() throws ConnectorException, DataNotAvailableException {
+ if (results == null) {
+ return null;
+ }
+ return super.next();
+ }
+
+ @Override
+ public List<?> getOutputParameterValues() throws ConnectorException {
+ try {
+ Call proc = (Call)this.command;
+ List<Object> result = new ArrayList<Object>();
+ int paramIndex = 1;
+ if (proc.getReturnType() != null) {
+ addParameterValue(result, paramIndex++, proc.getReturnType());
+ }
+ for (Argument parameter : proc.getArguments()) {
+ switch (parameter.getDirection()) {
+ case IN:
+ paramIndex++;
+ break;
+ case INOUT:
+ case OUT:
+ addParameterValue(result, paramIndex++, parameter.getType());
+ break;
+ }
+ }
+ return result;
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ private void addParameterValue(List<Object> result, int paramIndex,
+ Class<?> type) throws SQLException {
+ Object value = sqlTranslator.retrieveValue((CallableStatement)this.statement,
paramIndex, type);
+ result.add(value);
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCProcedureExecution.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCQueryExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCQueryExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCQueryExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCQueryExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,130 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.language.Command;
+import org.teiid.language.QueryExpression;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.ResultSetExecution;
+
+
+/**
+ *
+ */
+public class JDBCQueryExecution extends JDBCBaseExecution implements ResultSetExecution
{
+
+ //
===========================================================================================================================
+ // Fields
+ //
===========================================================================================================================
+
+ protected ResultSet results;
+ protected Command command;
+ protected Class<?>[] columnDataTypes;
+
+ //
===========================================================================================================================
+ // Constructors
+ //
===========================================================================================================================
+
+ public JDBCQueryExecution(Command command, Connection connection, ExecutionContext
context, JDBCExecutionFactory env, Translator translator) {
+ super(connection, context, env, translator);
+ this.command = command;
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ // get column types
+ columnDataTypes = ((QueryExpression)command).getColumnTypes();
+
+ // translate command
+ TranslatedCommand translatedComm = translateCommand(command);
+
+ String sql = translatedComm.getSql();
+
+ try {
+
+ if (!translatedComm.isPrepared()) {
+ results = getStatement().executeQuery(sql);
+ } else {
+ PreparedStatement pstatement = getPreparedStatement(sql);
+ bindPreparedStatementValues(pstatement, translatedComm, 1);
+ results = pstatement.executeQuery();
+ }
+ addStatementWarnings();
+ } catch (SQLException e) {
+ throw new JDBCExecutionException(e, translatedComm);
+ }
+ }
+
+ @Override
+ public List<?> next() throws ConnectorException, DataNotAvailableException {
+ try {
+ if (results.next()) {
+ // New row for result set
+ List<Object> vals = new
ArrayList<Object>(columnDataTypes.length);
+
+ for (int i = 0; i < columnDataTypes.length; i++) {
+ // Convert from 0-based to 1-based
+ Object value = sqlTranslator.retrieveValue(results, i+1,
columnDataTypes[i]);
+ vals.add(value);
+ }
+
+ return vals;
+ }
+ } catch (SQLException e) {
+ throw new ConnectorException(e,
+
JDBCPlugin.Util.getString("JDBCTranslator.Unexpected_exception_translating_results___8",
e.getMessage())); //$NON-NLS-1$
+ }
+
+ return null;
+ }
+
+ /**
+ * @see org.teiid.translator.jdbc.JDBCBaseExecution#close()
+ */
+ 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) {
+ try {
+ results.close();
+ results = null;
+ } catch (SQLException e) {
+ throw new ConnectorException(e);
+ }
+ }
+ super.close();
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCQueryExecution.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCUpdateExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/JDBCUpdateExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCUpdateExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCUpdateExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,255 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.language.BatchedUpdates;
+import org.teiid.language.Command;
+import org.teiid.language.Literal;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.UpdateExecution;
+
+
+/**
+ */
+public class JDBCUpdateExecution extends JDBCBaseExecution implements UpdateExecution {
+
+ private Command command;
+ private int[] result;
+
+ /**
+ * @param connection
+ * @param sqlTranslator
+ * @param logger
+ * @param props
+ * @param id
+ */
+ public JDBCUpdateExecution(Command command, Connection connection, ExecutionContext
context, JDBCExecutionFactory env, Translator translator) {
+ super(connection, context, env, translator);
+ this.command = command;
+ }
+
+ //
===========================================================================================================================
+ // Methods
+ //
===========================================================================================================================
+
+ @Override
+ public void execute() throws ConnectorException {
+ if (command instanceof BatchedUpdates) {
+ result = execute(((BatchedUpdates)command));
+ } else {
+ // translate command
+ TranslatedCommand translatedComm = translateCommand(command);
+
+ result = executeTranslatedCommand(translatedComm);
+ }
+ }
+
+ /**
+ * @see
com.metamatrix.data.api.BatchedUpdatesExecution#execute(org.teiid.language.Command[])
+ * @since 4.2
+ */
+ public int[] execute(BatchedUpdates batchedCommand) throws ConnectorException {
+ boolean succeeded = false;
+
+ boolean commitType = getAutoCommit(null);
+ Command[] commands = batchedCommand.getUpdateCommands().toArray(new
Command[batchedCommand.getUpdateCommands().size()]);
+ int[] results = new int[commands.length];
+
+ TranslatedCommand tCommand = null;
+
+ try {
+ // temporarily turn the auto commit off, and set it back to what it was
+ // before at the end of the command execution.
+ if (commitType) {
+ connection.setAutoCommit(false);
+ }
+
+ List<TranslatedCommand> executedCmds = new
ArrayList<TranslatedCommand>();
+
+ TranslatedCommand previousCommand = null;
+
+ for (int i = 0; i < commands.length; i++) {
+ tCommand = translateCommand(commands[i]);
+ if (tCommand.isPrepared()) {
+ PreparedStatement pstmt = null;
+ if (previousCommand != null && previousCommand.isPrepared()
&& previousCommand.getSql().equals(tCommand.getSql())) {
+ pstmt = (PreparedStatement)statement;
+ } else {
+ if (!executedCmds.isEmpty()) {
+ executeBatch(i, results, executedCmds);
+ }
+ pstmt = getPreparedStatement(tCommand.getSql());
+ }
+ bindPreparedStatementValues(pstmt, tCommand, 1);
+ pstmt.addBatch();
+ } else {
+ if (previousCommand != null && previousCommand.isPrepared())
{
+ executeBatch(i, results, executedCmds);
+ getStatement();
+ }
+ if (statement == null) {
+ getStatement();
+ }
+ statement.addBatch(tCommand.getSql());
+ }
+ executedCmds.add(tCommand);
+ previousCommand = tCommand;
+ }
+ if (!executedCmds.isEmpty()) {
+ executeBatch(commands.length, results, executedCmds);
+ }
+ succeeded = true;
+ } catch (SQLException e) {
+ throw new JDBCExecutionException(e, tCommand);
+ } finally {
+ if (commitType) {
+ restoreAutoCommit(!succeeded, null);
+ }
+ }
+
+ return results;
+ }
+
+ private void executeBatch(int commandCount,
+ int[] results,
+ List<TranslatedCommand> commands) throws
ConnectorException {
+ try {
+ int[] batchResults = statement.executeBatch();
+ addStatementWarnings();
+ for (int j = 0; j < batchResults.length; j++) {
+ results[commandCount - 1 - j] = batchResults[batchResults.length - 1 -
j];
+ }
+ commands.clear();
+ } catch (SQLException err) {
+ throw new JDBCExecutionException(err, commands.toArray(new
TranslatedCommand[commands.size()]));
+ }
+ }
+
+ /**
+ * @param translatedComm
+ * @throws ConnectorException
+ * @since 4.3
+ */
+ private int[] executeTranslatedCommand(TranslatedCommand translatedComm) throws
ConnectorException {
+ // create statement or PreparedStatement and execute
+ String sql = translatedComm.getSql();
+ boolean commitType = false;
+ boolean succeeded = false;
+ try {
+ int updateCount = 0;
+ if (!translatedComm.isPrepared()) {
+ updateCount = getStatement().executeUpdate(sql);
+ } else {
+ PreparedStatement pstatement = getPreparedStatement(sql);
+ int rowCount = 1;
+ for (int i = 0; i< translatedComm.getPreparedValues().size(); i++) {
+ Literal paramValue =
(Literal)translatedComm.getPreparedValues().get(i);
+ if (paramValue.isMultiValued()) {
+ rowCount = ((List<?>)paramValue.getValue()).size();
+ break;
+ }
+ }
+ if (rowCount > 1) {
+ commitType = getAutoCommit(translatedComm);
+ if (commitType) {
+ connection.setAutoCommit(false);
+ }
+ }
+ bindPreparedStatementValues(pstatement, translatedComm, rowCount);
+ if (rowCount > 1) {
+ int[] results = pstatement.executeBatch();
+
+ for (int i=0; i<results.length; i++) {
+ updateCount += results[i];
+ }
+ succeeded = true;
+ } else {
+ updateCount = pstatement.executeUpdate();
+ }
+ }
+ addStatementWarnings();
+ return new int[] {updateCount};
+ } catch (SQLException err) {
+ throw new JDBCExecutionException(err, translatedComm);
+ } finally {
+ if (commitType) {
+ restoreAutoCommit(!succeeded, translatedComm);
+ }
+ }
+ }
+
+ /**
+ * @param command
+ * @return
+ * @throws ConnectorException
+ */
+ private boolean getAutoCommit(TranslatedCommand tCommand) throws ConnectorException
{
+ if (this.context.isTransactional()) {
+ return false;
+ }
+ try {
+ return connection.getAutoCommit();
+ } catch (SQLException err) {
+ throw new JDBCExecutionException(err, tCommand);
+ }
+ }
+
+ /**
+ * If the auto comm
+ *
+ * @param exceptionOccurred
+ * @param command
+ * @throws ConnectorException
+ */
+ private void restoreAutoCommit(boolean exceptionOccurred,
+ TranslatedCommand tCommand) throws ConnectorException
{
+ try {
+ if (exceptionOccurred) {
+ connection.rollback();
+ }
+ } catch (SQLException err) {
+ 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);
+ }
+ }
+ }
+
+ @Override
+ public int[] getUpdateCounts() throws DataNotAvailableException,
+ ConnectorException {
+ return result;
+ }
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCUpdateExecution.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SimpleCapabilities.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/main/java/org/teiid/resource/adapter/jdbc/SimpleCapabilities.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SimpleCapabilities.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SimpleCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,274 @@
+/*
+ * 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.translator.jdbc;
+
+import java.util.List;
+
+
+/**
+ * This is a "simple" capabilities class that allows criteria but no
+ * complicated joins, subqueries, etc to be passed to the connector.
+ * This capabilities class may come in handy for testing and for
+ * sources that support JDBC but don't support extended JDBC capabilities.
+ */
+public class SimpleCapabilities extends JDBCCapabilities {
+
+ public SimpleCapabilities() {
+ }
+
+ @Override
+ public int getMaxInCriteriaSize() {
+ return 250;
+ }
+
+ /*
+ * @see
com.metamatrix.data.api.ConnectorCapabilities#supportsCompareCriteriaEquals()
+ */
+ public boolean supportsCompareCriteriaEquals() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsInCriteria()
+ */
+ public boolean supportsInCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsIsNullCriteria()
+ */
+ public boolean supportsIsNullCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsLikeCriteria()
+ */
+ public boolean supportsLikeCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsNotCriteria()
+ */
+ public boolean supportsNotCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsOrCriteria()
+ */
+ public boolean supportsOrCriteria() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsSelectDistinct()
+ */
+ public boolean supportsSelectDistinct() {
+ return true;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAliasedGroup()
+ */
+ public boolean supportsAliasedGroup() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsSelfJoins()
+ */
+ public boolean supportsSelfJoins() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsOuterJoins()
+ */
+ public boolean supportsOuterJoins() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsFullOuterJoins()
+ */
+ public boolean supportsFullOuterJoins() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsBetweenCriteria()
+ */
+ public boolean supportsBetweenCriteria() {
+ return false;
+ }
+
+
+ /*
+ * @see
com.metamatrix.data.api.ConnectorCapabilities#supportsLikeCriteriaEscapeCharacter()
+ */
+ public boolean supportsLikeCriteriaEscapeCharacter() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsInCriteriaSubquery()
+ */
+ public boolean supportsInCriteriaSubquery() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsExistsCriteria()
+ */
+ public boolean supportsExistsCriteria() {
+ return false;
+ }
+
+ /*
+ * @see
com.metamatrix.data.api.ConnectorCapabilities#supportsQuantifiedCompareCriteriaSome()
+ */
+ public boolean supportsQuantifiedCompareCriteriaSome() {
+ return false;
+ }
+
+ /*
+ * @see
com.metamatrix.data.api.ConnectorCapabilities#supportsQuantifiedCompareCriteriaAll()
+ */
+ public boolean supportsQuantifiedCompareCriteriaAll() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsOrderBy()
+ */
+ public boolean supportsOrderBy() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesSum()
+ */
+ public boolean supportsAggregatesSum() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesAvg()
+ */
+ public boolean supportsAggregatesAvg() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesMin()
+ */
+ public boolean supportsAggregatesMin() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesMax()
+ */
+ public boolean supportsAggregatesMax() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesCount()
+ */
+ public boolean supportsAggregatesCount() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesCountStar()
+ */
+ public boolean supportsAggregatesCountStar() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsAggregatesDistinct()
+ */
+ public boolean supportsAggregatesDistinct() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsScalarSubqueries()
+ */
+ public boolean supportsScalarSubqueries() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsCorrelatedSubqueries()
+ */
+ public boolean supportsCorrelatedSubqueries() {
+ return false;
+ }
+
+ /*
+ * @see com.metamatrix.data.api.ConnectorCapabilities#supportsCaseExpressions()
+ */
+ public boolean supportsCaseExpressions() {
+ return false;
+ }
+
+ /*
+ * @see
com.metamatrix.data.api.ConnectorCapabilities#supportsSearchedCaseExpressions()
+ */
+ public boolean supportsSearchedCaseExpressions() {
+ return false;
+ }
+
+ /**
+ * Return null to indicate no functions are supported.
+ * @return null
+ * @see org.teiid.translator.ConnectorCapabilities#getSupportedFunctions()
+ */
+ public List getSupportedFunctions() {
+ return null;
+ }
+
+ public boolean supportsInlineViews() {
+ return false;
+ }
+
+ /**
+ * @see org.teiid.translator.ConnectorCapabilities#supportsUnions()
+ * @since 4.2
+ */
+ public boolean supportsUnions() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsInsertWithQueryExpression() {
+ return false;
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SimpleCapabilities.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/Translator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/Translator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/Translator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -55,8 +55,6 @@
import org.teiid.language.Argument.Direction;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/access/AccessCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/access/AccessCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/access/AccessCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -24,7 +24,7 @@
*/
package org.teiid.translator.jdbc.access;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
public class AccessCapabilities extends JDBCCapabilities{
/*
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2Capabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2Capabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2Capabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -27,7 +27,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2SQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2SQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/db2/DB2SQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -34,7 +34,6 @@
import org.teiid.language.Literal;
import org.teiid.language.Comparison.Operator;
import org.teiid.language.Join.JoinType;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
@@ -43,6 +42,7 @@
import org.teiid.translator.jdbc.AliasModifier;
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.LocateFunctionModifier;
import org.teiid.translator.jdbc.ModFunctionModifier;
import org.teiid.translator.jdbc.Translator;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbyCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbyCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbyCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,7 +25,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbySQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbySQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/derby/DerbySQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -22,11 +22,11 @@
package org.teiid.translator.jdbc.derby;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.EscapeSyntaxModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.db2.DB2SQLTranslator;
import org.teiid.translator.jdbc.oracle.LeftOrRightFunctionModifier;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Capabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Capabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Capabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,8 +25,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
import org.teiid.translator.SourceSystemFunctions;
+import org.teiid.translator.jdbc.JDBCCapabilities;
public class H2Capabilities extends JDBCCapabilities {
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Translator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Translator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2Translator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,13 +26,13 @@
import java.sql.Time;
import java.sql.Timestamp;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.AliasModifier;
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.ModFunctionModifier;
import org.teiid.translator.jdbc.Translator;
import org.teiid.translator.jdbc.hsql.AddDiffModifier;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,8 +25,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
import org.teiid.translator.SourceSystemFunctions;
+import org.teiid.translator.jdbc.JDBCCapabilities;
public class HsqlCapabilities extends JDBCCapabilities {
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/hsql/HsqlTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,12 +26,12 @@
import java.sql.Time;
import java.sql.Timestamp;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.Translator;
public class HsqlTranslator extends Translator {
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,7 +26,7 @@
import java.util.*;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/informix/InformixSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -24,11 +24,11 @@
*/
package org.teiid.translator.jdbc.informix;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.ConvertModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.Translator;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mm/MMCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mm/MMCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mm/MMCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -8,7 +8,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
* Capabilities compatible with MM 5.5.x
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQL5Translator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQL5Translator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQL5Translator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,11 +26,11 @@
import java.util.List;
import org.teiid.language.Function;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
public class MySQL5Translator extends MySQLTranslator {
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,8 +25,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
import org.teiid.translator.SourceSystemFunctions;
+import org.teiid.translator.jdbc.JDBCCapabilities;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/mysql/MySQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -34,13 +34,13 @@
import org.teiid.language.Function;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.TypeFacility;
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.LocateFunctionModifier;
import org.teiid.translator.jdbc.Translator;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -27,8 +27,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
import org.teiid.translator.SourceSystemFunctions;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -53,7 +53,6 @@
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
import org.teiid.metadata.Column;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
@@ -63,6 +62,7 @@
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.ExtractFunctionModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.JDBCPlugin;
import org.teiid.translator.jdbc.LocateFunctionModifier;
import org.teiid.translator.jdbc.Translator;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,7 +25,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
@@ -249,7 +249,7 @@
* This is true only after Postgre version 7.1
* However, since version 7 was released in 2000 we'll assume a post 7 instance.
*
- * @see org.teiid.resource.adapter.jdbc.JDBCCapabilities#supportsInlineViews()
+ * @see org.teiid.translator.jdbc.JDBCCapabilities#supportsInlineViews()
*/
public boolean supportsInlineViews() {
return true;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -35,7 +35,6 @@
import org.teiid.language.Limit;
import org.teiid.language.Literal;
import org.teiid.language.SQLReservedWords;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
@@ -46,6 +45,7 @@
import org.teiid.translator.jdbc.EscapeSyntaxModifier;
import org.teiid.translator.jdbc.ExtractFunctionModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.ModFunctionModifier;
import org.teiid.translator.jdbc.Translator;
import org.teiid.translator.jdbc.oracle.LeftOrRightFunctionModifier;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,7 +26,7 @@
import java.util.*;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -27,7 +27,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sybase/SybaseSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -33,7 +33,6 @@
import org.teiid.language.Limit;
import org.teiid.language.OrderBy;
import org.teiid.language.SetQuery;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorCapabilities;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
@@ -42,6 +41,7 @@
import org.teiid.translator.jdbc.ConvertModifier;
import org.teiid.translator.jdbc.EscapeSyntaxModifier;
import org.teiid.translator.jdbc.FunctionModifier;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.ModFunctionModifier;
import org.teiid.translator.jdbc.Translator;
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teiid/TeiidCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teiid/TeiidCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teiid/TeiidCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -27,7 +27,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
/**
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teradata/TeradataCapabilities.java
===================================================================
---
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teradata/TeradataCapabilities.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/teradata/TeradataCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,7 +25,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.resource.adapter.jdbc.JDBCCapabilities;
+import org.teiid.translator.jdbc.JDBCCapabilities;
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeConnection.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/FakeConnection.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeConnection.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeConnection.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,56 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.teiid.core.util.SimpleMock;
+
+
+/**
+ * FakeConnection for unit testing
+ */
+public class FakeConnection {
+
+ boolean closed;
+ boolean fail;
+
+ /* (non-Javadoc)
+ * @see java.sql.Connection#createStatement()
+ */
+ public Statement createStatement() throws SQLException {
+ if (fail) {
+ throw new SQLException();
+ }
+ return SimpleMock.createSimpleMock(Statement.class);
+ }
+
+ /* (non-Javadoc)
+ * @see java.sql.Connection#isClosed()
+ */
+ public boolean isClosed() {
+ return closed;
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeConnection.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeMetadataFactory.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/FakeMetadataFactory.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeMetadataFactory.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeMetadataFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -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.translator.jdbc;
+
+import static org.junit.Assert.assertEquals;
+import junit.framework.Assert;
+
+import org.mockito.Mockito;
+import org.teiid.language.Command;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.TranslatedCommand;
+import org.teiid.translator.jdbc.Translator;
+
+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);
+ tc.translateCommand(obj);
+
+ // Check stuff
+ assertEquals("Did not get correct sql", expectedOutput, tc.getSql());
//$NON-NLS-1$
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/FakeMetadataFactory.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestExtractFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestExtractFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestExtractFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -34,7 +34,6 @@
import org.teiid.language.Literal;
import org.teiid.language.NamedTable;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.TypeFacility;
import org.teiid.translator.jdbc.ExtractFunctionModifier;
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCExecutionFactory.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/TestJDBCExecutionFactory.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCExecutionFactory.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,44 @@
+/*
+ * 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.translator.jdbc;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.Translator;
+import org.teiid.translator.jdbc.sqlserver.SQLServerSQLTranslator;
+public class TestJDBCExecutionFactory {
+
+ @Test public void testGetExtensionTranslationClassDefault() throws Exception {
+ JDBCExecutionFactory mcf = new JDBCExecutionFactory();
+ assertSame(Translator.class, mcf.getTranslator().getClass());
+ }
+
+ @Test public void testGetExtensionTranslationClass() throws Exception {
+ JDBCExecutionFactory mcf = new JDBCExecutionFactory();
+ mcf.setExtensionTranslationClassName(SQLServerSQLTranslator.class.getName());
+ assertSame(SQLServerSQLTranslator.class, mcf.getTranslator().getClass());
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCExecutionFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCProcedureExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/TestJDBCProcedureExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCProcedureExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCProcedureExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,77 @@
+/*
+ * 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.translator.jdbc;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.Types;
+import java.util.Arrays;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.teiid.language.Command;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.JDBCProcedureExecution;
+import org.teiid.translator.jdbc.Translator;
+
+public class TestJDBCProcedureExecution {
+
+ @Test public void testProcedureExecution() throws Exception {
+ 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();
+
+ JDBCExecutionFactory config = Mockito.mock(JDBCExecutionFactory.class);
+ Mockito.stub(config.getTranslator()).toReturn(sqlTranslator);
+
+ JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command,
connection, Mockito.mock(ExecutionContext.class), config, sqlTranslator);
+ procedureExecution.execute();
+ assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
+ Mockito.verify(cs, Mockito.times(1)).registerOutParameter(1, Types.INTEGER);
+ }
+ @Test public void testProcedureExecution1() throws Exception {
+ 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();
+
+ JDBCExecutionFactory config = Mockito.mock(JDBCExecutionFactory.class);
+ Mockito.stub(config.getTranslator()).toReturn(sqlTranslator);
+
+ JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command,
connection, Mockito.mock(ExecutionContext.class), config, sqlTranslator);
+ procedureExecution.execute();
+ assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
+ Mockito.verify(cs, Mockito.times(1)).registerOutParameter(2, Types.INTEGER);
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCProcedureExecution.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCUpdateExecution.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/TestJDBCUpdateExecution.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCUpdateExecution.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCUpdateExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,65 @@
+/*
+ * 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.translator.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.Arrays;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.teiid.language.Command;
+import org.teiid.language.ExpressionValueSource;
+import org.teiid.language.Insert;
+import org.teiid.language.Literal;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.JDBCUpdateExecution;
+import org.teiid.translator.jdbc.Translator;
+
+public class TestJDBCUpdateExecution {
+
+ @Test public void testBulkUpdate() throws Exception {
+ 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));
+ value1.setMultiValued(true);
+ value1.setBindValue(true);
+ value1.setValue(Arrays.asList(2, 3));
+ Connection connection = Mockito.mock(Connection.class);
+ 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$
+
+ JDBCExecutionFactory config = Mockito.mock(JDBCExecutionFactory.class);
+ Mockito.stub(config.getTranslator()).toReturn(new Translator());
+
+ JDBCUpdateExecution updateExecution = new JDBCUpdateExecution(command, connection,
Mockito.mock(ExecutionContext.class), config, config.getTranslator());
+ updateExecution.execute();
+ Mockito.verify(p, Mockito.times(2)).addBatch();
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestJDBCUpdateExecution.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestLocateFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestLocateFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestLocateFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -30,7 +30,6 @@
import org.teiid.language.Expression;
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.LocateFunctionModifier;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestModFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestModFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestModFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -31,7 +31,6 @@
import org.teiid.language.Expression;
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.SourceSystemFunctions;
import org.teiid.translator.jdbc.ModFunctionModifier;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestSQLConversionVisitor.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestSQLConversionVisitor.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TestSQLConversionVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -35,8 +35,6 @@
import org.teiid.dqp.internal.datamgr.language.TstLanguageBridgeFactory;
import org.teiid.language.LanguageObject;
import org.teiid.metadata.RuntimeMetadata;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
import org.teiid.translator.jdbc.SQLConversionVisitor;
Copied:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TranslationHelper.java
(from rev 2119,
trunk/connectors/translator-jdbc/src/test/java/org/teiid/resource/adapter/jdbc/TranslationHelper.java)
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TranslationHelper.java
(rev 0)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TranslationHelper.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -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.translator.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.core.TeiidRuntimeException;
+import org.teiid.language.Command;
+import org.teiid.query.function.metadata.FunctionMetadataReader;
+import org.teiid.query.function.metadata.FunctionMethod;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.TranslatedCommand;
+import org.teiid.translator.jdbc.Translator;
+
+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 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 TeiidRuntimeException("failed to load UDF"); //$NON-NLS-1$
+ }
+ }
+ 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$
+ }
+
+}
Property changes on:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/TranslationHelper.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/access/TestAccessSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/access/TestAccessSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/access/TestAccessSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -26,9 +26,9 @@
import org.mockito.Mockito;
import org.teiid.language.Command;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.TranslatedCommand;
import org.teiid.translator.jdbc.Translator;
import org.teiid.translator.jdbc.access.AccessSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2ConvertModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2ConvertModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2ConvertModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -33,8 +33,8 @@
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.TypeFacility;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.db2.DB2SQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2SqlTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2SqlTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/db2/TestDB2SqlTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -29,11 +29,11 @@
import org.mockito.Mockito;
import org.teiid.core.util.UnitTestUtil;
import org.teiid.language.Command;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.TranslatedCommand;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.db2.DB2SQLTranslator;
import com.metamatrix.cdk.api.TranslationUtility;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/derby/TestDerbySQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/derby/TestDerbySQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/derby/TestDerbySQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,9 +25,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.derby.DerbySQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/h2/TestH2Translator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/h2/TestH2Translator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/h2/TestH2Translator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -24,9 +24,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.h2.H2Translator;
public class TestH2Translator {
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQL5Translator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQL5Translator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQL5Translator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -24,9 +24,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.mysql.MySQL5Translator;
/**
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/mysql/TestMySQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -25,9 +25,9 @@
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.mysql.MySQLTranslator;
/**
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestDayWeekQuarterFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -31,8 +31,8 @@
import org.teiid.language.LanguageFactory;
import org.teiid.language.Literal;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.SourceSystemFunctions;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestLeftOrRightFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestLeftOrRightFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestLeftOrRightFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -29,7 +29,7 @@
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
import org.teiid.language.Literal;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestMonthOrDayNameFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -31,7 +31,7 @@
import org.teiid.language.LanguageFactory;
import org.teiid.language.Literal;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleConvertModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleConvertModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleConvertModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -35,8 +35,8 @@
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.TypeFacility;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.Translator;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -43,11 +43,11 @@
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.unittest.FakeMetadataFactory;
import org.teiid.query.unittest.RealMetadataFactory;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.TranslatedCommand;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.Translator;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestSubstringFunctionModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestSubstringFunctionModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestSubstringFunctionModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -29,8 +29,8 @@
import org.teiid.language.Expression;
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.TypeFacility;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.oracle.OracleSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/postgresql/TestPostgreSQLTranslator.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/postgresql/TestPostgreSQLTranslator.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/postgresql/TestPostgreSQLTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -24,9 +24,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.postgresql.PostgreSQLTranslator;
public class TestPostgreSQLTranslator {
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -36,9 +36,9 @@
import org.teiid.metadata.TransformationMetadata;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.unittest.RealMetadataFactory;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.sqlserver.SQLServerSQLTranslator;
import com.metamatrix.cdk.api.TranslationUtility;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseConvertModifier.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseConvertModifier.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseConvertModifier.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -36,8 +36,8 @@
import org.teiid.language.LanguageFactory;
import org.teiid.language.Literal;
import org.teiid.query.unittest.TimestampUtil;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.SQLConversionVisitor;
import org.teiid.translator.jdbc.sybase.SybaseSQLTranslator;
Modified:
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseSQLConversionVisitor.java
===================================================================
---
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2010-05-12
19:17:10 UTC (rev 2120)
+++
trunk/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -28,11 +28,11 @@
import org.junit.Test;
import org.mockito.Mockito;
import org.teiid.language.Command;
-import org.teiid.resource.adapter.jdbc.JDBCExecutionFactory;
-import org.teiid.resource.adapter.jdbc.TranslationHelper;
import org.teiid.translator.ConnectorException;
import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.jdbc.JDBCExecutionFactory;
import org.teiid.translator.jdbc.TranslatedCommand;
+import org.teiid.translator.jdbc.TranslationHelper;
import org.teiid.translator.jdbc.sybase.SybaseSQLTranslator;
/**
Copied: trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/ldap (from rev
2119, trunk/connectors/translator-ldap/src/test/java/org/teiid/resource/adapter/ldap)
Modified:
trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/ldap/TestIQueryToLdapSearchParser.java
===================================================================
---
trunk/connectors/translator-ldap/src/test/java/org/teiid/resource/adapter/ldap/TestIQueryToLdapSearchParser.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-ldap/src/test/java/org/teiid/translator/ldap/TestIQueryToLdapSearchParser.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.ldap;
+package org.teiid.translator.ldap;
import static org.mockito.Mockito.mock;
Copied: trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback
(from rev 2119,
trunk/connectors/translator-loopback/src/main/java/org/teiid/resource/adapter/loopback)
Modified:
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackCapabilities.java
===================================================================
---
trunk/connectors/translator-loopback/src/main/java/org/teiid/resource/adapter/loopback/LoopbackCapabilities.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.loopback;
+package org.teiid.translator.loopback;
import java.util.Arrays;
import java.util.List;
Modified:
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecution.java
===================================================================
---
trunk/connectors/translator-loopback/src/main/java/org/teiid/resource/adapter/loopback/LoopbackExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.loopback;
+package org.teiid.translator.loopback;
import java.math.BigDecimal;
import java.math.BigInteger;
Modified:
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecutionFactory.java
===================================================================
---
trunk/connectors/translator-loopback/src/main/java/org/teiid/resource/adapter/loopback/LoopbackExecutionFactory.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-loopback/src/main/java/org/teiid/translator/loopback/LoopbackExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.loopback;
+package org.teiid.translator.loopback;
import org.teiid.language.Command;
import org.teiid.metadata.RuntimeMetadata;
Copied: trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback
(from rev 2119,
trunk/connectors/translator-loopback/src/test/java/org/teiid/resource/adaptor/loopback)
Modified:
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoobackAsynch.java
===================================================================
---
trunk/connectors/translator-loopback/src/test/java/org/teiid/resource/adaptor/loopback/TestLoobackAsynch.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoobackAsynch.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,13 +20,13 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adaptor.loopback;
+package org.teiid.translator.loopback;
import java.util.List;
import junit.framework.TestCase;
-import org.teiid.resource.adapter.loopback.LoopbackExecutionFactory;
+import org.teiid.translator.loopback.LoopbackExecutionFactory;
import com.metamatrix.cdk.api.ConnectorHost;
import com.metamatrix.cdk.unittest.FakeTranslationFactory;
Modified:
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoopbackExecution.java
===================================================================
---
trunk/connectors/translator-loopback/src/test/java/org/teiid/resource/adaptor/loopback/TestLoopbackExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-loopback/src/test/java/org/teiid/translator/loopback/TestLoopbackExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adaptor.loopback;
+package org.teiid.translator.loopback;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -28,9 +28,9 @@
import junit.framework.TestCase;
-import org.teiid.resource.adapter.loopback.LoopbackExecution;
-import org.teiid.resource.adapter.loopback.LoopbackExecutionFactory;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.loopback.LoopbackExecution;
+import org.teiid.translator.loopback.LoopbackExecutionFactory;
import com.metamatrix.cdk.api.ConnectorHost;
import com.metamatrix.cdk.api.TranslationUtility;
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/Constants.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,51 @@
+package org.teiid.translator.salesforce;
+
+public interface Constants {
+
+ public static final String PICKLIST_TYPE = "picklist"; //$NON-NLS-1$
+
+ public static final String MULTIPICKLIST_TYPE = "multipicklist";
//$NON-NLS-1$
+
+ public static final String COMBOBOX_TYPE = "combobox"; //$NON-NLS-1$
+
+ public static final String ANYTYPE_TYPE = "anyType"; //$NON-NLS-1$
+
+ public static final String REFERENCE_TYPE = "reference"; //$NON-NLS-1$
+
+ public static final String STRING_TYPE = "string"; //$NON-NLS-1$
+
+ public static final String BASE64_TYPE = "base64"; //$NON-NLS-1$
+
+ public static final String BOOLEAN_TYPE = "boolean"; //$NON-NLS-1$
+
+ public static final String CURRENCY_TYPE = "currency"; //$NON-NLS-1$
+
+ public static final String TEXTAREA_TYPE = "textarea"; //$NON-NLS-1$
+
+ public static final String INT_TYPE = "int"; //$NON-NLS-1$
+
+ public static final String DOUBLE_TYPE = "double"; //$NON-NLS-1$
+
+ public static final String PERCENT_TYPE = "percent"; //$NON-NLS-1$
+
+ public static final String PHONE_TYPE = "phone"; //$NON-NLS-1$
+
+ public static final String ID_TYPE = "id"; //$NON-NLS-1$
+
+ public static final String DATE_TYPE = "date"; //$NON-NLS-1$
+
+ public static final String DATETIME_TYPE = "datetime"; //$NON-NLS-1$
+
+ public static final String URL_TYPE = "url"; //$NON-NLS-1$
+
+ public static final String EMAIL_TYPE = "email"; //$NON-NLS-1$
+
+ public static final String RESTRICTED_PICKLIST_TYPE = "restrictedpicklist";
//$NON-NLS-1$
+
+ public static final String RESTRICTED_MULTISELECT_PICKLIST_TYPE =
"restrictedmultiselectpicklist"; //$NON-NLS-1$
+
+ public static final String SUPPORTS_QUERY = "Supports Query";//$NON-NLS-1$
+
+ public static final String SUPPORTS_RETRIEVE = "Supports
Retrieve";//$NON-NLS-1$
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Messages.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/Messages.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Messages.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Messages.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,41 @@
+/*
+ * 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.translator.salesforce;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+
+ private static final String BUNDLE_NAME =
"com.metamatrix.connector.salesforce.i18n"; //$NON-NLS-1$
+
+ private static final ResourceBundle RESOURCE_BUNDLE =
ResourceBundle.getBundle(BUNDLE_NAME);
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/MetadataProcessor.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/MetadataProcessor.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/MetadataProcessor.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/MetadataProcessor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,292 @@
+package org.teiid.translator.salesforce;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.teiid.core.types.DataTypeManager;
+import org.teiid.logging.LogConstants;
+import org.teiid.logging.LogManager;
+import org.teiid.metadata.Column;
+import org.teiid.metadata.KeyRecord;
+import org.teiid.metadata.MetadataFactory;
+import org.teiid.metadata.Table;
+import org.teiid.metadata.BaseColumn.NullType;
+import org.teiid.metadata.Column.SearchType;
+import org.teiid.translator.ConnectorException;
+
+import com.sforce.soap.partner.ChildRelationship;
+import com.sforce.soap.partner.DescribeGlobalResult;
+import com.sforce.soap.partner.DescribeGlobalSObjectResult;
+import com.sforce.soap.partner.DescribeSObjectResult;
+import com.sforce.soap.partner.Field;
+import com.sforce.soap.partner.FieldType;
+import com.sforce.soap.partner.PicklistEntry;
+
+public class MetadataProcessor {
+ private MetadataFactory metadataFactory;
+ private SalesforceConnection connection;
+ private SalesForceExecutionFactory connectorEnv;
+
+ private Map<String, Table> tableMap = new HashMap<String, Table>();
+ private List<Relationship> relationships = new ArrayList<Relationship>();
+ private boolean hasUpdateableColumn = false;
+ private List<Column> columns;
+
+ // Audit Fields
+ public static final String AUDIT_FIELD_CREATED_BY_ID = "CreatedById";
//$NON-NLS-1$
+ public static final String AUDIT_FIELD_CREATED_DATE = "CreatedDate";
//$NON-NLS-1$
+ public static final String AUDIT_FIELD_LAST_MODIFIED_BY_ID =
"LastModifiedById"; //$NON-NLS-1$
+ public static final String AUDIT_FIELD_LAST_MODIFIED_DATE =
"LastModifiedDate"; //$NON-NLS-1$
+ public static final String AUDIT_FIELD_SYSTEM_MOD_STAMP = "SystemModstamp";
//$NON-NLS-1$
+
+ // Model Extensions
+ static final String TABLE_SUPPORTS_CREATE = "Supports Create"; //$NON-NLS-1$
+ static final String TABLE_SUPPORTS_DELETE = "Supports Delete"; //$NON-NLS-1$
+ static final String TABLE_CUSTOM = "Custom"; //$NON-NLS-1$
+ static final String TABLE_SUPPORTS_LOOKUP = "Supports ID Lookup";
//$NON-NLS-1$
+ static final String TABLE_SUPPORTS_MERGE = "Supports Merge"; //$NON-NLS-1$
+ static final String TABLE_SUPPORTS_QUERY = "Supports Query"; //$NON-NLS-1$
+ static final String TABLE_SUPPORTS_REPLICATE = "Supports Replicate";
//$NON-NLS-1$
+ static final String TABLE_SUPPORTS_RETRIEVE = "Supports Retrieve";
//$NON-NLS-1$
+ static final String TABLE_SUPPORTS_SEARCH = "Supports Search"; //$NON-NLS-1$
+
+ static final String COLUMN_DEFAULTED = "Defaulted on Create"; //$NON-NLS-1$
+ static final String COLUMN_CUSTOM = "Custom"; //$NON-NLS-1$
+ static final String COLUMN_CALCULATED = "Calculated"; //$NON-NLS-1$
+ static final String COLUMN_PICKLIST_VALUES = "Picklist Values"; //$NON-NLS-1$
+
+ public MetadataProcessor(SalesforceConnection connection, MetadataFactory
metadataFactory, SalesForceExecutionFactory env) {
+ this.connection = connection;
+ this.metadataFactory = metadataFactory;
+ this.connectorEnv = env;
+ }
+
+ public void processMetadata() throws ConnectorException {
+ DescribeGlobalResult globalResult = connection.getObjects();
+ List<DescribeGlobalSObjectResult> objects = globalResult.getSobjects();
+ for (DescribeGlobalSObjectResult object : objects) {
+ addTable(object);
+ }
+ addRelationships();
+ }
+
+ private void addRelationships() throws ConnectorException {
+ for (Iterator<Relationship> iterator = relationships.iterator();
iterator.hasNext();) {
+ Relationship relationship = iterator.next();
+ if (!this.connectorEnv.isModelAuditFields() &&
isAuditField(relationship.getForeignKeyField())) {
+ continue;
+ }
+
+ Table parent = tableMap.get(NameUtil.normalizeName(relationship.getParentTable()));
+ KeyRecord pk = parent.getPrimaryKey();
+ if (null == pk) {
+ throw new RuntimeException("ERROR !!primary key column not
found!!"); //$NON-NLS-1$
+ }
+ ArrayList<String> columnNames = new ArrayList<String>();
+ columnNames.add(pk.getName());
+
+
+ Table child = tableMap.get(NameUtil.normalizeName(relationship.getChildTable()));
+
+ Column col = null;
+ columns = child.getColumns();
+ for (Iterator colIter = columns.iterator(); colIter.hasNext();) {
+ Column column = (Column) colIter.next();
+ if(column.getName().equals(relationship.getForeignKeyField())) {
+ col = column;
+ }
+ }
+ if (null == col) throw new RuntimeException(
+ "ERROR !!foreign key column not found!! " + child.getName()
+ relationship.getForeignKeyField()); //$NON-NLS-1$
+
+
+ String columnName = "FK_" + parent.getName() + "_" +
col.getName();//$NON-NLS-1$ //$NON-NLS-2$
+ ArrayList<String> columnNames2 = new ArrayList<String>();
+ columnNames2.add(col.getName());
+ metadataFactory.addForiegnKey(columnName, columnNames2, parent, child);
+
+ }
+
+
+ }
+
+ public static boolean isAuditField(String name) {
+ boolean result = false;
+ if(name.equals(AUDIT_FIELD_CREATED_BY_ID) ||
+ name.equals(AUDIT_FIELD_CREATED_DATE) ||
+ name.equals(AUDIT_FIELD_LAST_MODIFIED_BY_ID) ||
+ name.equals(AUDIT_FIELD_LAST_MODIFIED_DATE) ||
+ name.equals(AUDIT_FIELD_SYSTEM_MOD_STAMP)) {
+ result = true;
+ }
+ return result;
+ }
+
+ private void addTable(DescribeGlobalSObjectResult object) throws ConnectorException {
+ DescribeSObjectResult objectMetadata = connection.getObjectMetaData(object.getName());
+ String name = NameUtil.normalizeName(objectMetadata.getName());
+ Table table = metadataFactory.addTable(name);
+
+ table.setNameInSource(objectMetadata.getName());
+ tableMap.put(name, table);
+ getRelationships(objectMetadata);
+
+ table.setProperty(TABLE_CUSTOM, String.valueOf(objectMetadata.isCustom()));
+ table.setProperty(TABLE_SUPPORTS_CREATE,
String.valueOf(objectMetadata.isCreateable()));
+ table.setProperty(TABLE_SUPPORTS_DELETE,
String.valueOf(objectMetadata.isDeletable()));
+ table.setProperty(TABLE_SUPPORTS_MERGE, String.valueOf(objectMetadata.isMergeable()));
+ table.setProperty(TABLE_SUPPORTS_QUERY, String.valueOf(objectMetadata.isQueryable()));
+ table.setProperty(TABLE_SUPPORTS_REPLICATE,
String.valueOf(objectMetadata.isReplicateable()));
+ table.setProperty(TABLE_SUPPORTS_RETRIEVE,
String.valueOf(objectMetadata.isRetrieveable()));
+ table.setProperty(TABLE_SUPPORTS_SEARCH,
String.valueOf(objectMetadata.isSearchable()));
+
+ hasUpdateableColumn = false;
+ addColumns(objectMetadata, table);
+
+ // Some SF objects return true for isUpdateable() but have no updateable columns.
+ if(hasUpdateableColumn && objectMetadata.isUpdateable()) {
+ table.setSupportsUpdate(true);
+ }
+ }
+
+ private void getRelationships(DescribeSObjectResult objectMetadata) {
+ List<ChildRelationship> children = objectMetadata.getChildRelationships();
+ if(children != null && children.size() != 0) {
+ for (ChildRelationship childRelation : children) {
+ Relationship newRelation = new RelationshipImpl();
+ newRelation.setParentTable(objectMetadata.getName());
+ newRelation.setChildTable(childRelation.getChildSObject());
+ newRelation.setForeignKeyField(childRelation.getField());
+ newRelation.setCascadeDelete(childRelation.isCascadeDelete());
+ relationships.add(newRelation);
+ }
+ }
+ }
+
+ private void addColumns(DescribeSObjectResult objectMetadata, Table table) throws
ConnectorException {
+ List<Field> fields = objectMetadata.getFields();
+ for (Field field : fields) {
+ String normalizedName = NameUtil.normalizeName(field.getName());
+ FieldType fieldType = field.getType();
+ if(!this.connectorEnv.isModelAuditFields() && isAuditField(field.getName()))
{
+ continue;
+ }
+ String sfTypeName = fieldType.value();
+ Column column = null;
+ if(sfTypeName.equals(FieldType.STRING) || //string
+ sfTypeName.equals(FieldType.COMBOBOX) || //"combobox"
+ sfTypeName.equals(FieldType.REFERENCE) || //"reference"
+ sfTypeName.equals(FieldType.PHONE) || //"phone"
+ sfTypeName.equals(FieldType.ID) || //"id"
+ sfTypeName.equals(FieldType.URL) || //"url"
+ sfTypeName.equals(FieldType.EMAIL) || //"email"
+ sfTypeName.equals(FieldType.ENCRYPTEDSTRING) || //"encryptedstring"
+ sfTypeName.equals(FieldType.ANY_TYPE)) { //"anytype"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.STRING, table);
+ column.setNativeType(sfTypeName);
+ if(sfTypeName.equals(FieldType.ID)) {
+ column.setNullType(NullType.No_Nulls);
+ ArrayList<String> columnNames = new ArrayList<String>();
+ columnNames.add(field.getName());
+ metadataFactory.addPrimaryKey(field.getName()+"_PK", columnNames, table);
+ }
+ }
+ else if(sfTypeName.equals(FieldType.PICKLIST)) { // "picklist"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.STRING, table);
+ if(field.isRestrictedPicklist()) {
+ column.setNativeType("restrictedpicklist");
+ } else {
+ column.setNativeType(sfTypeName);
+ }
+
+ column.setProperty(COLUMN_PICKLIST_VALUES, getPicklistValues(field));
+ }
+ else if(sfTypeName.equals(FieldType.MULTIPICKLIST)) { //"multipicklist"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.STRING, table);
+ if(field.isRestrictedPicklist()) {
+ column.setNativeType("restrictedmultiselectpicklist");
+ } else {
+ column.setNativeType(sfTypeName);
+ }
+ column.setProperty(COLUMN_PICKLIST_VALUES, getPicklistValues(field));
+ }
+ else if(sfTypeName.equals(FieldType.BASE_64)) { //"base64"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.BLOB, table);
+ column.setNativeType(sfTypeName);
+ }
+ else if(sfTypeName.equals(FieldType.BOOLEAN)) { //"boolean"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.BOOLEAN, table);
+ column.setNativeType(sfTypeName);
+ }
+ else if(sfTypeName.equals(FieldType.CURRENCY)) { //"currency"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.DOUBLE, table);
+ column.setNativeType(sfTypeName);
+ column.setCurrency(true);
+ column.setScale(field.getScale());
+ column.setPrecision(field.getPrecision());
+ }
+ else if(sfTypeName.equals(FieldType.TEXTAREA)) { //"textarea"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.STRING, table);
+ column.setNativeType(sfTypeName);
+ column.setSearchType(SearchType.Unsearchable);
+ }
+ else if(sfTypeName.equals(FieldType.INT)) { //"int"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.INTEGER, table);
+ column.setNativeType(sfTypeName);
+ column.setPrecision(field.getPrecision());
+ }
+ else if(sfTypeName.equals(FieldType.DOUBLE) || //"double"
+ sfTypeName.equals(FieldType.PERCENT)) { //"percent"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.DOUBLE, table);
+ column.setNativeType(sfTypeName);
+ column.setScale(field.getScale());
+ column.setPrecision(field.getPrecision());
+ }
+ else if(sfTypeName.equals(FieldType.DATE)) { //"date"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.DATE, table);
+ column.setNativeType(sfTypeName);
+ }
+ else if(sfTypeName.equals(FieldType.DATETIME)) { //"datetime"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.TIMESTAMP, table);
+ column.setNativeType(sfTypeName);
+ }
+ else if(sfTypeName.equals(FieldType.TIME)) { //"time"
+ column = metadataFactory.addColumn(normalizedName,
DataTypeManager.DefaultDataTypes.TIME, table);
+ column.setNativeType(sfTypeName);
+ }
+ if(null == column) {
+ LogManager.logError(LogConstants.CTX_CONNECTOR, "Unknown type returned by
SalesForce: " + sfTypeName);
+ continue;
+ } else {
+ column.setNameInSource(field.getName());
+ column.setLength(field.getLength());
+ if(field.isUpdateable()) {
+ column.setUpdatable(true);
+ hasUpdateableColumn = true;
+ }
+ column.setProperty(COLUMN_CALCULATED, String.valueOf(field.isCalculated()));
+ column.setProperty(COLUMN_CUSTOM, String.valueOf(field.isCustom()));
+ column.setProperty(COLUMN_DEFAULTED, String.valueOf(field.isDefaultedOnCreate()));
+ }
+
+ }
+ }
+
+ private String getPicklistValues(Field field) {
+ StringBuffer picklistValues = new StringBuffer();
+ if(null != field.getPicklistValues() && 0 != field.getPicklistValues().size())
{
+ List<PicklistEntry> entries = field.getPicklistValues();
+ for (Iterator<PicklistEntry> iterator = entries.iterator(); iterator.hasNext();)
{
+ PicklistEntry entry = iterator.next();
+ picklistValues.append(entry.getValue());
+ if(iterator.hasNext()) {
+ picklistValues.append(',');
+ }
+ }
+ }
+ return picklistValues.toString();
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/NameUtil.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/NameUtil.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/NameUtil.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/NameUtil.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ *
+ * See the LEGAL.txt file distributed with this work for information regarding copyright
ownership and licensing.
+ *
+ * See the AUTHORS.txt file distributed with this work for a full listing of individual
contributors.
+ */
+package org.teiid.translator.salesforce;
+
+import org.teiid.language.SQLReservedWords;
+
+public class NameUtil {
+
+ public static String normalizeName( String nameIn ) {
+ String normal = nameIn.trim();
+ normal = removeDuplicate(normal);
+ normal = removeSpaces(normal);
+ normal = removeIllegalChars(normal);
+ normal = removeTrailingUnderscore(normal);
+ normal = removeLeadingUnderscore(normal);
+ normal = checkReservedWords(normal);
+ return normal;
+
+ }
+
+ /**
+ * @param normal
+ * @return
+ */
+ private static String checkReservedWords( String normal ) {
+ if (SQLReservedWords.isReservedWord(normal)) {
+ normal = normal + "_"; //$NON-NLS-1$
+ }
+ return normal;
+ }
+
+ private static String removeTrailingUnderscore( String normal ) {
+ if (normal.endsWith("_")) { //$NON-NLS-1$
+ return normal.substring(0, normal.lastIndexOf('_'));
+ }
+ return normal;
+ }
+
+ private static String removeIllegalChars( String normal ) {
+ String edit = normal;
+ edit = edit.replace('.', '_');
+ edit = edit.replace('(', '_');
+ edit = edit.replace(')', '_');
+ edit = edit.replace('/', '_');
+ edit = edit.replace('\\', '_');
+ edit = edit.replace(':', '_');
+ edit = edit.replace('\'', '_');
+ edit = edit.replace('-', '_');
+ edit = edit.replace("%", "percentage");//$NON-NLS-1$
//$NON-NLS-2$
+ edit = edit.replace("#", "number");//$NON-NLS-1$
//$NON-NLS-2$
+ edit = edit.replace("$", "_");//$NON-NLS-1$ //$NON-NLS-2$
+ edit = edit.replace("{", "_");//$NON-NLS-1$ //$NON-NLS-2$
+ edit = edit.replace("}", "_");//$NON-NLS-1$ //$NON-NLS-2$
+ return edit;
+ }
+
+ private static String removeSpaces( String normal ) {
+ return normal.replace(' ', '_');
+ }
+
+ private static String removeDuplicate( String normal ) {
+ if (normal.indexOf('(') < 0 || normal.indexOf(')') !=
normal.length() - 1) return normal;
+ String firstPart = normal.substring(0, normal.indexOf('(')).trim();
+ String secondPart = normal.substring(normal.indexOf('(') + 1,
normal.length() - 1).trim();
+ if (firstPart.equals(secondPart) || secondPart.equals("null")) return
firstPart; //$NON-NLS-1$
+ return normal;
+ }
+
+ /**
+ * @param normal
+ * @return
+ */
+ private static String removeLeadingUnderscore( String normal ) {
+ while (normal.indexOf('_') == 0) {
+ normal = normal.substring(1);
+ }
+ return normal;
+ }
+
+}
\ No newline at end of file
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Relationship.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/Relationship.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Relationship.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Relationship.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,21 @@
+package org.teiid.translator.salesforce;
+
+public interface Relationship {
+
+ void setParentTable(String name);
+
+ void setChildTable(String childSObject);
+
+ void setForeignKeyField(String field);
+
+ void setCascadeDelete(boolean cascadeDelete);
+
+ public boolean isCascadeDelete();
+
+ public String getChildTable();
+
+ public String getForeignKeyField();
+
+ public String getParentTable();
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/RelationshipImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/RelationshipImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/RelationshipImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/RelationshipImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,40 @@
+package org.teiid.translator.salesforce;
+
+public class RelationshipImpl implements Relationship {
+ boolean cascadeDelete;
+ public String childTablename;
+ public String parentTableName;
+ public String foreignKeyField;
+
+ public void setCascadeDelete(boolean delete) {
+ cascadeDelete = delete;
+ }
+
+ public boolean isCascadeDelete() {
+ return cascadeDelete;
+ }
+
+ public void setChildTable(String childTable) {
+ childTablename = childTable;
+ }
+
+ public String getChildTable() {
+ return childTablename;
+ }
+
+ public String getForeignKeyField() {
+ return foreignKeyField;
+ }
+
+ public void setForeignKeyField(String foreignKeyField) {
+ this.foreignKeyField = foreignKeyField;
+ }
+
+ public String getParentTable() {
+ return parentTableName;
+ }
+
+ public void setParentTable(String parentTableName) {
+ this.parentTableName = parentTableName;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForceExecutionFactory.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceExecutionFactory.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForceExecutionFactory.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForceExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,111 @@
+/*
+ * 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.translator.salesforce;
+
+import org.teiid.language.Call;
+import org.teiid.language.Command;
+import org.teiid.language.QueryExpression;
+import org.teiid.logging.LogConstants;
+import org.teiid.logging.LogManager;
+import org.teiid.metadata.MetadataFactory;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ConnectorCapabilities;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.MetadataProvider;
+import org.teiid.translator.ProcedureExecution;
+import org.teiid.translator.ResultSetExecution;
+import org.teiid.translator.TranslatorProperty;
+import org.teiid.translator.UpdateExecution;
+import org.teiid.translator.salesforce.execution.DeleteExecutionImpl;
+import org.teiid.translator.salesforce.execution.InsertExecutionImpl;
+import org.teiid.translator.salesforce.execution.ProcedureExecutionParentImpl;
+import org.teiid.translator.salesforce.execution.QueryExecutionImpl;
+import org.teiid.translator.salesforce.execution.UpdateExecutionImpl;
+
+
+public class SalesForceExecutionFactory extends
org.teiid.translator.BasicExecutionFactory implements MetadataProvider {
+
+ private String connectorStateClass;
+ private boolean auditModelFields = false;
+
+
+ public String getConnectorStateClass() {
+ return this.connectorStateClass;
+ }
+ public void setConnectorStateClass(String connectorStateClass) {
+ this.connectorStateClass = connectorStateClass;
+ }
+
+ @TranslatorProperty(name="ModelAuditFields", display="Audit Model
Fields", advanced=true, defaultValue="false")
+ public boolean isModelAuditFields() {
+ return this.auditModelFields;
+ }
+
+ public void setModelAuditFields(boolean modelAuditFields) {
+ this.auditModelFields = modelAuditFields;
+ }
+
+ @Override
+ public void start() throws ConnectorException {
+ super.start();
+ LogManager.logTrace(LogConstants.CTX_CONNECTOR, "Started"); //$NON-NLS-1$
+ }
+
+
+ @Override
+ public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
+ return SalesforceCapabilities.class;
+ }
+
+ @Override
+ public ResultSetExecution createResultSetExecution(QueryExpression command,
ExecutionContext executionContext, RuntimeMetadata metadata, Object connectionFactory)
+ throws ConnectorException {
+ return new QueryExecutionImpl(command, (SalesforceConnection)connectionFactory,
metadata, executionContext);
+ }
+
+ @Override
+ public UpdateExecution createUpdateExecution(Command command, ExecutionContext
executionContext, RuntimeMetadata metadata, Object connectionFactory) throws
ConnectorException {
+ UpdateExecution result = null;
+ if(command instanceof org.teiid.language.Delete) {
+ result = new DeleteExecutionImpl(command, (SalesforceConnection)connectionFactory,
metadata, executionContext);
+ } else if (command instanceof org.teiid.language.Insert) {
+ result = new InsertExecutionImpl(command, (SalesforceConnection)connectionFactory,
metadata, executionContext);
+ } else if (command instanceof org.teiid.language.Update) {
+ result = new UpdateExecutionImpl(command, (SalesforceConnection)connectionFactory,
metadata, executionContext);
+ }
+ return result;
+
+ }
+
+ @Override
+ public ProcedureExecution createProcedureExecution(Call command,ExecutionContext
executionContext, RuntimeMetadata metadata, Object connectionFactory)
+ throws ConnectorException {
+ return new ProcedureExecutionParentImpl(command,
(SalesforceConnection)connectionFactory, metadata, executionContext);
+ }
+ @Override
+ public void getConnectorMetadata(MetadataFactory metadataFactory, Object
connectionFactory) throws ConnectorException {
+ MetadataProcessor processor = new
MetadataProcessor((SalesforceConnection)connectionFactory,metadataFactory, this);
+ processor.processMetadata();
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForcePlugin.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForcePlugin.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForcePlugin.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesForcePlugin.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,46 @@
+/*
+ * 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.translator.salesforce;
+
+import java.util.ResourceBundle;
+
+import org.teiid.core.BundleUtil;
+
+
+/**
+ * For logging purposes
+ */
+public class SalesForcePlugin {
+
+ /**
+ * The plug-in identifier of this plugin
+ */
+ public static final String PLUGIN_ID = "org.teiid.translator.salesforce" ;
//$NON-NLS-1$
+
+ /**
+ * Provides access to the plugin's log and to it's resources.
+ */
+ private static final String BUNDLE_NAME = PLUGIN_ID + ".i18n";
//$NON-NLS-1$
+ public static final BundleUtil Util = new
BundleUtil(PLUGIN_ID,BUNDLE_NAME,ResourceBundle.getBundle(BUNDLE_NAME));
+
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceCapabilities.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceCapabilities.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceCapabilities.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,96 @@
+/*
+ * 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.translator.salesforce;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.translator.BasicConnectorCapabilities;
+
+public class SalesforceCapabilities extends BasicConnectorCapabilities {
+
+ public int getMaxInCriteriaSize() {
+ return 700;
+ }
+
+ public List getSupportedFunctions() {
+ List<String> supportedFunctions = new ArrayList<String>();
+ supportedFunctions.add("includes");
+ supportedFunctions.add("excludes");
+ return supportedFunctions;
+ }
+
+ public boolean supportsCompareCriteriaEquals() {
+ return true;
+ }
+
+ public boolean supportsInCriteria() {
+ return true;
+ }
+
+ public boolean supportsLikeCriteria() {
+ return true;
+ }
+
+ public boolean supportsRowLimit() {
+ return true;
+ }
+
+ //
http://jira.jboss.org/jira/browse/JBEDSP-306
+ // Salesforce supports ORDER BY, but not on all column types
+ public boolean supportsOrderBy() {
+ return false;
+ }
+
+ @Override
+ public boolean supportsAggregatesCountStar() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsNotCriteria() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsOrCriteria() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsCompareCriteriaOrdered() {
+ return true;
+ }
+
+ @Override
+ public SupportedJoinCriteria getSupportedJoinCriteria() {
+ return SupportedJoinCriteria.KEY;
+ }
+
+ @Override
+ public boolean supportsOuterJoins() {
+ return true;
+ }
+
+
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceConnection.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnection.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceConnection.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/SalesforceConnection.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,60 @@
+/*
+ * 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.translator.salesforce;
+
+import java.util.List;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.salesforce.execution.DataPayload;
+import org.teiid.translator.salesforce.execution.DeletedResult;
+import org.teiid.translator.salesforce.execution.UpdatedResult;
+
+import com.sforce.soap.partner.DescribeGlobalResult;
+import com.sforce.soap.partner.DescribeSObjectResult;
+import com.sforce.soap.partner.QueryResult;
+
+public interface SalesforceConnection {
+
+ public QueryResult query(String queryString, int maxBatchSize, Boolean queryAll) throws
ConnectorException;
+
+ public QueryResult queryMore(String queryLocator, int batchSize) throws
ConnectorException;
+
+ public boolean isAlive();
+
+ public int delete(String[] ids) throws ConnectorException ;
+
+ public int create(DataPayload data) throws ConnectorException;
+
+ public int update(List<DataPayload> updateDataList) throws ConnectorException;
+
+ public UpdatedResult getUpdated(String objectName, XMLGregorianCalendar startCalendar,
XMLGregorianCalendar endCalendar) throws ConnectorException;
+
+ public DeletedResult getDeleted(String objectName, XMLGregorianCalendar startCalendar,
XMLGregorianCalendar endCalendar) throws ConnectorException;
+
+ public QueryResult retrieve(String fieldList, String sObjectType, List<String>
ids) throws ConnectorException;
+
+ public DescribeGlobalResult getObjects() throws ConnectorException;
+
+ public DescribeSObjectResult getObjectMetaData(String objectName) throws
ConnectorException;
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/Util.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,71 @@
+/*
+ * 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.translator.salesforce;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+import org.teiid.translator.ConnectorException;
+
+
+public class Util {
+
+ public static String stripQutes(String id) {
+ if((id.startsWith("'") && id.endsWith("'"))) {
+ id = id.substring(1,id.length()-1);
+ } else if ((id.startsWith("\"") &&
id.endsWith("\""))) {
+ id = id.substring(1,id.length()-1);
+ }
+ return id;
+ }
+
+ public static String addSingleQuotes(String text) {
+ StringBuffer result = new StringBuffer();
+ if(!text.startsWith("'")) {
+ result.append('\'');
+ }
+ result.append(text);
+ if(!text.endsWith("'")) {
+ result.append('\'');
+ }
+ return result.toString();
+ }
+
+ public static void validateQueryLength(StringBuffer query) throws ConnectorException {
+ if(query.length() >= 10000) {
+ throw new
ConnectorException(Messages.getString("Util.query.exceeds.max.length"));
+ }
+ }
+
+ public static SimpleDateFormat getSalesforceDateTimeFormat() {
+ return new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ }
+
+ public static SimpleDateFormat getTimeZoneOffsetFormat() {
+ return new SimpleDateFormat("Z");
+ }
+
+ public static DateFormat getSalesforceDateFormat() {
+ return new SimpleDateFormat("yyyy-MM-dd");
+ }
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/AbstractUpdateExecution.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/AbstractUpdateExecution.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/AbstractUpdateExecution.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/AbstractUpdateExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,115 @@
+/*
+ * 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.translator.salesforce.execution;
+
+import java.util.ArrayList;
+
+import org.teiid.language.Command;
+import org.teiid.language.Comparison;
+import org.teiid.language.Condition;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.BasicExecution;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.UpdateExecution;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.Util;
+import org.teiid.translator.salesforce.execution.visitors.IQueryProvidingVisitor;
+
+import com.sforce.soap.partner.QueryResult;
+import com.sforce.soap.partner.sobject.SObject;
+
+/**
+ *
+ * Parent class to the Update, Delete, and Insert execution classes.
+ * Provisions the correct impl and contains some common code to
+ * get IDs of Salesforce objects.
+ *
+ */
+public abstract class AbstractUpdateExecution extends BasicExecution implements
UpdateExecution {
+
+ protected SalesforceConnection connection;
+ protected RuntimeMetadata metadata;
+ protected ExecutionContext context;
+ protected Command command;
+ protected int result;
+
+ public AbstractUpdateExecution(Command command,
+ SalesforceConnection salesforceConnection,
+ RuntimeMetadata metadata, ExecutionContext context) {
+ this.connection = salesforceConnection;
+ this.metadata = metadata;
+ this.context = context;
+ this.command = command;
+ }
+
+ @Override
+ public void cancel() throws ConnectorException {
+ }
+
+ @Override
+ public void close() throws ConnectorException {
+ }
+
+ @Override
+ public int[] getUpdateCounts() throws DataNotAvailableException,
+ ConnectorException {
+ return new int[] {result};
+ }
+
+ public RuntimeMetadata getMetadata() {
+ return metadata;
+ }
+
+ public SalesforceConnection getConnection() {
+ return connection;
+ }
+
+ String[] getIDs(Condition criteria, IQueryProvidingVisitor visitor) throws
ConnectorException {
+ String[] Ids = null;
+ if (visitor.hasOnlyIDCriteria()) {
+ try {
+ String Id = ((Comparison)criteria).getRightExpression().toString();
+ Id = Util.stripQutes(Id);
+ Ids = new String[] { Id };
+ } catch (ClassCastException cce) {
+ throw new RuntimeException(
+ "Error: The delete criteria is not a CompareCriteria");
+ }
+
+ } else if (visitor.hasCriteria()) {
+ String query = visitor.getQuery();
+ QueryResult results = getConnection().query(query, context.getBatchSize(),
Boolean.FALSE);
+ if (null != results && results.getSize() > 0) {
+ ArrayList<String> idList = new ArrayList<String>(results
+ .getRecords().size());
+ for (int i = 0; i < results.getRecords().size(); i++) {
+ SObject sObject = results.getRecords().get(i);
+ idList.add(sObject.getId());
+ }
+ Ids = idList.toArray(new String[0]);
+ }
+ }
+ return Ids;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DataPayload.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/DataPayload.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DataPayload.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DataPayload.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,65 @@
+/*
+ * 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.translator.salesforce.execution;
+
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+/**
+ *
+ * A bucket to pass data to the Salesforce connection.
+ *
+ */
+public class DataPayload {
+
+ private String type;
+ @SuppressWarnings("unchecked")
+ private List<JAXBElement> messageElements;
+ private String id;
+
+ public void setType(String typeName) {
+ type = typeName;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void setMessageElements(List<JAXBElement> elements) {
+ this.messageElements = elements;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ @SuppressWarnings("unchecked")
+ public List<JAXBElement> getMessageElements() {
+ return messageElements;
+ }
+
+ public void setID(String id) {
+ this.id = id;
+ }
+
+ public String getID() {
+ return id;
+ }
+}
\ No newline at end of file
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeleteExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/DeleteExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeleteExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeleteExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -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.translator.salesforce.execution;
+
+import org.teiid.language.Command;
+import org.teiid.language.Delete;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.execution.visitors.DeleteVisitor;
+
+
+public class DeleteExecutionImpl extends AbstractUpdateExecution {
+
+
+ public DeleteExecutionImpl(Command command,
+ SalesforceConnection salesforceConnection,
+ RuntimeMetadata metadata, ExecutionContext context) {
+ super(command, salesforceConnection, metadata, context);
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ DeleteVisitor dVisitor = new DeleteVisitor(getMetadata());
+ dVisitor.visitNode(command);
+ String[] Ids = getIDs(((Delete)command).getWhere(), dVisitor);
+ if(null != Ids && Ids.length > 0) {
+ result = getConnection().delete(Ids);
+ }
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedObject.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/DeletedObject.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedObject.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedObject.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,22 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.util.Calendar;
+
+public class DeletedObject {
+
+ String ID;
+ Calendar deletedDate;
+
+ public String getID() {
+ return ID;
+ }
+ public void setID(String id) {
+ ID = id;
+ }
+ public Calendar getDeletedDate() {
+ return deletedDate;
+ }
+ public void setDeletedDate(Calendar deletedDate) {
+ this.deletedDate = deletedDate;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedResult.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/DeletedResult.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedResult.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/DeletedResult.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,36 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.util.Calendar;
+import java.util.List;
+
+public class DeletedResult {
+
+ private Calendar latestDateCovered;
+ private Calendar earliestDateAvailable;
+ private List<DeletedObject> resultRecords;
+
+ public Calendar getLatestDateCovered() {
+ return latestDateCovered;
+ }
+
+ public void setLatestDateCovered(Calendar latestDateCovered) {
+ this.latestDateCovered = latestDateCovered;
+ }
+
+
+ public Calendar getEarliestDateAvailable() {
+ return earliestDateAvailable;
+ }
+
+ public void setEarliestDateAvailable(Calendar earliestDateAvailable) {
+ this.earliestDateAvailable = earliestDateAvailable;
+ }
+
+ public void setResultRecords(List<DeletedObject> resultRecords) {
+ this.resultRecords = resultRecords;
+ }
+
+ public List<DeletedObject> getResultRecords() {
+ return resultRecords;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetDeletedExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/GetDeletedExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetDeletedExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetDeletedExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,106 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.teiid.language.Argument;
+import org.teiid.language.Call;
+import org.teiid.translator.ConnectorException;
+
+/**
+ *
+ * The structure of the getDeleted procedure is:
+ * Salesforce object type: String: IN param
+ * startDate: datatime: IN param
+ * enddate: datetime: IN param
+ * earliestDateAvailable: datetime: OUT param
+ * latestDateCovered: datetime: OUT param
+ * getUpdatedResult: resultset: OUT param
+ *
+ */
+
+public class GetDeletedExecutionImpl implements SalesforceProcedureExecution {
+
+ private static final int EARLIESTDATEAVAILABLE = 4;
+ private static final int RESULT = 5;
+
+ private ProcedureExecutionParent parent;
+
+ private DeletedResult deletedResult;
+ private int resultIndex = 0;
+ DatatypeFactory factory;
+
+ public GetDeletedExecutionImpl(
+ ProcedureExecutionParent procedureExecutionParent) throws ConnectorException {
+ this.parent = procedureExecutionParent;
+ try {
+ factory = DatatypeFactory.newInstance();
+ } catch (DatatypeConfigurationException e) {
+ throw new ConnectorException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void cancel() {
+ // nothing to do here
+
+ }
+
+ @Override
+ public void close() {
+ // nothing to do here
+
+ }
+
+ @Override
+ public void execute(ProcedureExecutionParent procedureExecutionParent) throws
ConnectorException {
+ Call command = parent.getCommand();
+ List<Argument> params = command.getArguments();
+
+ Argument object = params.get(OBJECT);
+ String objectName = (String) object.getArgumentValue().getValue();
+
+ Argument start = params.get(STARTDATE);
+ Timestamp startTime = (Timestamp) start.getArgumentValue().getValue();
+ GregorianCalendar tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
+ tempCalendar.setTime(startTime);
+ XMLGregorianCalendar startCalendar = factory.newXMLGregorianCalendar(tempCalendar);
+
+ Argument end = params.get(ENDDATE);
+ Timestamp endTime = (Timestamp) end.getArgumentValue().getValue();
+ tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
+ tempCalendar.setTime(endTime);
+ XMLGregorianCalendar endCalendar = factory.newXMLGregorianCalendar(tempCalendar);
+
+ deletedResult = parent.getConnection().getDeleted(objectName, startCalendar,
endCalendar);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<?> getOutputParameterValues() {
+ List result = new ArrayList();
+ result.add(deletedResult.getLatestDateCovered());
+ result.add(deletedResult.getEarliestDateAvailable());
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<?> next() {
+ List result = null;
+ if(deletedResult.getResultRecords() != null && resultIndex <
deletedResult.getResultRecords().size()){
+ result = new ArrayList(2);
+ result.add(deletedResult.getResultRecords().get(resultIndex).getID());
+ result.add(deletedResult.getResultRecords().get(resultIndex).getDeletedDate());
+ resultIndex++;
+ }
+ return result;
+ }
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetUpdatedExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/GetUpdatedExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetUpdatedExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/GetUpdatedExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,99 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.teiid.language.Argument;
+import org.teiid.language.Call;
+import org.teiid.translator.ConnectorException;
+
+/**
+ *
+ * The structure of the getUpdated procedure is:
+ * Salesforce object type: String: IN param
+ * startDate: datatime: IN param
+ * enddate: datetime: IN param
+ * latestDateCovered: datetime: OUT param
+ * getUpdatedResult: resultset: OUT param
+ *
+ */
+
+public class GetUpdatedExecutionImpl implements SalesforceProcedureExecution {
+
+ private static final int RESULT = 4;
+
+ private ProcedureExecutionParent parent;
+ private UpdatedResult updatedResult;
+ private int idIndex = 0;
+ DatatypeFactory factory;
+
+ public GetUpdatedExecutionImpl(
+ ProcedureExecutionParent procedureExecutionParent) throws ConnectorException {
+ this.parent = procedureExecutionParent;
+ try {
+ factory = DatatypeFactory.newInstance();
+ } catch (DatatypeConfigurationException e) {
+ throw new ConnectorException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void cancel() {
+ // nothing to do here
+ }
+
+ @Override
+ public void close() {
+ // nothing to do here
+ }
+
+ @Override
+ public void execute(ProcedureExecutionParent procedureExecutionParent) throws
ConnectorException {
+ Call command = parent.getCommand();
+ List<Argument> params = command.getArguments();
+
+ Argument object = params.get(OBJECT);
+ String objectName = (String) object.getArgumentValue().getValue();
+
+ Argument start = params.get(STARTDATE);
+ Timestamp startTime = (Timestamp) start.getArgumentValue().getValue();
+ GregorianCalendar tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
+ tempCalendar.setTime(startTime);
+ XMLGregorianCalendar startCalendar = factory.newXMLGregorianCalendar(tempCalendar);
+
+ Argument end = params.get(ENDDATE);
+ Timestamp endTime = (Timestamp) end.getArgumentValue().getValue();
+ tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
+ tempCalendar.setTime(endTime);
+ XMLGregorianCalendar endCalendar = factory.newXMLGregorianCalendar(tempCalendar);
+
+ updatedResult = parent.getConnection().getUpdated(objectName, startCalendar,
endCalendar);
+ }
+
+ @Override
+ public List<Calendar> getOutputParameterValues() {
+ List<Calendar> result = new ArrayList<Calendar>(1);
+ result.add(updatedResult.getLatestDateCovered());
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List next() {
+ List result = null;
+ if(updatedResult.getIDs() != null && idIndex <
updatedResult.getIDs().size()){
+ result = new ArrayList(1);
+ result.add(updatedResult.getIDs().get(idIndex));
+ idIndex++;
+ }
+ return result;
+ }
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/InsertExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/InsertExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/InsertExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/InsertExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -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.translator.salesforce.execution;
+
+
+import org.teiid.language.Command;
+import org.teiid.language.Insert;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.execution.visitors.InsertVisitor;
+
+
+public class InsertExecutionImpl extends AbstractUpdateExecution {
+
+ public InsertExecutionImpl(Command command,
+ SalesforceConnection salesforceConnection,
+ RuntimeMetadata metadata, ExecutionContext context) {
+ super(command, salesforceConnection, metadata, context);
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ InsertVisitor visitor = new InsertVisitor(getMetadata());
+ visitor.visit((Insert)command);
+ DataPayload data = new DataPayload();
+ data.setType(visitor.getTableName());
+ data.setMessageElements(visitor.getMessageElements());
+ result = getConnection().create(data);
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParent.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/ProcedureExecutionParent.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParent.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParent.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,18 @@
+package org.teiid.translator.salesforce.execution;
+
+import org.teiid.language.Call;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.SalesforceConnection;
+
+
+public interface ProcedureExecutionParent {
+
+ public Call getCommand();
+
+ public ExecutionContext getExecutionContext();
+
+ public RuntimeMetadata getMetadata();
+
+ public SalesforceConnection getConnection();
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParentImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/ProcedureExecutionParentImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParentImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/ProcedureExecutionParentImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,93 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.util.List;
+
+import org.teiid.language.Call;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.ProcedureExecution;
+import org.teiid.translator.salesforce.SalesforceConnection;
+
+
+public class ProcedureExecutionParentImpl implements ProcedureExecution,
ProcedureExecutionParent {
+
+ private Call command;
+ private ExecutionContext executionContext;
+ private RuntimeMetadata metadata;
+ private SalesforceProcedureExecution execution;
+ private SalesforceConnection connection;
+
+ public ProcedureExecutionParentImpl(Call command,
+ SalesforceConnection connection, RuntimeMetadata metadata, ExecutionContext
executionContext) {
+ this.setCommand(command);
+ this.setConnection(connection);
+ this.setMetadata(metadata);
+ this.setExecutionContext(executionContext);
+ }
+
+ @Override
+ public List<?> getOutputParameterValues() throws ConnectorException {
+ return execution.getOutputParameterValues();
+ }
+
+ @Override
+ public List<?> next() throws ConnectorException, DataNotAvailableException {
+ return execution.next();
+ }
+
+ @Override
+ public void cancel() throws ConnectorException {
+ execution.cancel();
+ }
+
+ @Override
+ public void close() throws ConnectorException {
+ execution.close();
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ if(getCommand().getProcedureName().endsWith("getUpdated")) {
+ execution = new GetUpdatedExecutionImpl(this);
+ execution.execute(this);
+ }
+ else if(getCommand().getProcedureName().endsWith("getDeleted")) {
+ execution = new GetDeletedExecutionImpl(this);
+ execution.execute(this);
+ }
+ }
+
+ public void setCommand(Call command) {
+ this.command = command;
+ }
+
+ public Call getCommand() {
+ return command;
+ }
+
+ private void setConnection(SalesforceConnection connection) {
+ this.connection = connection;
+ }
+
+ public SalesforceConnection getConnection() {
+ return connection;
+ }
+
+ private void setExecutionContext(ExecutionContext executionContext) {
+ this.executionContext = executionContext;
+ }
+
+ public ExecutionContext getExecutionContext() {
+ return executionContext;
+ }
+
+ private void setMetadata(RuntimeMetadata metadata) {
+ this.metadata = metadata;
+ }
+
+ public RuntimeMetadata getMetadata() {
+ return metadata;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/QueryExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,365 @@
+/*
+ * 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.translator.salesforce.execution;
+
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.teiid.language.AggregateFunction;
+import org.teiid.language.Join;
+import org.teiid.language.QueryExpression;
+import org.teiid.language.Select;
+import org.teiid.language.TableReference;
+import org.teiid.logging.LogConstants;
+import org.teiid.logging.LogManager;
+import org.teiid.metadata.AbstractMetadataRecord;
+import org.teiid.metadata.Column;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.metadata.Table;
+import org.teiid.translator.BasicExecution;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.DataNotAvailableException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.ResultSetExecution;
+import org.teiid.translator.salesforce.Messages;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.Util;
+import org.teiid.translator.salesforce.execution.visitors.JoinQueryVisitor;
+import org.teiid.translator.salesforce.execution.visitors.SelectVisitor;
+import org.w3c.dom.Element;
+
+import com.sforce.soap.partner.QueryResult;
+import com.sforce.soap.partner.sobject.SObject;
+
+public class QueryExecutionImpl extends BasicExecution implements ResultSetExecution {
+
+ private SalesforceConnection connection;
+
+ private RuntimeMetadata metadata;
+
+ private ExecutionContext context;
+
+
+ private SelectVisitor visitor;
+
+ private QueryResult results;
+
+ private List<List<Object>> resultBatch;
+
+ // Identifying values
+ private String connectionIdentifier;
+
+ private String connectorIdentifier;
+
+ private String requestIdentifier;
+
+ private String partIdentifier;
+
+ private String logPreamble;
+
+ private QueryExpression query;
+
+ Map<String, Map<String,Integer>> sObjectToResponseField = new
HashMap<String, Map<String,Integer>>();
+
+ private int topResultIndex = 0;
+
+ public QueryExecutionImpl(QueryExpression command, SalesforceConnection connection,
RuntimeMetadata metadata, ExecutionContext context) {
+ this.connection = connection;
+ this.metadata = metadata;
+ this.context = context;
+ this.query = command;
+
+ connectionIdentifier = context.getConnectionIdentifier();
+ connectorIdentifier = context.getConnectorIdentifier();
+ requestIdentifier = context.getRequestIdentifier();
+ partIdentifier = context.getPartIdentifier();
+ }
+
+ public void cancel() throws ConnectorException {
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR,
Messages.getString("SalesforceQueryExecutionImpl.cancel"));//$NON-NLS-1$
+ }
+
+ public void close() throws ConnectorException {
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR,
Messages.getString("SalesforceQueryExecutionImpl.close")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void execute() throws ConnectorException {
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Incoming
Query: " + query.toString()); //$NON-NLS-1$
+ List<TableReference> from = ((Select)query).getFrom();
+ String finalQuery;
+ if(from.get(0) instanceof Join) {
+ visitor = new JoinQueryVisitor(metadata);
+ visitor.visitNode(query);
+ finalQuery = visitor.getQuery().trim();
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Executing
Query: " + finalQuery); //$NON-NLS-1$
+
+ results = connection.query(finalQuery, this.context.getBatchSize(),
visitor.getQueryAll());
+ } else {
+ visitor = new SelectVisitor(metadata);
+ visitor.visitNode(query);
+ if(visitor.canRetrieve()) {
+ results = connection.retrieve(visitor.getRetrieveFieldList(),
+ visitor.getTableName(), visitor.getIdInCriteria());
+ } else {
+ finalQuery = visitor.getQuery().trim();
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Executing
Query: " + finalQuery); //$NON-NLS-1$
+ results = connection.query(finalQuery, this.context.getBatchSize(),
visitor.getQueryAll());
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List next() throws ConnectorException, DataNotAvailableException {
+ List<?> result;
+ if (query.getProjectedQuery().getDerivedColumns().get(0)
+ .getExpression() instanceof AggregateFunction) {
+ result = Arrays.asList(results.getSize());
+ results = null;
+
+ } else {
+ result = getRow(results);
+ }
+ return result;
+ }
+
+ private List<Object> getRow(QueryResult result) throws ConnectorException {
+ List<Object> row;
+ if(null == resultBatch) {
+ loadBatch();
+ }
+ if(resultBatch.size() == topResultIndex) {
+ row = null;
+ } else {
+ row = resultBatch.get(topResultIndex);
+ topResultIndex++;
+ if(resultBatch.size() == topResultIndex) {
+ if(!result.isDone()) {
+ loadBatch();
+ }
+ }
+
+ }
+ return row;
+ }
+
+ private void loadBatch() throws ConnectorException {
+ if(null != resultBatch) { // if we have an old batch, then we have to get new results
+ results = connection.queryMore(results.getQueryLocator(), context.getBatchSize());
+ }
+ resultBatch = new ArrayList<List<Object>>();
+
+ for(int resultIndex = 0; resultIndex < results.getSize(); resultIndex++) {
+ SObject sObject = results.getRecords().get(resultIndex);
+ List<Object[]> result = getObjectData(sObject);
+ for(Iterator<Object[]> i = result.iterator(); i.hasNext(); ) {
+ resultBatch.add(Arrays.asList(i.next()));
+ }
+ }
+ }
+
+ private List<Object[]> getObjectData(SObject sObject) throws ConnectorException
{
+ List<Object> topFields = sObject.getAny();
+ logAndMapFields(sObject.getType(), topFields);
+ List<Object[]> result = new ArrayList<Object[]>();
+ for(int i = 0; i < topFields.size(); i++) {
+ Element element = (Element) topFields.get(i);
+ QName qName = new QName(element.getNamespaceURI(), element.getLocalName());
+ if(null != qName) {
+ String type = qName.getLocalPart();
+ if(type.equals("sObject")) { //$NON-NLS-1$
+ //SObject parent = (SObject)element.;
+ //result.addAll(getObjectData(parent));
+ } else if(type.equals("QueryResult")) { //$NON-NLS-1$
+ //QueryResult subResult = (QueryResult)element.getValue();
+ //for(int resultIndex = 0; resultIndex < subResult.getSize(); resultIndex++) {
+ // SObject subObject = subResult.getRecords().get(resultIndex);
+ // result.addAll(getObjectData(subObject));
+ //}
+ }
+ }
+ }
+ return extractDataFromFields(sObject, topFields, result);
+
+ }
+
+ private List<Object[]> extractDataFromFields(SObject sObject,
+ List<Object> fields, List<Object[]> result) throws ConnectorException {
+ Map<String,Integer> fieldToIndexMap =
sObjectToResponseField.get(sObject.getType());
+ for (int j = 0; j < visitor.getSelectSymbolCount(); j++) {
+ Column element = visitor.getSelectSymbolMetadata(j);
+ AbstractMetadataRecord parent = element.getParent();
+ Table table;
+ if(parent instanceof Table) {
+ table = (Table)parent;
+ } else {
+ parent = parent.getParent();
+ if(parent instanceof Table) {
+ table = (Table)parent;
+ } else {
+ throw new ConnectorException("Could not resolve Table for column " +
element.getName()); //$NON-NLS-1$
+ }
+ }
+ if(table.getNameInSource().equals(sObject.getType())) {
+ Integer index = fieldToIndexMap.get(element.getNameInSource());
+ // id gets dropped from the result if it is not the
+ // first field in the querystring. Add it back in.
+ if (null == index) {
+ if (element.getNameInSource().equalsIgnoreCase("id")) { //$NON-NLS-1$
+ setValueInColumn(j, sObject.getId(), result);
+ } else {
+ throw new
ConnectorException("SalesforceQueryExecutionImpl.missing.field"+
element.getNameInSource()); //$NON-NLS-1$
+ }
+ } else {
+ Object cell;
+ cell = getCellDatum(element, (Element)fields.get(index));
+ setValueInColumn(j, cell, result);
+ }
+ }
+ }
+ return result;
+ }
+
+ private void setValueInColumn(int columnIndex, Object value, List<Object[]>
result) {
+ if(result.isEmpty()) {
+ Object[] row = new Object[visitor.getSelectSymbolCount()];
+ result.add(row);
+ }
+ Iterator<Object[]> iter = result.iterator();
+ while (iter.hasNext()) {
+ Object[] row = iter.next();
+ row[columnIndex] = value;
+ }
+ }
+
+ /**
+ * Load the map of response field names to index.
+ * @param fields
+ * @throws ConnectorException
+ */
+ private void logAndMapFields(String sObjectName,
+ List<Object> fields) throws ConnectorException {
+ if (!sObjectToResponseField.containsKey(sObjectName)) {
+ logFields(sObjectName, fields);
+ Map<String, Integer> responseFieldToIndexMap;
+ responseFieldToIndexMap = new HashMap<String, Integer>();
+ for (int x = 0; x < fields.size(); x++) {
+ Element element = (Element) fields.get(x);
+ responseFieldToIndexMap.put(element.getLocalName(), x);
+ }
+ sObjectToResponseField.put(sObjectName, responseFieldToIndexMap);
+ }
+ }
+
+ private void logFields(String sObjectName, List<Object> fields) throws
ConnectorException {
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, "SalesForce Object Name = "
+ sObjectName); //$NON-NLS-1$
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, "FieldCount = " +
fields.size()); //$NON-NLS-1$
+ for(int i = 0; i < fields.size(); i++) {
+ Element element;
+ element = (Element) fields.get(i);
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, "Field # " + i + " is
" + element.getLocalName()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private Object getCellDatum(Column element, Element elem) throws ConnectorException {
+ if(!element.getNameInSource().equals(elem.getLocalName())) {
+ throw new ConnectorException("SalesforceQueryExecutionImpl.column.mismatch1"
+ element.getNameInSource() + "SalesforceQueryExecutionImpl.column.mismatch2" +
elem.getLocalName()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ String value = elem.getTextContent();
+ Object result = null;
+ Class type = element.getJavaType();
+
+ if(type.equals(String.class)) {
+ result = value;
+ }
+ else if (type.equals(Boolean.class)) {
+ result = Boolean.valueOf(value);
+ } else if (type.equals(Double.class)) {
+ if (null != value) {
+ if(value.isEmpty()) {
+ result = null;
+ } else {
+ result = Double.valueOf(value);
+ }
+ }
+ } else if (type.equals(Integer.class)) {
+ if (null != value) {
+ if(value.isEmpty()) {
+ result = null;
+ } else {
+ result = Integer.valueOf(value);
+ }
+ }
+ } else if (type.equals(java.sql.Date.class)) {
+ if (null != value) {
+ if(value.isEmpty()) {
+ result = null;
+ } else {
+ result = java.sql.Date.valueOf(value);
+ }
+ }
+ } else if (type.equals(java.sql.Timestamp.class)) {
+ if (null != value) {
+ if(value.isEmpty()) {
+ result = null;
+ } else try {
+ Date date = Util.getSalesforceDateTimeFormat().parse(value);
+ result = new Timestamp(date.getTime());
+ } catch (ParseException e) {
+ throw new ConnectorException(e,
"SalesforceQueryExecutionImpl.datatime.parse" + value); //$NON-NLS-1$
+ }
+ }
+ } else {
+ result = value;
+ }
+ return result;
+ }
+
+
+ private String getLogPreamble() {
+ if (null == logPreamble) {
+ StringBuffer preamble = new StringBuffer();
+ preamble.append(connectorIdentifier);
+ preamble.append('.');
+ preamble.append(connectionIdentifier);
+ preamble.append('.');
+ preamble.append(requestIdentifier);
+ preamble.append('.');
+ preamble.append(partIdentifier);
+ preamble.append(": "); //$NON-NLS-1$
+ logPreamble = preamble.toString();
+ }
+ return logPreamble;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/SalesforceProcedureExecution.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/SalesforceProcedureExecution.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/SalesforceProcedureExecution.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/SalesforceProcedureExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,24 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.util.List;
+
+import org.teiid.translator.ConnectorException;
+
+public interface SalesforceProcedureExecution {
+
+ static final int OBJECT = 0;
+ static final int STARTDATE = 1;
+ static final int ENDDATE = 2;
+ static final int LATESTDATECOVERED = 3;
+
+ List<?> getOutputParameterValues();
+
+ List<?> next();
+
+ void cancel();
+
+ void close();
+
+ void execute(ProcedureExecutionParent procedureExecutionParent) throws
ConnectorException;
+
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdateExecutionImpl.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/UpdateExecutionImpl.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdateExecutionImpl.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdateExecutionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,84 @@
+/*
+ * 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.translator.salesforce.execution;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+
+import org.teiid.language.ColumnReference;
+import org.teiid.language.Command;
+import org.teiid.language.Literal;
+import org.teiid.language.SetClause;
+import org.teiid.language.Update;
+import org.teiid.metadata.Column;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.ConnectorException;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.Util;
+import org.teiid.translator.salesforce.execution.visitors.UpdateVisitor;
+
+
+public class UpdateExecutionImpl extends AbstractUpdateExecution {
+
+ @SuppressWarnings("unchecked")
+ private static final Class stringClazz = new String().getClass();
+
+ public UpdateExecutionImpl(Command command,
+ SalesforceConnection salesforceConnection,
+ RuntimeMetadata metadata, ExecutionContext context) {
+ super(command, salesforceConnection, metadata, context);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void execute() throws ConnectorException {
+ UpdateVisitor visitor = new UpdateVisitor(getMetadata());
+ visitor.visit((Update)command);
+ String[] Ids = getIDs(((Update)command).getWhere(), visitor);
+
+ if (null != Ids && Ids.length > 0) {
+ List<JAXBElement> elements = new ArrayList<JAXBElement>();
+ for (SetClause clause : ((Update)command).getChanges()) {
+ ColumnReference element = clause.getSymbol();
+ Column column = element.getMetadataObject();
+ String val = ((Literal) clause.getValue()).toString();
+ JAXBElement messageElem = new JAXBElement(new QName(column.getNameInSource()),
stringClazz, Util.stripQutes(val));
+ elements.add(messageElem);
+ }
+
+ List<DataPayload> updateDataList = new ArrayList<DataPayload>();
+ for (int i = 0; i < Ids.length; i++) {
+ DataPayload data = new DataPayload();
+ data.setType(visitor.getTableName());
+ data.setID(Ids[i]);
+ data.setMessageElements(elements);
+ updateDataList.add(data);
+ }
+
+ result = getConnection().update(updateDataList);
+ }
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdatedResult.java
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/UpdatedResult.java)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdatedResult.java
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/UpdatedResult.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,26 @@
+package org.teiid.translator.salesforce.execution;
+
+import java.util.Calendar;
+import java.util.List;
+
+public class UpdatedResult {
+
+ private Calendar latestDateCovered;
+ private List<String> IDs;
+
+ public Calendar getLatestDateCovered() {
+ return latestDateCovered;
+ }
+
+ public void setLatestDateCovered(Calendar latestDateCovered) {
+ this.latestDateCovered = latestDateCovered;
+ }
+
+ public List<String> getIDs() {
+ return IDs;
+ }
+
+ public void setIDs(List<String> list) {
+ this.IDs = list;
+ }
+}
Copied:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors)
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/CriteriaVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -44,9 +44,9 @@
import org.teiid.metadata.Column;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
-import org.teiid.resource.adapter.salesforce.Messages;
-import org.teiid.resource.adapter.salesforce.Util;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.salesforce.Messages;
+import org.teiid.translator.salesforce.Util;
/**
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/DeleteVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/DeleteVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/DeleteVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import java.util.Iterator;
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/ICriteriaVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/ICriteriaVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/ICriteriaVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import org.teiid.translator.ConnectorException;
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/IQueryProvidingVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/IQueryProvidingVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/IQueryProvidingVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import org.teiid.translator.ConnectorException;
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/InsertVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/InsertVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/InsertVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import java.util.ArrayList;
import java.util.List;
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/JoinQueryVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/JoinQueryVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/JoinQueryVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -1,4 +1,4 @@
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import org.teiid.language.AggregateFunction;
import org.teiid.language.ColumnReference;
@@ -11,8 +11,8 @@
import org.teiid.metadata.Column;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
-import org.teiid.resource.adapter.salesforce.Util;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.salesforce.Util;
/**
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/SelectVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import java.util.ArrayList;
import java.util.HashMap;
@@ -38,10 +38,10 @@
import org.teiid.metadata.Column;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
-import org.teiid.resource.adapter.salesforce.Constants;
-import org.teiid.resource.adapter.salesforce.Messages;
-import org.teiid.resource.adapter.salesforce.Util;
import org.teiid.translator.ConnectorException;
+import org.teiid.translator.salesforce.Constants;
+import org.teiid.translator.salesforce.Messages;
+import org.teiid.translator.salesforce.Util;
public class SelectVisitor extends CriteriaVisitor implements IQueryProvidingVisitor {
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/UpdateVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/execution/visitors/UpdateVisitor.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/UpdateVisitor.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import org.teiid.language.Update;
import org.teiid.metadata.RuntimeMetadata;
Copied:
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/salesforce/i18n.properties
(from rev 2119,
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/resource/adapter/salesforce/i18n.properties)
===================================================================
---
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/salesforce/i18n.properties
(rev 0)
+++
trunk/connectors/translator-salesforce/src/main/resources/org/teiid/translator/salesforce/i18n.properties 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,48 @@
+#
+# 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.
+#
+SalesforceConnection.update.not.supported=Update Execution is not supported.
+SalesforceConnection.procedures.not.supported=Procedure Execution is not supported.
+SalesforceConnection.invalid.execution.mode=Execution mode not supported.
+SalesforceConnection.bad.IN.value=Exception parsing the IN Criteria Limit value.
+SalesforceConnection.bad.ping.value=Exception parsing the Data Source Test Connect
Interval value.
+
+SalesforceSourceConnectionFactory.Invalid.username.password.pair=Invalid credential
configuration. The Username and Password binding properties must both be empty or both
have values.
+
+SalesforceQueryExecutionImpl.cancel=SynchQueryExecution.cancel() called
+SalesforceQueryExecutionImpl.close=SynchQueryExecution.close() called
+SalesforceQueryExecutionImpl.missing.field=No field in result for SelectSymbol
+SalesforceQueryExecutionImpl.column.mismatch1=Error: Column mismatch, expected
+SalesforceQueryExecutionImpl.column.mismatch2= received
+SalesforceQueryExecutionImpl.datatime.parse=Error parsing date_time: Value =
+SalesforceQueryExecutionImpl.reduced.batch.size=Reduced batch size to 2000
+
+SelectVisitor.distinct.not.supported=Distinct is not supported by the connector.
+
+CriteriaVisitor.query.not.supported= does not support the query statement.
+CriteriaVisitor.invalid.arg.count=The includes and excludes functions require two
parameters.
+CriteriaVisitor.function.not.column.arg=The first parameter of the includes and excludes
functions must be a column name.
+CriteriaVisitor.function.not.literal.arg=The second parameter of the includes and
excludes functions must be a literal value.
+CriteriaVisitor.IN.not.supported.on.col=The IN criteria is not supported on multi-select
columns:
+CriteriaVisitor.LIKE.not.supported.on.Id=LIKE criteria are not allowed on columns of
native type Id
+CriteriaVisitor.LIKE.not.supported.on.multiselect=LIKE criteria are not allowed on
columns of native type Multi-Select Picklist
+
+Util.query.exceeds.max.length=Queries cannot exceed 10,000 characters
\ No newline at end of file
Copied:
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors
(from rev 2119,
trunk/connectors/translator-salesforce/src/test/java/org/teiid/resource/adapter/salesforce/execution/visitors)
Modified:
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
===================================================================
---
trunk/connectors/translator-salesforce/src/test/java/org/teiid/resource/adapter/salesforce/execution/visitors/TestVisitors.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.salesforce.execution.visitors;
+package org.teiid.translator.salesforce.execution.visitors;
import static org.junit.Assert.*;
@@ -38,8 +38,8 @@
import org.teiid.metadata.Column.SearchType;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.unittest.RealMetadataFactory;
-import org.teiid.resource.adapter.salesforce.execution.visitors.JoinQueryVisitor;
-import org.teiid.resource.adapter.salesforce.execution.visitors.SelectVisitor;
+import org.teiid.translator.salesforce.execution.visitors.JoinQueryVisitor;
+import org.teiid.translator.salesforce.execution.visitors.SelectVisitor;
import com.metamatrix.cdk.api.TranslationUtility;
Copied: trunk/connectors/translator-text/src/main/java/org/teiid/translator/text (from rev
2119, trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text)
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/StringToDateTranslator.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/StringToDateTranslator.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/StringToDateTranslator.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.text.ParseException;
import java.text.SimpleDateFormat;
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextCapabilities.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextCapabilities.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextCapabilities.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import org.teiid.translator.BasicConnectorCapabilities;
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextConnectionImpl.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextConnectionImpl.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextConnectionImpl.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.io.BufferedReader;
import java.io.File;
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextDescriptorPropertyNames.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextDescriptorPropertyNames.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextDescriptorPropertyNames.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
/**
* Property names used in the text descriptor file.
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextExecutionFactory.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextExecutionFactory.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextExecutionFactory.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.io.BufferedReader;
import java.io.IOException;
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextPlugin.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextPlugin.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextPlugin.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.util.ResourceBundle;
@@ -28,7 +28,7 @@
public class TextPlugin {
- public static final String PLUGIN_ID = "org.teiid.resource.adapter.text" ;
//$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.teiid.translator.text" ;
//$NON-NLS-1$
public static final BundleUtil Util = new BundleUtil(PLUGIN_ID,PLUGIN_ID +
".i18n", ResourceBundle.getBundle(PLUGIN_ID + ".i18n")); //$NON-NLS-1$
//$NON-NLS-2$
}
Modified:
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextSynchExecution.java
===================================================================
---
trunk/connectors/translator-text/src/main/java/org/teiid/resource/adapter/text/TextSynchExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/main/java/org/teiid/translator/text/TextSynchExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.sql.Date;
import java.sql.Time;
Copied:
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/text/i18n.properties
(from rev 2119,
trunk/connectors/translator-text/src/main/resources/org/teiid/resource/adapter/text/i18n.properties)
===================================================================
---
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/text/i18n.properties
(rev 0)
+++
trunk/connectors/translator-text/src/main/resources/org/teiid/translator/text/i18n.properties 2010-05-12
22:19:30 UTC (rev 2121)
@@ -0,0 +1,71 @@
+#
+# 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.
+#
+
+StringToDateTranslator.Attempts_to_parse_String__{0}_to_a_java.util.Date_failed_for_the_following_reasons___1=Attempts
to parse String: {0} to a java.util.Date failed for the following reasons:
+StringToDateTranslator.There_is_no_format_Strings_found_in_this_formatter_object._n_2=There
is no format Strings found in this formatter object.\n
+StringToDateTranslator.Parse_Attempt__{0}_using_format__{1}_failed_for_the_following_reason__{2}_4=Parse
Attempt: {0} using format: {1} failed for the following reason: {2}
+StringToDateTranslator.Failed_to_convert_String__{0}_to_a_Date_using_one_of_the_following_format_Strings_that_are_specified_in_the_properties_for_this_Connector__{1}_1=Failed
to convert String: {0} to a Date using one of the following format Strings that are
specified in the properties for this Connector: {1}
+TextConnection.Descriptor_file_name_is_not_specified._2=Descriptor file name is not
specified.
+TextConnection.Error_trying_to_establish_connection_5=Error trying to establish
connection
+TextConnection.Error_while_reading_text_file__{0}_1=Error while reading text file: {0}
+TextConnection.Text_file_name_is_not_specified_for_the_group___{0}_2=Text file name is
not specified for the group : {0}
+TextConnection.The_value_for_the_property_should_be_an_integer._{0}_3=The value for the
property should be an integer. {0}
+TextConnection.The_property_{0}_for_the_group_{1}_is_invalid._4=The property {0} for the
group {1} is invalid.
+TextConnection.Error_parsing_property_string_{0}_5=Error parsing property string {0}
+TextConnection.Error_parsing_property_string_{0}__{1}_6=Error parsing property string
{0}: {1}
+TextConnection.fileDoesNotExistForGroup=Data file not found at this location: {0}, for
group {1}
+TextConnection.Data_file_{0}_found_but_does_not_have_Read_permissions_8=Data file {0}
found but does not have Read permissions
+TextConnection.Descriptor_file_does_not_exist_at_this_location__{0}_9=Descriptor file
does not exist at this location: {0}
+TextConnection.Descriptor_file_{0}_found_but_does_not_have_Read_permissions_10=Descriptor
file {0} found but does not have Read permissions
+TextConnection.Couldn__t_find_the_file_of_name_{0}_11=Couldn''t find the file of
name {0}
+TextConnection.Descriptor_file_does_not_exist_at_this_location__{0}_12=Descriptor file
does not exist at this location: {0}
+TextSynchExecution.Request_is_null=The Request is null.
+TextSynchExecution.No_element_in_Select=There are no element in the Select clause.
+TextSynchExecution.Not_of_type_Map=Response submitted for the request is not of type Map
as expected.
+TextSynchExecution.Error_reading_text_file=Error while reading text file: {0}: {1}
+TextSynchExecution.Error_translating_request=Error translating request: Command not
supported. {0}
+TextSynchExecution.Cannot_be_translated_by_the_TextTranslator.=''{0}''
cannot be translated by the TextTranslator. {1}
+TextSynchExecution.Error_obtain_properties_for_group=Error trying to obtain connector
metadata properties for {0}. Group properties are not specified in the descriptor file.
+TextSynchExecution.Unable_get_Reader=Unable to get the Reader for group {0}, exception:
{1}
+TextSynchExecution.Unable_get_Reader_for_group=Unable to get the Reader for group {0}.
Source file undefined - check log for errors.
+TextSynchExecution.Cant_read_column_number=Cannot read column number from name in source
for element. {0}
+TextSynchExecution.Invalid_column_number=Column {0} not found for element {1} and no
header row is defined. If a header row cannot be defined, element {1} must define a
numeric column number for its name in source property.
+TextSynchExecution.Column_not_found_in_header_row=Column {0} not found for element {1}.
Verify column name \"{0}\" is defined in the header row of the text file and
that the header row number is correctly defined in the descriptor file.
+TextSynchExecution.Can_read_column_number=Cannot read column number from name in source
for element. {0}
+TextSynchExecution.Text_has_no_ending_qualifier=Text file has no ending qualifier in
column {0}: [{1}]
+TextSynchExecution.Text_file_must_have_delimiter=Text file must have delimiter after
ending qualifier in column {0}: [{1}]
+TextSynchExecution.Column_length_must_be_positive=Error trying to query the text file,
column length must be a positive value.
+TextSynchExecution.Got_unknown_type_of_criteria=Got unknown type of criteria: {0}
+TextSynchExecution.Functions_not_supported._14=The criteria: {0} could not be applied to
the results. Functions not supported.
+TextSynchExecution.Values_of_different_types=The following criteria cannot be executed
because values are of different types: {0}
+TextSynchExecution.Unknown_compare_criteria_type=Unknown compare criteria type: {0}
+TextSynchExecution.Joins_and_Functions_not_supported._18=The criteria: {0} could not be
translated by the TextConnectorTranslator. Joins and Functions not supported.
+TextSynchExecution.The_expression_cannot_be_used_as_criteria=The expression: {0} cannot
be used as a criteria value in a query against a text file.
+TextSynchExecution.Functions_in_criteria_not_supported._20=The criteria: {0} cannot be
translated by the TextConnectorTranslator. Functions in criteria not supported.
+TextSynchExecution.Functions_in_set_criteria_not_supported._21=The criteria: {0} cannot
be translated by the TextConnectorTranslator. Functions in set criteria not supported.
+TextSynchExecution.Unable_translate_String_to_Date=Unable to translate String to Date
using the format specified. {0}
+TextSynchExecution.Unable_get_Tranform=Unable to get the Tranform from String to {0}
+TextSynchExecution.Unable_to_transform_value=Unable to transform value {0} to Object of
type {1}
+TextSynchExecution.Input_column_cnt_incorrect=Expected input file to have {0} columns
based on model, but found {1}. This could be caused by misplaced quotes, causing multiple
columns to be treated as one.
+TextSynchExecution.Text_has_no_determined_ending_qualifier=Text file has no matching
ending qualifier in row {0}
+TextSynchExecution.Property_contains_an_invalid_value_Using_value=Property {0} contains
an invalid value of {1}. Using value {2}.
+TextConnector.column_mismatch=Specified types and columns do not match for text table
{0}
\ No newline at end of file
Copied: trunk/connectors/translator-text/src/test/java/org/teiid/translator/text (from rev
2119, trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text)
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestMultiFileTextSynchExecution.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/TestMultiFileTextSynchExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestMultiFileTextSynchExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.util.ArrayList;
import java.util.HashSet;
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestRowHeaderTextSynchExecution.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/TestRowHeaderTextSynchExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestRowHeaderTextSynchExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import junit.framework.TestCase;
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnection.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/TestTextConnection.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnection.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,8 +20,10 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
+import org.teiid.translator.text.TextExecutionFactory;
+
import junit.framework.TestCase;
/**
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnector.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/TestTextConnector.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextConnector.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import static org.junit.Assert.*;
@@ -34,6 +34,7 @@
import org.teiid.metadata.MetadataFactory;
import org.teiid.metadata.Table;
import org.teiid.translator.MetadataProvider;
+import org.teiid.translator.text.TextExecutionFactory;
/**
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextSynchExecution.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/TestTextSynchExecution.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/TestTextSynchExecution.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.util.ArrayList;
import java.util.List;
Modified:
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/Util.java
===================================================================
---
trunk/connectors/translator-text/src/test/java/org/teiid/resource/adapter/text/Util.java 2010-05-12
15:27:10 UTC (rev 2119)
+++
trunk/connectors/translator-text/src/test/java/org/teiid/translator/text/Util.java 2010-05-12
22:19:30 UTC (rev 2121)
@@ -20,7 +20,7 @@
* 02110-1301 USA.
*/
-package org.teiid.resource.adapter.text;
+package org.teiid.translator.text;
import java.io.File;
import java.util.List;
@@ -44,6 +44,7 @@
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.unittest.RealMetadataFactory;
import org.teiid.translator.FileConnection;
+import org.teiid.translator.text.TextExecutionFactory;
import com.metamatrix.cdk.api.ConnectorHost;
import com.metamatrix.cdk.api.TranslationUtility;