From 17486ff662c941c093480250ab50f82c3cad429e Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 1 Dec 2016 00:46:02 +0300 Subject: [PATCH] Object refresh redesign (use deep copy instead of replace) --- .../dbeaver/ext/erd/editor/ERDEditorPart.java | 2 +- .../dbeaver/ext/mysql/model/MySQLTable.java | 2 +- .../model/impl/AbstractObjectCache.java | 42 +++++++++++++++++++ .../jdbc/cache/JDBCObjectLookupCache.java | 8 ++-- .../jdbc/cache/JDBCStructLookupCache.java | 11 +++-- 5 files changed, 57 insertions(+), 8 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDEditorPart.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDEditorPart.java index fedfdca75e..1edcde12ee 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDEditorPart.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDEditorPart.java @@ -636,7 +636,7 @@ public abstract class ERDEditorPart extends GraphicalEditorWithFlyoutPalette @Override public void refreshPart(Object source, boolean force) { - refreshDiagram(force); + refreshDiagram(false); } public void saveDiagramAs() diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLTable.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLTable.java index 4c4c81fbeb..d2d850bd27 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLTable.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLTable.java @@ -91,7 +91,7 @@ public class MySQLTable extends MySQLTableBase } } - private SimpleObjectCache foreignKeys = new SimpleObjectCache<>(); + private final SimpleObjectCache foreignKeys = new SimpleObjectCache<>(); private final PartitionCache partitionCache = new PartitionCache(); private final AdditionalInfo additionalInfo = new AdditionalInfo(); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java index e73c07c1cb..9752fb172e 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java @@ -26,6 +26,8 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.sql.SQLDataSource; import org.jkiss.dbeaver.model.struct.DBSObject; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.*; /** @@ -246,6 +248,46 @@ public abstract class AbstractObjectCache { private Iterator listIterator = objectList.iterator(); private OBJECT curObject; diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java index ed8c0687dd..f5360c6f35 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java @@ -74,11 +74,13 @@ public abstract class JDBCObjectLookupCache