diff options
author | Eike Stepper | 2013-03-08 10:48:38 +0000 |
---|---|---|
committer | Eike Stepper | 2013-03-08 10:48:38 +0000 |
commit | c359069dd7114dd2ab4038bae89c5f42350cb885 (patch) | |
tree | 4a242e816f83de8de718a33668bc242a586f64fe /plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db | |
parent | f2879b592ade925aa9b793a36e3884efc63e52ba (diff) | |
download | cdo-c359069dd7114dd2ab4038bae89c5f42350cb885.tar.gz cdo-c359069dd7114dd2ab4038bae89c5f42350cb885.tar.xz cdo-c359069dd7114dd2ab4038bae89c5f42350cb885.zip |
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
Diffstat (limited to 'plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db')
7 files changed, 58 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java index 82c00288cf..f115dc24a0 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBDatabase.java @@ -11,6 +11,8 @@ package org.eclipse.net4j.db; 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.util.collection.Closeable; import org.eclipse.net4j.util.container.IContainer; @@ -41,4 +43,25 @@ public interface IDBDatabase extends IContainer<IDBTransaction>, Closeable public int getStatementCacheCapacity(); public void setStatementCacheCapacity(int statementCacheCapacity); + + public <T extends IDBSchemaElement, P extends IDBSchemaElement> T ensureSchemaElement(P parent, Class<T> type, + String name, RunnableWithSchemaElement<T, P> runnable); + + public IDBTable ensureTable(String name, RunnableWithTable runnable); + + /** + * @author Eike Stepper + */ + public interface RunnableWithSchemaElement<T extends IDBSchemaElement, P extends IDBSchemaElement> + { + public T run(P parent, String name); + } + + /** + * @author Eike Stepper + */ + public interface RunnableWithTable + { + public void run(IDBTable table); + } } diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java index 0ab991768e..370fafde1d 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBField.java @@ -24,6 +24,11 @@ public interface IDBField extends IDBSchemaElement, PositionProvider { public static final int DEFAULT = -1; + /** + * @since 4.2 + */ + public IDBTable getParent(); + public IDBTable getTable(); public DBType getType(); diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java index 8e9de00991..d0f4198630 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndex.java @@ -19,6 +19,11 @@ package org.eclipse.net4j.db.ddl; */ public interface IDBIndex extends IDBSchemaElement { + /** + * @since 4.2 + */ + public IDBTable getParent(); + public IDBTable getTable(); public Type getType(); diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java index 73b20f5598..0758d572ae 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBIndexField.java @@ -22,6 +22,11 @@ import org.eclipse.net4j.util.collection.PositionProvider; */ public interface IDBIndexField extends IDBSchemaElement, PositionProvider { + /** + * @since 4.2 + */ + public IDBIndex getParent(); + public IDBIndex getIndex(); public IDBField getField(); diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java index d6971757de..39eda29ca8 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchema.java @@ -36,6 +36,11 @@ public interface IDBSchema extends IDBSchemaElement */ public boolean isLocked(); + /** + * @since 4.2 + */ + public <T extends IDBSchemaElement> T findElement(IDBSchemaElement prototype); + public IDBTable addTable(String name) throws DBException; /** diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java index 15e36e9a4a..bf75072b5e 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBSchemaElement.java @@ -35,6 +35,11 @@ public interface IDBSchemaElement extends IDBNamedElement, IContainer<IDBSchemaE /** * @since 4.2 */ + public IDBSchemaElement getParent(); + + /** + * @since 4.2 + */ @Deprecated public void setName(String name); @@ -43,6 +48,11 @@ public interface IDBSchemaElement extends IDBNamedElement, IContainer<IDBSchemaE /** * @since 4.2 */ + public <T extends IDBSchemaElement> T getElement(Class<T> type, String name); + + /** + * @since 4.2 + */ public void accept(IDBSchemaVisitor visitor); /** diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java index 554727e02d..de3893a5dd 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/ddl/IDBTable.java @@ -21,6 +21,11 @@ import org.eclipse.net4j.db.DBType; */ public interface IDBTable extends IDBSchemaElement { + /** + * @since 4.2 + */ + public IDBSchema getParent(); + public IDBField addField(String name, DBType type); public IDBField addField(String name, DBType type, boolean notNull); |