Browse Source

REPORT-48318 改成给search传参,避免造成卡顿问题

feature/big-screen
xiqiu 4 years ago
parent
commit
c829390f0c
  1. 25
      designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java
  2. 8
      designer-base/src/main/java/com/fr/design/gui/ilist/TableViewList.java

25
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

8
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) {

Loading…
Cancel
Save