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:32 UTC

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

Updated Branches:
  refs/heads/master e4990f709 -> 03eea7d65


Backported fix for eobjects Ticket #1131

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

Branch: refs/heads/master
Commit: 9d7c83b6b0323c639bf24838d6fa9dd5243e1929
Parents: e4990f7
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Wed Jul 17 13:09:26 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Wed Jul 17 13:09:26 2013 +0200

----------------------------------------------------------------------
 core/src/main/java/org/eobjects/metamodel/update/Update.java | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/9d7c83b6/core/src/main/java/org/eobjects/metamodel/update/Update.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eobjects/metamodel/update/Update.java b/core/src/main/java/org/eobjects/metamodel/update/Update.java
index 5814697..5e390fe 100644
--- a/core/src/main/java/org/eobjects/metamodel/update/Update.java
+++ b/core/src/main/java/org/eobjects/metamodel/update/Update.java
@@ -29,7 +29,6 @@ import org.eobjects.metamodel.UpdateableDataContext;
 import org.eobjects.metamodel.data.AbstractRowBuilder;
 import org.eobjects.metamodel.data.Style;
 import org.eobjects.metamodel.data.WhereClauseBuilder;
-import org.eobjects.metamodel.insert.InsertInto;
 import org.eobjects.metamodel.query.FilterItem;
 import org.eobjects.metamodel.query.SelectItem;
 import org.eobjects.metamodel.query.builder.AbstractFilterBuilder;
@@ -45,7 +44,7 @@ import org.eobjects.metamodel.schema.Table;
  * based on the knowledge that there will only be a single update statement
  * executed.
  */
-public final class Update extends AbstractRowBuilder<InsertInto> implements UpdateScript, WhereClauseBuilder<Update> {
+public final class Update extends AbstractRowBuilder<Update> implements UpdateScript, WhereClauseBuilder<Update> {
 
     private final Table _table;
     private final List<FilterItem> _whereItems;


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

Posted by ka...@apache.org.
Backported fix for eobjects Ticket #1145

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

Branch: refs/heads/master
Commit: d7c8bb1d331199301d09d0477f9ee3841381a099
Parents: 98cbe69
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Wed Jul 17 13:12:06 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Wed Jul 17 13:12:06 2013 +0200

----------------------------------------------------------------------
 core/src/main/java/org/eobjects/metamodel/util/FileResource.java | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/d7c8bb1d/core/src/main/java/org/eobjects/metamodel/util/FileResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eobjects/metamodel/util/FileResource.java b/core/src/main/java/org/eobjects/metamodel/util/FileResource.java
index e614171..27382c8 100644
--- a/core/src/main/java/org/eobjects/metamodel/util/FileResource.java
+++ b/core/src/main/java/org/eobjects/metamodel/util/FileResource.java
@@ -52,6 +52,9 @@ public class FileResource implements Resource, Serializable {
 
     @Override
     public boolean isReadOnly() {
+        if (!isExists()) {
+            return false;
+        }
         boolean canWrite = _file.canWrite();
         return !canWrite;
     }


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

Posted by ka...@apache.org.
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());
     }
 }


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

Posted by ka...@apache.org.
Backported fix for eobjects Ticket #1146

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

Branch: refs/heads/master
Commit: 98cbe692556af495654e0d8b413fd3a6e96d7e01
Parents: 9d7c83b
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Wed Jul 17 13:10:35 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Wed Jul 17 13:10:35 2013 +0200

----------------------------------------------------------------------
 .../org/eobjects/metamodel/salesforce/SalesforceUtils.java    | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/98cbe692/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceUtils.java
