From e8b0902fb9e13b285d929e19403c301daf968116 Mon Sep 17 00:00:00 2001 From: jurgen Date: Sun, 21 Jun 2015 09:42:02 +0000 Subject: [PATCH] DB2 FQ names fix. DB2 tables cache fix. --- .../model/struct/rdb/DBSProcedure.java | 2 +- .../ext/db2/manager/DB2SchemaManager.java | 6 +-- .../dbeaver/ext/db2/model/DB2Routine.java | 10 ++++- .../dbeaver/ext/db2/model/DB2Schema.java | 45 +++++++------------ .../dbeaver/ext/db2/model/DB2TableBase.java | 5 ++- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/rdb/DBSProcedure.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/rdb/DBSProcedure.java index 9433b6cd24..c5edde3695 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/rdb/DBSProcedure.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/rdb/DBSProcedure.java @@ -30,7 +30,7 @@ import java.util.Collection; */ public interface DBSProcedure extends DBSObject, DBPQualifiedObject { - DBSObjectContainer getContainer(); + DBSObject getContainer(); DBSProcedureType getProcedureType(); diff --git a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/manager/DB2SchemaManager.java b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/manager/DB2SchemaManager.java index 97ceaf6ae7..0bd91f195e 100644 --- a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/manager/DB2SchemaManager.java +++ b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/manager/DB2SchemaManager.java @@ -27,6 +27,7 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchWindow; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.edit.DBEPersistAction; import org.jkiss.dbeaver.ext.db2.model.DB2DataSource; import org.jkiss.dbeaver.ext.db2.model.DB2Schema; @@ -80,9 +81,8 @@ public class DB2SchemaManager extends SQLObjectEditor @Override protected DBEPersistAction[] makeObjectCreateActions(ObjectCreateCommand command) { - String schemaName = command.getObject().getName(); SQLDatabasePersistAction action = new SQLDatabasePersistAction("Create schema", String.format(SQL_CREATE_SCHEMA, - schemaName)); + DBUtils.getQuotedIdentifier(command.getObject()))); return new DBEPersistAction[] { action }; } @@ -91,7 +91,7 @@ public class DB2SchemaManager extends SQLObjectEditor { String schemaName = command.getObject().getName(); DBEPersistAction action = new SQLDatabasePersistAction("Drop schema (SQL)", String.format(SQL_DROP_SCHEMA, - schemaName)); + DBUtils.getQuotedIdentifier(command.getObject()))); return new DBEPersistAction[] { action }; } diff --git a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Routine.java b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Routine.java index d13f2203c3..b6363dbbc0 100644 --- a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Routine.java +++ b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Routine.java @@ -33,6 +33,7 @@ import org.jkiss.dbeaver.ext.db2.model.dict.DB2RoutineValidType; import org.jkiss.dbeaver.ext.db2.model.dict.DB2YesNo; import org.jkiss.dbeaver.ext.db2.model.module.DB2Module; import org.jkiss.dbeaver.model.DBPRefreshableObject; +import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.meta.Property; @@ -175,13 +176,18 @@ public class DB2Routine extends DB2Object implements DBSProcedure, DB @Override public String getFullQualifiedName() { - return parent.getName() + "." + name; + return DBUtils.getFullQualifiedName(getDataSource(), + parent, + this); } @Override public DBSObjectContainer getContainer() { - return getContainer(); + if (parent instanceof DBSObjectContainer) { + return (DBSObjectContainer) parent; + } + return db2Schema; } @Override diff --git a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Schema.java b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Schema.java index 5223f8b9f0..d215c876e0 100644 --- a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Schema.java +++ b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2Schema.java @@ -52,9 +52,7 @@ import org.jkiss.utils.CommonUtils; import java.sql.ResultSet; import java.sql.Timestamp; -import java.util.Collection; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; /** * DB2Schema @@ -96,9 +94,6 @@ public class DB2Schema extends DB2GlobalObject implements DBSSchema, DBPRefresha private final DB2TableReferenceCache referenceCache = new DB2TableReferenceCache(tableCache); private final DB2TableCheckConstraintCache checkCache = new DB2TableCheckConstraintCache(tableCache); - // Combined Cache for the content assist to work. Aliases being not DB2TableBase, they are alas not included... - private Map allKindOfTableCache; - private String name; private String owner; private DB2OwnerType ownerType; @@ -268,34 +263,28 @@ public class DB2Schema extends DB2GlobalObject implements DBSSchema, DBPRefresha @Override public Collection getChildren(DBRProgressMonitor monitor) throws DBException { - // Build only once, a combined cache of ""Tables"" for content assist to work - if (allKindOfTableCache == null) { - - allKindOfTableCache = new TreeMap(); // TreeMap to keep things ordered - - for (DB2Table db2Table : tableCache.getObjects(monitor, this)) { - allKindOfTableCache.put(db2Table.getName(), db2Table); - } - for (DB2View db2View : viewCache.getObjects(monitor, this)) { - allKindOfTableCache.put(db2View.getName(), db2View); - } - for (DB2MaterializedQueryTable db2Mqt : mqtCache.getObjects(monitor, this)) { - allKindOfTableCache.put(db2Mqt.getName(), db2Mqt); - } - for (DB2Nickname db2Nickname : nicknameCache.getObjects(monitor, this)) { - allKindOfTableCache.put(db2Nickname.getName(), db2Nickname); - } - } - return allKindOfTableCache.values(); + List allChildren = new ArrayList(); + allChildren.addAll(tableCache.getObjects(monitor, this)); + allChildren.addAll(viewCache.getObjects(monitor, this)); + allChildren.addAll(mqtCache.getObjects(monitor, this)); + allChildren.addAll(nicknameCache.getObjects(monitor, this)); + return allChildren; } @Override public DB2TableBase getChild(DBRProgressMonitor monitor, String childName) throws DBException { - if (allKindOfTableCache == null) { - getChildren(monitor); + DB2TableBase child = tableCache.getObject(monitor, this, childName); + if (child == null) { + child = viewCache.getObject(monitor, this, childName); + } + if (child == null) { + child = mqtCache.getObject(monitor, this, childName); + } + if (child == null) { + child = nicknameCache.getObject(monitor, this, childName); } - return allKindOfTableCache.get(childName); + return child; } // ----------------- diff --git a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2TableBase.java b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2TableBase.java index 6d1f7f2e26..f937673368 100644 --- a/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2TableBase.java +++ b/plugins/org.jkiss.dbeaver.db2/src/org/jkiss/dbeaver/ext/db2/model/DB2TableBase.java @@ -25,6 +25,7 @@ import org.jkiss.dbeaver.ext.db2.editors.DB2StatefulObject; import org.jkiss.dbeaver.ext.db2.model.dict.DB2OwnerType; import org.jkiss.dbeaver.model.DBPNamedObject2; import org.jkiss.dbeaver.model.DBPRefreshableObject; +import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; @@ -100,7 +101,9 @@ public abstract class DB2TableBase extends JDBCTable i @Override public String getFullQualifiedName() { - return getContainer().getName() + "." + this.getName(); + return DBUtils.getFullQualifiedName(getDataSource(), + getContainer(), + this); } // ----------------- -- GitLab