Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java')
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java78
1 files changed, 8 insertions, 70 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
index 2f3541b593..09f7973580 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
@@ -16,8 +16,6 @@ import org.eclipse.net4j.db.IDBConnectionProvider;
import org.eclipse.net4j.db.IDBDatabase;
import org.eclipse.net4j.db.IDBTransaction;
import org.eclipse.net4j.db.ddl.IDBSchema;
-import org.eclipse.net4j.db.ddl.IDBSchemaElement;
-import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.db.ddl.delta.IDBSchemaDelta;
import org.eclipse.net4j.internal.db.ddl.delta.DBSchemaDelta;
import org.eclipse.net4j.spi.db.DBAdapter;
@@ -25,8 +23,6 @@ import org.eclipse.net4j.spi.db.ddl.InternalDBSchema;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.container.SetContainer;
import org.eclipse.net4j.util.event.Event;
-import org.eclipse.net4j.util.event.IEvent;
-import org.eclipse.net4j.util.event.IListener;
import java.sql.Connection;
import java.sql.SQLException;
@@ -114,80 +110,22 @@ public final class DBDatabase extends SetContainer<IDBTransaction> implements ID
return schemaTransaction;
}
- public void ensureSchemaElement(RunnableWithSchema updateRunnable, final RunnableWithSchema commitRunnable)
+ public void updateSchema(RunnableWithSchema runnable)
{
- if (schemaTransaction != null)
+ DBSchemaTransaction schemaTransaction = openSchemaTransaction();
+
+ try
{
IDBSchema workingCopy = schemaTransaction.getWorkingCopy();
- updateRunnable.run(workingCopy);
-
- if (commitRunnable != null)
- {
- addListener(new IListener()
- {
- public void notifyEvent(IEvent event)
- {
- if (event instanceof SchemaChangedEvent)
- {
- commitRunnable.run(schema);
- removeListener(this);
- }
- }
- });
- }
+ runnable.run(workingCopy);
+ schemaTransaction.commit();
}
- else
+ finally
{
- if (commitRunnable != null)
- {
- commitRunnable.run(schema);
- }
+ schemaTransaction.close();
}
}
- public <T extends IDBSchemaElement, P extends IDBSchemaElement> T ensureSchemaElement(P parent, Class<T> type,
- String name, RunnableWithSchemaElement<T, P> runnable)
- {
- T element = parent.getElement(type, name);
- if (element == null)
- {
- DBSchemaTransaction schemaTransaction = openSchemaTransaction();
-
- try
- {
- IDBSchema workingCopy = schemaTransaction.getWorkingCopy();
- P parentCopy = workingCopy.findElement(parent);
-
- T elementCopy = runnable.run(parentCopy, name);
-
- schemaTransaction.commit();
- if (elementCopy != null)
- {
- element = parent.getSchema().findElement(elementCopy);
- }
- }
- finally
- {
- schemaTransaction.close();
- }
- }
-
- return element;
- }
-
- public IDBTable ensureTable(String name, final RunnableWithTable runnable)
- {
- return ensureSchemaElement(schema, IDBTable.class, name, new RunnableWithSchemaElement<IDBTable, IDBSchema>()
- {
- public IDBTable run(IDBSchema parent, String name)
- {
- IDBTable table = parent.addTable(name);
- runnable.run(table);
- return table;
- }
- });
- }
-
public DBTransaction openTransaction()
{
DBTransaction transaction = new DBTransaction(this);

Back to the top