[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