[teiid-commits] teiid SVN: r2121 - in trunk: connector-api/src/main/java/org/teiid/resource and 87 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed May 12 18:19:36 EDT 2010


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;



More information about the teiid-commits mailing list