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

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

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)