From eeb3ad9ce3593882f1d1a67a7b91e34e4f8fbb84 Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 8 Jun 2021 10:22:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?REPORT-53351=20=E5=A4=8D=E5=88=B6=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=90=8Esql-=E5=8F=82=E6=95=B0=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=98=BE=E7=A4=BA=E7=BB=93=E6=9E=9C=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preview/sql/PreviewPerformedSqlPane.java | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index 2800e6f75..938c49f9a 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -107,11 +107,11 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { topPanel.add(imagePanel, BorderLayout.WEST); topPanel.add(messagePanel, BorderLayout.CENTER); - topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,0,10)); + topPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10)); //中间的SQL面板 centerPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); - centerPanel.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); + centerPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); JScrollPane scrollPane = new JScrollPane(); JTextArea checkArea = new JTextArea(sql); checkArea.setEditable(false); @@ -135,7 +135,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { UIButton okButton = new UIButton(Toolkit.i18nText("Fine-Design_Report_OK")); okButton.addActionListener(this); bottomPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); - bottomPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + bottomPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); bottomPanel.add(okButton, BorderLayout.EAST); this.setTitle(Toolkit.i18nText("Fine-Design_Basic_Preview_Performed_Sql")); @@ -167,42 +167,28 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { parameterMap.put(parameter.getName(), parameter.getValue()); } } - boolean showOriginSql = true; - for (ParameterProvider parameter : DataOperator.getInstance().getTableDataParameters(tableData)) { - if (parameterMap.containsKey(parameter.getName())) { - Object value = parameterMap.get(parameter.getName()); - if (value != null && !StringUtils.EMPTY.equals(value)) { - showOriginSql = false; - } - parameter.setValue(value); - } - } String sql; // 计算高亮文本位置 List specialCharParamIndex = null; boolean highlight = true; - if (showOriginSql) { - sql = tableData.getQuery(); - } else { - NameSpace ns = ParameterMapNameSpace.create(parameterMap); - calculator.pushNameSpace(ns); - Parameter[] paras = processParameters(tableData, calculator); - // 所有被转义参数的集合 - Set specialCharParam = EscapeSqlHelper.getInstance().getSpecialCharParam(paras); - // 将参数转义等 - Set tableDataProviders = getTableDataProviders(); - for (TableDataProvider provider : tableDataProviders) { - provider.processParametersBeforeAnalyzeSQL(paras, calculator); - } + NameSpace ns = ParameterMapNameSpace.create(parameterMap); + calculator.pushNameSpace(ns); + Parameter[] paras = processParameters(tableData, calculator); + // 所有被转义参数的集合 + Set specialCharParam = EscapeSqlHelper.getInstance().getSpecialCharParam(paras); + // 将参数转义等 + Set tableDataProviders = getTableDataProviders(); + for (TableDataProvider provider : tableDataProviders) { + provider.processParametersBeforeAnalyzeSQL(paras, calculator); + } - if (!specialCharParam.isEmpty()) { - specialCharParamIndex = ParameterHelper.analyzeCurrentContextTableData4Template(tableData.getQuery(), paras, specialCharParam); - } - String oldSql = ParameterHelper.analyzeCurrentContextTableData4Templatee(tableData.getQuery(), paras); - sql = processExtraSQL(paras, oldSql, calculator, tableDataProviders); - if (!StringUtils.equals(oldSql, sql)) { - highlight = false; - } + if (!specialCharParam.isEmpty()) { + specialCharParamIndex = ParameterHelper.analyzeCurrentContextTableData4Template(tableData.getQuery(), paras, specialCharParam); + } + String oldSql = ParameterHelper.analyzeCurrentContextTableData4Templatee(tableData.getQuery(), paras); + sql = processExtraSQL(paras, oldSql, calculator, tableDataProviders); + if (!StringUtils.equals(oldSql, sql)) { + highlight = false; } // sql内容复制到剪切板 StringSelection selection = new StringSelection(sql); From be9a0b313f4cb7fef6e0b35bc2531b17a6a86ff4 Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 8 Jun 2021 15:06:41 +0800 Subject: [PATCH 2/5] =?UTF-8?q?REPORT-53351=20=E5=A4=8D=E5=88=B6=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=90=8Esql-=E5=8F=82=E6=95=B0=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=98=BE=E7=A4=BA=E7=BB=93=E6=9E=9C=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index 938c49f9a..bf210380b 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -167,6 +167,11 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { parameterMap.put(parameter.getName(), parameter.getValue()); } } + for (ParameterProvider parameter : DataOperator.getInstance().getTableDataParameters(tableData)) { + if (parameterMap.containsKey(parameter.getName())) { + parameter.setValue(parameterMap.get(parameter.getName())); + } + } String sql; // 计算高亮文本位置 List specialCharParamIndex = null; From 70e34c211787f3029517c03e31d1cf1561762cc6 Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 8 Jun 2021 19:44:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?REPORT-53367=20=E5=A4=8D=E5=88=B6=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=90=8Esql-=E8=BF=9C=E7=A8=8B=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9A=84=E8=BD=AC=E4=B9=89=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index bf210380b..7f75d4d3a 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -6,6 +6,7 @@ import com.fr.base.ParameterMapNameSpace; import com.fr.data.impl.DBTableData; import com.fr.data.impl.EscapeSqlHelper; import com.fr.data.operator.DataOperator; +import com.fr.decision.config.PreventSqlInjConfig; import com.fr.decision.webservice.v10.config.ConfigService; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.link.MessageWithLink; @@ -18,6 +19,7 @@ import com.fr.design.parameter.ParameterInputPane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.CloudCenter; import com.fr.general.GeneralContext; +import com.fr.invoke.Reflect; import com.fr.log.FineLoggerFactory; import com.fr.plugin.injectable.PluginModule; import com.fr.script.Calculator; @@ -180,6 +182,10 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { calculator.pushNameSpace(ns); Parameter[] paras = processParameters(tableData, calculator); // 所有被转义参数的集合 + //这里比较恶心。方法1是通过在DataOperatorProvider新增rpc接口,交由服务器去获取转义字符。但是要考虑兼容问题: + //新设计器jar远程老服务器jar,需要提供Compatible实现,但是这个实现能做什么呢?目前没有老的接口可以去获取服务器的转义字符,仍然啥也做不了; + //现在采用方法2,通过反射调用PreventSqlInjConfig的刷新方法(因为这个方法是private,直接改成public仍然有兼容问题) + Reflect.on(PreventSqlInjConfig.class).call("refreshPreventSqlInjConfig"); Set specialCharParam = EscapeSqlHelper.getInstance().getSpecialCharParam(paras); // 将参数转义等 Set tableDataProviders = getTableDataProviders(); From d8dc68e440fb24f8680d77c2a1a2e9484e67e7cb Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 8 Jun 2021 19:50:26 +0800 Subject: [PATCH 4/5] =?UTF-8?q?REPORT-53367=20=E5=A4=8D=E5=88=B6=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=90=8Esql-=E8=BF=9C=E7=A8=8B=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9A=84=E8=BD=AC=E4=B9=89=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index 7f75d4d3a..d86b6ad6c 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -182,9 +182,10 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { calculator.pushNameSpace(ns); Parameter[] paras = processParameters(tableData, calculator); // 所有被转义参数的集合 - //这里比较恶心。方法1是通过在DataOperatorProvider新增rpc接口,交由服务器去获取转义字符。但是要考虑兼容问题: - //新设计器jar远程老服务器jar,需要提供Compatible实现,但是这个实现能做什么呢?目前没有老的接口可以去获取服务器的转义字符,仍然啥也做不了; - //现在采用方法2,通过反射调用PreventSqlInjConfig的刷新方法(因为这个方法是private,直接改成public仍然有兼容问题) + // 远程时如何获取服务器上的转义字符?这里比较恶心 + // 方法1是新增rpc接口,交由服务器去获取转义字符。但是要考虑兼容问题: + // 新设计器jar远程老服务器jar,需要提供Compatible实现,但是这个实现能做什么呢?目前没有老的接口可以去获取服务器的转义字符,仍然啥也做不了; + // 现在采用方法2,通过反射调用PreventSqlInjConfig的刷新方法(因为它是decision模块的private方法,直接改成public仍然有兼容问题) Reflect.on(PreventSqlInjConfig.class).call("refreshPreventSqlInjConfig"); Set specialCharParam = EscapeSqlHelper.getInstance().getSpecialCharParam(paras); // 将参数转义等 From 310eb160bdce1a6ee58817ba7bd6cf05bcb356da Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 8 Jun 2021 20:10:02 +0800 Subject: [PATCH 5/5] =?UTF-8?q?REPORT-53362=20=E5=A4=8D=E5=88=B6=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E5=90=8Esql-=E9=BC=A0=E6=A0=87=E6=82=AC=E6=B5=AE?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=A4=9A=E5=87=BA=E6=9D=A5=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E6=89=A7=E8=A1=8Csql=E7=9A=84=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preview/sql/PreviewPerformedSqlPane.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index d86b6ad6c..8ddf261cf 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -48,6 +48,8 @@ import java.awt.Frame; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -146,6 +148,12 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { this.add(centerPanel, BorderLayout.CENTER); this.add(bottomPanel, BorderLayout.SOUTH); this.setSize(600, 400); + this.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + close(); + } + }); GUICoreUtils.centerWindow(this); } @@ -272,4 +280,8 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { public void actionPerformed(ActionEvent e) { this.dispose(); } + + private void close() { + this.dispose(); + } }