Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-09-14 16:02:25 +0000
committerEike Stepper2007-09-14 16:02:25 +0000
commitb42106615879659c36254dd3da6d5bb3ab40aa22 (patch)
tree455f7fa66b20130d41d51c5fac36fd268288232e /plugins/org.eclipse.net4j.db/src/org
parentbcb4bc5dca959e9bd56911c03e0e3fdf41b0fae0 (diff)
downloadcdo-b42106615879659c36254dd3da6d5bb3ab40aa22.tar.gz
cdo-b42106615879659c36254dd3da6d5bb3ab40aa22.tar.xz
cdo-b42106615879659c36254dd3da6d5bb3ab40aa22.zip
[202833] Horizontal Mapping Strategy
https://bugs.eclipse.org/bugs/show_bug.cgi?id=202833
Diffstat (limited to 'plugins/org.eclipse.net4j.db/src/org')
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/DBUtil.java45
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBAdapter.java5
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBSchema.java7
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java18
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBSchema.java14
5 files changed, 53 insertions, 36 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/DBUtil.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/DBUtil.java
index 0d1e83dd42..502caa0e4c 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/DBUtil.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/DBUtil.java
@@ -186,6 +186,26 @@ public final class DBUtil
}
}
+ public static int update(Connection connection, String sql)
+ {
+ if (TRACER.isEnabled()) TRACER.trace(sql);
+ Statement statement = null;
+
+ try
+ {
+ statement = connection.createStatement();
+ return statement.executeUpdate(sql);
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ finally
+ {
+ close(statement);
+ }
+ }
+
public static void insertRow(Connection connection, IDBAdapter dbAdapter, IDBTable table, Object... args)
throws DBException
{
@@ -214,29 +234,10 @@ public final class DBUtil
builder.append(")");
String sql = builder.toString();
- if (TRACER.isEnabled())
+ int count = update(connection, sql);
+ if (count == 0)
{
- TRACER.trace(sql);
- }
-
- Statement statement = null;
-
- try
- {
- statement = connection.createStatement();
- int count = statement.executeUpdate(sql);
- if (count == 0)
- {
- throw new DBException("No row inserted into table " + table);
- }
- }
- catch (SQLException ex)
- {
- throw new DBException(ex);
- }
- finally
- {
- close(statement);
+ throw new DBException("No row inserted into table " + table);
}
}
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBAdapter.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBAdapter.java
index 21fe31b976..2a13003c8d 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBAdapter.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBAdapter.java
@@ -16,6 +16,7 @@ import org.eclipse.net4j.util.registry.IRegistry;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.Statement;
+import java.util.Set;
/**
* @author Eike Stepper
@@ -30,9 +31,9 @@ public interface IDBAdapter
public Driver getJDBCDriver();
- public void createTables(Iterable<? extends IDBTable> tables, Connection connection) throws DBException;
+ public Set<IDBTable> createTables(Iterable<? extends IDBTable> tables, Connection connection) throws DBException;
- public void createTable(IDBTable table, Statement statement) throws DBException;
+ public boolean createTable(IDBTable table, Statement statement) throws DBException;
public String mangleTableName(String name, int attempt);
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBSchema.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBSchema.java
index bfd606fa9c..2f9e90b161 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBSchema.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBSchema.java
@@ -13,6 +13,7 @@ package org.eclipse.net4j.db;
import javax.sql.DataSource;
import java.sql.Connection;
+import java.util.Set;
/**
* @author Eike Stepper
@@ -25,9 +26,9 @@ public interface IDBSchema extends IDBElement
public IDBTable[] getTables();
- public void create(IDBAdapter dbAdapter, Connection connection) throws DBException;
+ public Set<IDBTable> create(IDBAdapter dbAdapter, Connection connection) throws DBException;
- public void create(IDBAdapter dbAdapter, ConnectionProvider connectionProvider) throws DBException;
+ public Set<IDBTable> create(IDBAdapter dbAdapter, ConnectionProvider connectionProvider) throws DBException;
- public void create(IDBAdapter dbAdapter, DataSource dataSource) throws DBException;
+ public Set<IDBTable> create(IDBAdapter dbAdapter, DataSource dataSource) throws DBException;
}
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
index 0c06c8eb92..a2ad6c673f 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
@@ -24,6 +24,8 @@ import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.HashSet;
+import java.util.Set;
/**
* @author Eike Stepper
@@ -52,8 +54,9 @@ public abstract class DBAdapter implements IDBAdapter
return version;
}
- public void createTables(Iterable<? extends IDBTable> tables, Connection connection) throws DBException
+ public Set<IDBTable> createTables(Iterable<? extends IDBTable> tables, Connection connection) throws DBException
{
+ Set<IDBTable> createdTables = new HashSet<IDBTable>();
Statement statement = null;
try
@@ -61,7 +64,10 @@ public abstract class DBAdapter implements IDBAdapter
statement = connection.createStatement();
for (IDBTable table : tables)
{
- createTable(table, statement);
+ if (createTable(table, statement))
+ {
+ createdTables.add(table);
+ }
}
}
catch (SQLException ex)
@@ -72,16 +78,21 @@ public abstract class DBAdapter implements IDBAdapter
{
DBUtil.close(statement);
}
+
+ return createdTables;
}
- public void createTable(IDBTable table, Statement statement) throws DBException
+ public boolean createTable(IDBTable table, Statement statement) throws DBException
{
+ boolean created = true;
+
try
{
doCreateTable((DBTable)table, statement);
}
catch (SQLException ex)
{
+ created = false;
if (TRACER.isEnabled())
{
TRACER.trace("-- " + ex.getMessage());
@@ -89,6 +100,7 @@ public abstract class DBAdapter implements IDBAdapter
}
validateTable((DBTable)table, statement);
+ return created;
}
public String mangleTableName(String name, int attempt)
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBSchema.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBSchema.java
index 8c7778a5c7..95a372c1e6 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBSchema.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBSchema.java
@@ -15,12 +15,14 @@ import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.IDBSchema;
+import org.eclipse.net4j.db.IDBTable;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
/**
* @author Eike Stepper
@@ -86,19 +88,19 @@ public class DBSchema extends DBElement implements IDBSchema
return locked = true;
}
- public void create(IDBAdapter dbAdapter, Connection connection) throws DBException
+ public Set<IDBTable> create(IDBAdapter dbAdapter, Connection connection) throws DBException
{
- dbAdapter.createTables(tables.values(), connection);
+ return dbAdapter.createTables(tables.values(), connection);
}
- public void create(IDBAdapter dbAdapter, ConnectionProvider connectionProvider) throws DBException
+ public Set<IDBTable> create(IDBAdapter dbAdapter, ConnectionProvider connectionProvider) throws DBException
{
Connection connection = null;
try
{
connection = connectionProvider.getConnection();
- create(dbAdapter, connection);
+ return create(dbAdapter, connection);
}
finally
{
@@ -106,9 +108,9 @@ public class DBSchema extends DBElement implements IDBSchema
}
}
- public void create(IDBAdapter dbAdapter, DataSource dataSource) throws DBException
+ public Set<IDBTable> create(IDBAdapter dbAdapter, DataSource dataSource) throws DBException
{
- create(dbAdapter, DBUtil.createConnectionProvider(dataSource));
+ return create(dbAdapter, DBUtil.createConnectionProvider(dataSource));
}
void assertUnlocked() throws DBException

Back to the top