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());
}
}