[teiid-commits] teiid SVN: r2789 - in branches/7.1.x/connectors/translator-salesforce/src: test/java/org/teiid/translator/salesforce/execution/visitors and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Dec 21 10:36:39 EST 2010


Author: shawkins
Date: 2010-12-21 10:36:39 -0500 (Tue, 21 Dec 2010)
New Revision: 2789

Modified:
   branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
   branches/7.1.x/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
Log:
TEIID-1402 handling a comparison against an id the same as IN

Modified: branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
--- branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java	2010-12-21 14:54:25 UTC (rev 2788)
+++ branches/7.1.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java	2010-12-21 15:36:39 UTC (rev 2789)
@@ -23,6 +23,7 @@
 
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -102,6 +103,9 @@
             addCompareCriteria(criteriaList, criteria);
             boolean isAcceptableID = (Operator.EQ == criteria.getOperator() && isIdColumn(criteria.getLeftExpression()));
             setHasCriteria(true, isAcceptableID);
+            if (isAcceptableID) {
+            	this.idInCriteria = new In(criteria.getLeftExpression(), Arrays.asList(criteria.getRightExpression()), false);
+            }
         } catch (TranslatorException e) {
             exceptions.add(e);
         }

Modified: branches/7.1.x/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
===================================================================
--- branches/7.1.x/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java	2010-12-21 14:54:25 UTC (rev 2788)
+++ branches/7.1.x/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java	2010-12-21 15:36:39 UTC (rev 2789)
@@ -27,6 +27,7 @@
 import java.util.List;
 
 import org.junit.Test;
+import org.mockito.Mockito;
 import org.teiid.cdk.api.TranslationUtility;
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.language.Select;
@@ -40,10 +41,14 @@
 import org.teiid.query.metadata.TransformationMetadata;
 import org.teiid.query.unittest.FakeMetadataFactory;
 import org.teiid.query.unittest.RealMetadataFactory;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.Constants;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.execution.QueryExecutionImpl;
 import org.teiid.translator.salesforce.execution.visitors.JoinQueryVisitor;
 import org.teiid.translator.salesforce.execution.visitors.SelectVisitor;
 
-
+ at SuppressWarnings("nls")
 public class TestVisitors {
 
     public static QueryMetadataInterface exampleSalesforce() { 
@@ -52,9 +57,10 @@
         Schema salesforceModel = RealMetadataFactory.createPhysicalModel("SalesforceModel", store); //$NON-NLS-1$
        
         // Create Account group
-        Table accounTable = RealMetadataFactory.createPhysicalGroup("Account", salesforceModel); //$NON-NLS-1$
-        accounTable.setNameInSource("Account"); //$NON-NLS-1$
-        accounTable.setProperty("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
+        Table accountTable = RealMetadataFactory.createPhysicalGroup("Account", salesforceModel); //$NON-NLS-1$
+        accountTable.setNameInSource("Account"); //$NON-NLS-1$
+        accountTable.setProperty("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
+        accountTable.setProperty(Constants.SUPPORTS_RETRIEVE, Boolean.TRUE.toString());
         // Create Account Columns
         String[] acctNames = new String[] {
             "ID", "Name", "Stuff", "Industry"  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -63,7 +69,7 @@
             DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING
         };
         
-        List<Column> acctCols = RealMetadataFactory.createElements(accounTable, acctNames, acctTypes);
+        List<Column> acctCols = RealMetadataFactory.createElements(accountTable, acctNames, acctTypes);
         acctCols.get(2).setNativeType("multipicklist"); //$NON-NLS-1$
         acctCols.get(2).setSearchType(SearchType.Like_Only);
         // Set name in source on each column
@@ -170,5 +176,13 @@
 		visitor.visit(command);
 		assertEquals("SELECT Contact.ContactName FROM Contact WHERE ContactName IN('x','y')", visitor.getQuery().toString().trim()); //$NON-NLS-1$
 	}
+	
+	@Test public void testIDCriteria() throws Exception {
+		Select command = (Select)translationUtility.parseCommand("select id, name from Account where id = 'bar'"); //$NON-NLS-1$
+		SalesforceConnection sfc = Mockito.mock(SalesforceConnection.class);
+		QueryExecutionImpl qei = new QueryExecutionImpl(command, sfc, translationUtility.createRuntimeMetadata(), Mockito.mock(ExecutionContext.class));
+		qei.execute();
+		Mockito.verify(sfc).retrieve("Account.id, Account.AccountName", "Account", Arrays.asList("bar"));
+	}
 
 }



More information about the teiid-commits mailing list