diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java index eda641467..ca761bb57 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java @@ -1,10 +1,10 @@ package com.fr.design.data.datapane; -import com.fr.base.BaseUtils; import com.fr.base.TableData; import com.fr.data.core.DataCoreUtils; import com.fr.data.core.db.DBUtils; import com.fr.data.core.db.TableProcedure; +import com.fr.data.core.db.dialect.Dialect; import com.fr.data.core.db.dialect.DialectFactory; import com.fr.data.impl.Connection; import com.fr.data.impl.DBTableData; @@ -38,11 +38,7 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTree; -import javax.swing.SwingWorker; +import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.PopupMenuEvent; @@ -53,9 +49,7 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; +import java.awt.*; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; @@ -455,6 +449,15 @@ public class ChoosePane extends BasicBeanPane implements Refresha * @return 数据集数据 */ public TableData createSelectTableData() { + return createSelectTableData(new SelectSqlProcessor() { + @Override + public String createSelectSql(String schema, String tableName, Dialect dialect) { + return DataCoreUtils.createSelectSQL(schema, tableName, dialect); + } + }); + } + + public TableData createSelectTableData(SelectSqlProcessor sqlProcessor) { DataBaseItems paras = this.updateBean(); boolean connect = false; com.fr.data.impl.Connection database = DBUtils.checkDBConnection(paras.getDatabaseName()); @@ -477,11 +480,11 @@ public class ChoosePane extends BasicBeanPane implements Refresha TableData tableData = null; if (WorkContext.getCurrent().isLocal()) { - tableData = new DBTableData(database, DataCoreUtils.createSelectSQL(paras.getSchemaName(), paras.getTableName(), + tableData = new DBTableData(database, sqlProcessor.createSelectSql(paras.getSchemaName(), paras.getTableName(), DialectFactory.getDialectByName(paras.getDatabaseName()))); } else { try { - TableData tableDataLocal = new DBTableData(database, DataCoreUtils.createSelectSQL(paras.getSchemaName(), paras.getTableName(), DialectFactory.getDialectByName(paras.getDatabaseName()))); + TableData tableDataLocal = new DBTableData(database, sqlProcessor.createSelectSql(paras.getSchemaName(), paras.getTableName(), DialectFactory.getDialectByName(paras.getDatabaseName()))); tableData = DataOperator.getInstance().previewTableData(tableDataLocal, java.util.Collections.EMPTY_MAP, DesignerEnvManager.getEnvManager().getMaxNumberOrPreviewRow()); } catch (Exception e) { @@ -591,6 +594,13 @@ public class ChoosePane extends BasicBeanPane implements Refresha }); } + /** + * 数据集选择面板里的生成sql语句的接口 + */ + public interface SelectSqlProcessor { + String createSelectSql(String schema, String tableName, Dialect dialect); + } + protected class StringUIComboBox extends UIComboBox { private boolean refreshingModel = false; diff --git a/designer-base/src/main/java/com/fr/design/present/dict/DatabaseDictPane.java b/designer-base/src/main/java/com/fr/design/present/dict/DatabaseDictPane.java index 668bcd9be..7ffb4e61e 100644 --- a/designer-base/src/main/java/com/fr/design/present/dict/DatabaseDictPane.java +++ b/designer-base/src/main/java/com/fr/design/present/dict/DatabaseDictPane.java @@ -2,7 +2,9 @@ package com.fr.design.present.dict; import com.fr.base.BaseFormula; import com.fr.base.TableData; +import com.fr.data.core.DataCoreUtils; import com.fr.data.core.db.DBUtils; +import com.fr.data.core.db.dialect.Dialect; import com.fr.data.impl.DatabaseDictionary; import com.fr.data.impl.NameDatabaseConnection; import com.fr.design.beans.FurtherBasicBeanPane; @@ -23,7 +25,6 @@ import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; - import com.fr.stable.StringUtils; import javax.swing.*; @@ -215,7 +216,12 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i * */ public void dbChange() { - TableData tableData = this.chooseTable.createSelectTableData(); + TableData tableData = this.chooseTable.createSelectTableData(new ChoosePane.SelectSqlProcessor() { + @Override + public String createSelectSql(String schema, String tableName, Dialect dialect) { + return DataCoreUtils.createColumnSelectSQL(schema, tableName, dialect); + } + }); String[] columnNames = DesignTableDataManager.getColumnNamesByTableData(tableData).toArray(new String[0]); ColumnNameEditor columnNameEditor1 = new ColumnNameEditor(columnNames); columnNameEditor1.addItemListener(itemListener);