From 37d7fabfee118a6b5655eb9698de5c7387faeafc Mon Sep 17 00:00:00 2001 From: xiqiu Date: Wed, 3 Mar 2021 09:12:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-48318=20=20=20=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E6=97=B6=E6=89=8D=E5=8E=BB=E6=9B=B4=E6=96=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/ConnectionTableProcedurePane.java | 36 +++++++++++++------ .../fr/design/gui/ilist/TableViewList.java | 18 ++++++---- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 4b4d66866..0ba498556 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -1,27 +1,33 @@ package com.fr.design.data.datapane.connect; import com.fr.base.BaseUtils; +import com.fr.data.core.db.TableProcedure; import com.fr.data.impl.AbstractDatabaseConnection; import com.fr.data.impl.Connection; -import com.fr.design.constants.UIConstants; -import com.fr.data.core.db.TableProcedure; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.ilist.TableViewList; +import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; import com.fr.general.GeneralContext; - +import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; -import javax.swing.*; +import javax.swing.JPanel; +import javax.swing.ToolTipManager; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.List; /** @@ -48,10 +54,11 @@ public class ConnectionTableProcedurePane extends BasicPane { filter(connection, conName, nameList); } + @Override protected void refreshItems() { super.refreshItems(); if (tableViewList != null) { - search(); + searchForRefresh(); } } }; @@ -190,13 +197,22 @@ public class ConnectionTableProcedurePane extends BasicPane { tableViewList.populate(selectedObj, searchField.getText().trim(), types); } + protected void searchForRefresh() { + String databaseName = connectionComboBox.getSelectedItem(); + if (databaseName != null) { + tableViewList.clearCache(databaseName); + } else { + FineLoggerFactory.getLogger().warn("database name is null"); + } + search(); + } + @Override protected String title4PopupWindow() { return "Connection"; } /** - * * @param l */ public void addDoubleClickListener(DoubleClickSelectedNodeOnTreeListener l) { diff --git a/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java b/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java index ec05732c6..eccb24893 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java +++ b/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java @@ -106,12 +106,6 @@ public class TableViewList extends UIList { if (!status) { throw new Exception(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed")); } - String[] schemas = DataCoreUtils.getDatabaseSchema(datasource); - schemas = (schemas == null || schemas.length == 0) ? new String[]{null} : schemas; - for (String schema : schemas) { - clearCache(datasource, schema); - } - clearCache(datasource, null); return processDataInAnotherThread(databaseName, searchFilter, typesFilter); } @@ -132,7 +126,17 @@ public class TableViewList extends UIList { } } - private void clearCache(Connection datasource, String schema) { + public void clearCache(String databaseName) { + Connection datasource = ConnectionConfig.getInstance().getConnection(databaseName); + String[] schemas = DataCoreUtils.getDatabaseSchema(datasource); + schemas = (schemas == null || schemas.length == 0) ? new String[]{null} : schemas; + for (String schema : schemas) { + doClearCache(datasource, schema); + } + doClearCache(datasource, null); + } + + private void doClearCache(Connection datasource, String schema) { DataCoreUtils.refreshTables(datasource, TableProcedure.TABLE, schema); DataCoreUtils.refreshTables(datasource, TableProcedure.VIEW, schema); DataCoreUtils.refreshTables(datasource, TableProcedure.PROCEDURE, schema); From c829390f0c31d8c7765aea700cb8e20e15f9630c Mon Sep 17 00:00:00 2001 From: xiqiu Date: Wed, 3 Mar 2021 14:57:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-48318=20=20=20=E6=94=B9=E6=88=90?= =?UTF-8?q?=E7=BB=99search=E4=BC=A0=E5=8F=82=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E9=80=A0=E6=88=90=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/ConnectionTableProcedurePane.java | 25 ++++++------------- .../fr/design/gui/ilist/TableViewList.java | 8 +++--- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 0ba498556..a979a20cd 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -14,7 +14,6 @@ import com.fr.design.gui.ilist.TableViewList; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.GeneralContext; -import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import javax.swing.JPanel; @@ -58,7 +57,7 @@ public class ConnectionTableProcedurePane extends BasicPane { protected void refreshItems() { super.refreshItems(); if (tableViewList != null) { - searchForRefresh(); + search(true); } } }; @@ -155,17 +154,17 @@ public class ConnectionTableProcedurePane extends BasicPane { @Override public void removeUpdate(DocumentEvent e) { - search(); + search(false); } @Override public void insertUpdate(DocumentEvent e) { - search(); + search(false); } @Override public void changedUpdate(DocumentEvent e) { - search(); + search(false); } }; @@ -173,14 +172,14 @@ public class ConnectionTableProcedurePane extends BasicPane { @Override public void actionPerformed(ActionEvent e) { - search(); + search(false); } }; /** * 选项改变,需要重新刷新下拉列表里面的项 */ - protected void search() { + protected void search(boolean refresh) { String selectedObj = connectionComboBox.getSelectedItem(); String[] types = ArrayUtils.EMPTY_STRING_ARRAY; @@ -194,17 +193,7 @@ public class ConnectionTableProcedurePane extends BasicPane { } else { types = (String[]) ArrayUtils.add(types, TableProcedure.PROCEDURE); } - tableViewList.populate(selectedObj, searchField.getText().trim(), types); - } - - protected void searchForRefresh() { - String databaseName = connectionComboBox.getSelectedItem(); - if (databaseName != null) { - tableViewList.clearCache(databaseName); - } else { - FineLoggerFactory.getLogger().warn("database name is null"); - } - search(); + tableViewList.populate(selectedObj, searchField.getText().trim(), refresh, types); } @Override diff --git a/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java b/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java index eccb24893..ba29288fc 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java +++ b/designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java @@ -82,7 +82,7 @@ public class TableViewList extends UIList { * @param searchFilter * @param typesFilter */ - public void populate(final String databaseName, final String searchFilter, final String... typesFilter) { + public void populate(final String databaseName, final String searchFilter, boolean refresh, final String... typesFilter) { DefaultListModel defaultListModel = new DefaultListModel(); defaultListModel.addElement(UIConstants.PENDING); final DefaultListModel failed = new DefaultListModel(); @@ -106,6 +106,9 @@ public class TableViewList extends UIList { if (!status) { throw new Exception(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed")); } + if (refresh) { + clearCache(datasource); + } return processDataInAnotherThread(databaseName, searchFilter, typesFilter); } @@ -126,8 +129,7 @@ public class TableViewList extends UIList { } } - public void clearCache(String databaseName) { - Connection datasource = ConnectionConfig.getInstance().getConnection(databaseName); + private void clearCache(Connection datasource) { String[] schemas = DataCoreUtils.getDatabaseSchema(datasource); schemas = (schemas == null || schemas.length == 0) ? new String[]{null} : schemas; for (String schema : schemas) {