You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2013/07/17 13:18:36 UTC

[5/5] git commit: Backported fix for eobjects Ticket #1140

Backported fix for eobjects Ticket #1140

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/03eea7d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/03eea7d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/03eea7d6

Branch: refs/heads/master
Commit: 03eea7d65066b11c862e6892640743243a89a626
Parents: 7180851
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Wed Jul 17 13:18:22 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Wed Jul 17 13:18:22 2013 +0200

----------------------------------------------------------------------
 .../salesforce/SalesforceDataContext.java       |  5 ++++
 .../metamodel/salesforce/SalesforceDataSet.java |  1 +
 .../salesforce/SalesforceDataContextTest.java   | 30 +++++++++++++++++---
 3 files changed, 32 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/03eea7d6/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataContext.java
----------------------------------------------------------------------
diff --git a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataContext.java b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataContext.java
index 61e0f3f..7e1ac81 100644
--- a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataContext.java
+++ b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataContext.java
@@ -22,6 +22,7 @@ package org.eobjects.metamodel.salesforce;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.TimeZone;
 
 import org.eobjects.metamodel.MetaModelException;
 import org.eobjects.metamodel.QueryPostprocessDataContext;
@@ -58,6 +59,7 @@ import com.sforce.ws.ConnectionException;
  */
 public class SalesforceDataContext extends QueryPostprocessDataContext implements UpdateableDataContext {
 
+    public static final TimeZone SOQL_TIMEZONE = TimeZone.getTimeZone("UTC");
     public static final String SOQL_DATE_FORMAT_IN = "yyyy-MM-dd'T'HH:mm:ss.SSS";
     public static final String SOQL_DATE_FORMAT_OUT = "yyyy-MM-dd'T'HH:mm:ssZZZ";
 
@@ -273,7 +275,9 @@ public class SalesforceDataContext extends QueryPostprocessDataContext implement
             sb.append(operand);
         } else if (operand instanceof Date) {
             SimpleDateFormat dateFormat = new SimpleDateFormat(SOQL_DATE_FORMAT_OUT);
+            dateFormat.setTimeZone(SOQL_TIMEZONE); 
             String str = dateFormat.format((Date) operand);
+            logger.debug("Date '{}' formatted as: {}", operand, str); 
             sb.append(str);
         } else if (operand instanceof Column) {
             sb.append(((Column) operand).getName());
@@ -317,6 +321,7 @@ public class SalesforceDataContext extends QueryPostprocessDataContext implement
     }
 
     private QueryResult executeSoqlQuery(String query) {
+        logger.info("Executing SOQL query: {}", query); 
         try {
             QueryResult queryResult = _connection.query(query);
             return queryResult;

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/03eea7d6/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataSet.java
----------------------------------------------------------------------
diff --git a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataSet.java b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataSet.java
index 404ca32..833ad42 100644
--- a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataSet.java
+++ b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceDataSet.java
@@ -112,6 +112,7 @@ final class SalesforceDataSet extends AbstractDataSet {
             }
             if (columnType.isTimeBased()) {
                 SimpleDateFormat format = new SimpleDateFormat(SalesforceDataContext.SOQL_DATE_FORMAT_IN);
+                format.setTimeZone(SalesforceDataContext.SOQL_TIMEZONE); 
                 try {
                     return format.parse(value.toString());
                 } catch (ParseException e) {

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/03eea7d6/salesforce/src/test/java/org/eobjects/metamodel/salesforce/SalesforceDataContextTest.java
----------------------------------------------------------------------
diff --git a/salesforce/src/test/java/org/eobjects/metamodel/salesforce/SalesforceDataContextTest.java b/salesforce/src/test/java/org/eobjects/metamodel/salesforce/SalesforceDataContextTest.java
index a6da3e3..81698d9 100644
--- a/salesforce/src/test/java/org/eobjects/metamodel/salesforce/SalesforceDataContextTest.java
+++ b/salesforce/src/test/java/org/eobjects/metamodel/salesforce/SalesforceDataContextTest.java
@@ -44,12 +44,34 @@ import org.eobjects.metamodel.util.Month;
 
 public class SalesforceDataContextTest extends SalesforceTestCase {
 
+    public void testQueryStrangeRecord() throws Exception {
+        SalesforceDataContext dc = new SalesforceDataContext(getUsername(), getPassword(), getSecurityToken());
+
+        Column[] timeColumns = dc.getDefaultSchema().getTableByName("Contact").getTimeBasedColumns();
+        assertEquals(
+                "[Column[name=Birthdate,columnNumber=30,type=DATE,nullable=true,nativeType=date,columnSize=0], "
+                        + "Column[name=CreatedDate,columnNumber=33,type=DATE,nullable=false,nativeType=datetime,columnSize=0], "
+                        + "Column[name=LastModifiedDate,columnNumber=35,type=DATE,nullable=false,nativeType=datetime,columnSize=0], "
+                        + "Column[name=SystemModstamp,columnNumber=37,type=DATE,nullable=false,nativeType=datetime,columnSize=0], "
+                        + "Column[name=LastActivityDate,columnNumber=38,type=DATE,nullable=true,nativeType=date,columnSize=0], "
+                        + "Column[name=LastCURequestDate,columnNumber=39,type=DATE,nullable=true,nativeType=datetime,columnSize=0], "
+                        + "Column[name=LastCUUpdateDate,columnNumber=40,type=DATE,nullable=true,nativeType=datetime,columnSize=0], "
+                        + "Column[name=EmailBouncedDate,columnNumber=42,type=DATE,nullable=true,nativeType=datetime,columnSize=0]]",
+                Arrays.toString(timeColumns));
+        DataSet ds = dc.query().from("Contact").select("LastModifiedDate").where("Id").eq("003b0000006xfAUAAY")
+                .execute();
+        assertTrue(ds.next());
+        System.out.println(ds.getRow());
+        assertFalse(ds.next());
+    }
+
     public void testInvalidLoginException() throws Exception {
         try {
             new SalesforceDataContext("foo", "bar", "baz");
             fail("Exception expected");
         } catch (IllegalStateException e) {
-            assertEquals("Failed to log in to Salesforce service: INVALID_LOGIN: Invalid username, password, security token; or user locked out.",
+            assertEquals(
+                    "Failed to log in to Salesforce service: INVALID_LOGIN: Invalid username, password, security token; or user locked out.",
                     e.getMessage());
         }
     }
@@ -237,10 +259,10 @@ public class SalesforceDataContextTest extends SalesforceTestCase {
     public void testRewriteWhereItem() throws Exception {
         final StringBuilder sb = new StringBuilder("FOOBAR: ");
 
-        Calendar cal = Calendar.getInstance();
+        final Calendar cal = Calendar.getInstance();
         cal.setTime(DateUtils.get(2013, Month.JANUARY, 23));
         cal.setTimeZone(TimeZone.getTimeZone("GMT+1"));
-        Date date = cal.getTime();
+        final Date date = cal.getTime();
 
         final List<FilterItem> children = new ArrayList<FilterItem>();
         children.add(new FilterItem(new SelectItem(new MutableColumn("foo")), OperatorType.EQUALS_TO, "hello\n 'world'"));
@@ -250,7 +272,7 @@ public class SalesforceDataContextTest extends SalesforceTestCase {
 
         SalesforceDataContext.rewriteFilterItem(sb, filterItem);
 
-        assertEquals("FOOBAR: (foo = 'hello\\n \\'world\\'' OR bar = 123 OR baz = 2013-01-23T00:00:00+0100)",
+        assertEquals("FOOBAR: (foo = 'hello\n \'world\'' OR bar = 123 OR baz = 2013-01-22T23:00:00+0000)",
                 sb.toString());
     }
 }