----------------------------------------------------------------------
diff --git a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceUtils.java b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceUtils.java
index 838cc72..a04e523 100644
--- a/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceUtils.java
+++ b/salesforce/src/main/java/org/eobjects/metamodel/salesforce/SalesforceUtils.java
@@ -19,11 +19,16 @@
  */
 package org.eobjects.metamodel.salesforce;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import com.sforce.soap.partner.fault.ApiFault;
 import com.sforce.soap.partner.fault.ExceptionCode;
 import com.sforce.ws.ConnectionException;
 
 public class SalesforceUtils {
+    
+    private static final Logger logger = LoggerFactory.getLogger(SalesforceUtils.class); 
 
     /**
      * Wraps a checked exception thrown by Salesforce into an
@@ -34,6 +39,7 @@ public class SalesforceUtils {
      * @return
      */
     public static IllegalStateException wrapException(ConnectionException e, String whatWentWrong) {
+        logger.error("Wrapping Salesforce.com ConnectionException", e); 
         String message = null;
         Throwable cause = e;
         while (message == null && cause != null) {
@@ -43,6 +49,7 @@ public class SalesforceUtils {
                 message = exceptionCode + ": " + exceptionMessage;
                 break;
             }
+            cause = cause.getCause(); 
         }
         throw new IllegalStateException(whatWentWrong + ": " + message, cause);
     }


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

Posted by ka...@apache.org.
Backported fix for eobjects Ticket #1141

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

Branch: refs/heads/master
Commit: 718085136c485ce1ef89d088e9dc7370231780a0
Parents: d7c8bb1
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Wed Jul 17 13:15:36 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Wed Jul 17 13:15:36 2013 +0200

----------------------------------------------------------------------
 .../eobjects/metamodel/BatchUpdateScript.java   | 30 ++++++++++++++++++++
 .../metamodel/jdbc/JdbcDataContext.java         | 13 ++-------
 .../metamodel/jdbc/JdbcTestTemplates.java       |  3 +-
 3 files changed, 34 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/71808513/core/src/main/java/org/eobjects/metamodel/BatchUpdateScript.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eobjects/metamodel/BatchUpdateScript.java b/core/src/main/java/org/eobjects/metamodel/BatchUpdateScript.java
new file mode 100644
index 0000000..4bd1332
--- /dev/null
+++ b/core/src/main/java/org/eobjects/metamodel/BatchUpdateScript.java
@@ -0,0 +1,30 @@
+/**
+ * eobjects.org MetaModel
+ * Copyright (C) 2010 eobjects.org
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.eobjects.metamodel;
+
+/**
+ * Indicator sub-interface of {@link UpdateScript}. Implementing your updates
+ * using this interface indicates to the underlying
+ * {@link UpdateableDataContext} that the update script represents a large batch
+ * update and that appropriate optimizations may be taken into use if available.
+ */
+public interface BatchUpdateScript extends UpdateScript {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/71808513/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java
index cfe53b1..f321c20 100644
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java
+++ b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java
@@ -35,16 +35,13 @@ import java.util.StringTokenizer;
 import javax.sql.DataSource;
 
 import org.eobjects.metamodel.AbstractDataContext;
+import org.eobjects.metamodel.BatchUpdateScript;
 import org.eobjects.metamodel.MetaModelException;
 import org.eobjects.metamodel.UpdateScript;
 import org.eobjects.metamodel.UpdateableDataContext;
-import org.eobjects.metamodel.create.CreateTable;
 import org.eobjects.metamodel.data.DataSet;
 import org.eobjects.metamodel.data.EmptyDataSet;
 import org.eobjects.metamodel.data.MaxRowsDataSet;
-import org.eobjects.metamodel.delete.DeleteFrom;
-import org.eobjects.metamodel.drop.DropTable;
-import org.eobjects.metamodel.insert.InsertInto;
 import org.eobjects.metamodel.jdbc.dialects.DB2QueryRewriter;
 import org.eobjects.metamodel.jdbc.dialects.DefaultQueryRewriter;
 import org.eobjects.metamodel.jdbc.dialects.H2QueryRewriter;
@@ -57,7 +54,6 @@ import org.eobjects.metamodel.query.CompiledQuery;
 import org.eobjects.metamodel.query.Query;
 import org.eobjects.metamodel.schema.Schema;
 import org.eobjects.metamodel.schema.TableType;
-import org.eobjects.metamodel.update.Update;
 import org.eobjects.metamodel.util.FileHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -749,12 +745,7 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa
     public void executeUpdate(final UpdateScript update) {
         final JdbcUpdateCallback updateCallback;
 
-        if (update instanceof InsertInto || update instanceof Update || update instanceof DeleteFrom
-                || update instanceof CreateTable || update instanceof DropTable) {
-            // we will only need to fire a single operation, so we don't want
-            // the overhead of the batch callback
-            updateCallback = new JdbcSimpleUpdateCallback(this);
-        } else if (_supportsBatchUpdates) {
+        if (_supportsBatchUpdates && update instanceof BatchUpdateScript) { 
             updateCallback = new JdbcBatchUpdateCallback(this);
         } else {
             updateCallback = new JdbcSimpleUpdateCallback(this);

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/71808513/jdbc/src/test/java/org/eobjects/metamodel/jdbc/JdbcTestTemplates.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/java/org/eobjects/metamodel/jdbc/JdbcTestTemplates.java b/jdbc/src/test/java/org/eobjects/metamodel/jdbc/JdbcTestTemplates.java
index b7026c9..14b7a5e 100644
--- a/jdbc/src/test/java/org/eobjects/metamodel/jdbc/JdbcTestTemplates.java
+++ b/jdbc/src/test/java/org/eobjects/metamodel/jdbc/JdbcTestTemplates.java
@@ -35,6 +35,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.eobjects.metamodel.BatchUpdateScript;
 import org.eobjects.metamodel.UpdateCallback;
 import org.eobjects.metamodel.UpdateScript;
 import org.eobjects.metamodel.create.ColumnCreationBuilder;
@@ -341,7 +342,7 @@ public class JdbcTestTemplates {
             });
         }
 
-        dc.executeUpdate(new UpdateScript() {
+        dc.executeUpdate(new BatchUpdateScript() {
             @Override
             public void run(UpdateCallback cb) {
                 Table table = cb.createTable(schema, tableName).withColumn("id").asPrimaryKey().ofType(ColumnType.INTEGER)