[teiid-commits] teiid SVN: r2729 - in trunk/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
Wed Nov 17 12:08:34 EST 2010


Author: shawkins
Date: 2010-11-17 12:08:34 -0500 (Wed, 17 Nov 2010)
New Revision: 2729

Modified:
   trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
   trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
Log:
TEIID-1361 fix for sf in handling

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/translator/salesforce/execution/visitors/CriteriaVisitor.java	2010-11-17 17:07:37 UTC (rev 2728)
+++ trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java	2010-11-17 17:08:34 UTC (rev 2729)
@@ -168,14 +168,16 @@
     public void visit( In criteria ) {
         try {
             Expression lExpr = criteria.getLeftExpression();
-            String columnName = lExpr.toString();
-            if (columnElementsByName.containsKey(columnName)) {
-                Column column = columnElementsByName.get(columnName);
-                if (MULTIPICKLIST.equalsIgnoreCase(column.getNativeType()) || RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(column.getNativeType())) {
+            if (lExpr instanceof ColumnReference) {
+            	ColumnReference cr = (ColumnReference)lExpr;
+                Column column = cr.getMetadataObject();
+                if (column != null && (MULTIPICKLIST.equalsIgnoreCase(column.getNativeType()) || RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(column.getNativeType()))) {
                     appendMultiselectIn(column, criteria);
                 } else {
                     appendCriteria(criteria);
                 }
+            } else {
+            	appendCriteria(criteria);
             }
             setHasCriteria(true, isIdColumn(criteria.getLeftExpression()));
         } catch (TranslatorException e) {
@@ -378,9 +380,6 @@
         }
         List<Column> columnIds = table.getColumns();
         for (Column element : columnIds) {
-            String name = table.getName() + '.' + element.getNameInSource();
-            columnElementsByName.put(name, element);
-
             // influences queryAll behavior
             if (element.getNameInSource().equals("IsDeleted")) { //$NON-NLS-1$
                 String isDeleted = element.getDefaultValue();

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/translator/salesforce/execution/visitors/TestVisitors.java	2010-11-17 17:07:37 UTC (rev 2728)
+++ trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java	2010-11-17 17:08:34 UTC (rev 2729)
@@ -76,7 +76,7 @@
         }
         
         // Create Contact group
-        Table contactTable = RealMetadataFactory.createPhysicalGroup("Contact", salesforceModel); //$NON-NLS-1$
+        Table contactTable = RealMetadataFactory.createPhysicalGroup("Contacts", salesforceModel); //$NON-NLS-1$
         contactTable.setNameInSource("Contact"); //$NON-NLS-1$
         contactTable.setProperty("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
         // Create Contact Columns
@@ -151,17 +151,24 @@
 	}
 	
 	@Test public void testJoin() throws Exception {
-		Select command = (Select)translationUtility.parseCommand("SELECT Account.Name, Contact.Name FROM Contact LEFT OUTER JOIN Account ON Account.Id = Contact.AccountId"); //$NON-NLS-1$
+		Select command = (Select)translationUtility.parseCommand("SELECT Account.Name, Contacts.Name FROM Contacts LEFT OUTER JOIN Account ON Account.Id = Contacts.AccountId"); //$NON-NLS-1$
 		SelectVisitor visitor = new JoinQueryVisitor(translationUtility.createRuntimeMetadata());
 		visitor.visit(command);
 		assertEquals("SELECT Account.AccountName, Contact.ContactName FROM Contact", visitor.getQuery().toString().trim()); //$NON-NLS-1$
 	}
 	
 	@Test public void testJoin2() throws Exception {
-		Select command = (Select)translationUtility.parseCommand("SELECT Account.Name, Contact.Name FROM Account LEFT OUTER JOIN Contact ON Account.Id = Contact.AccountId"); //$NON-NLS-1$
+		Select command = (Select)translationUtility.parseCommand("SELECT Account.Name, Contacts.Name FROM Account LEFT OUTER JOIN Contacts ON Account.Id = Contacts.AccountId"); //$NON-NLS-1$
 		SelectVisitor visitor = new JoinQueryVisitor(translationUtility.createRuntimeMetadata());
 		visitor.visit(command);
 		assertEquals("SELECT Account.AccountName, (SELECT Contact.ContactName FROM Contacts) FROM Account", visitor.getQuery().toString().trim()); //$NON-NLS-1$
 	}
+	
+	@Test public void testInWithNameInSourceDifferent() throws Exception {
+		Select command = (Select)translationUtility.parseCommand("SELECT Contacts.Name FROM Contacts WHERE Contacts.Name in ('x', 'y')"); //$NON-NLS-1$
+		SelectVisitor visitor = new SelectVisitor(translationUtility.createRuntimeMetadata());
+		visitor.visit(command);
+		assertEquals("SELECT Contact.ContactName FROM Contact WHERE ContactName IN('x','y')", visitor.getQuery().toString().trim()); //$NON-NLS-1$
+	}
 
 }



More information about the teiid-commits mailing list