@ -6,7 +6,6 @@ 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 ;
@ -19,7 +18,6 @@ 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 ;
@ -190,11 +188,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener {
calculator . pushNameSpace ( ns ) ;
Parameter [ ] paras = processParameters ( tableData , calculator ) ;
// 所有被转义参数的集合
// 远程时如何获取服务器上的转义字符?这里比较恶心
// 方法1是新增rpc接口,交由服务器去获取转义字符。但是要考虑兼容问题:
// 新设计器jar远程老服务器jar,需要提供Compatible实现,但是这个实现能做什么呢?目前没有老的接口可以去获取服务器的转义字符,仍然啥也做不了;
// 现在采用方法2,通过反射调用PreventSqlInjConfig的刷新方法(因为它是decision模块的private方法,直接改成public仍然有兼容问题)
Reflect . on ( PreventSqlInjConfig . class ) . call ( "refreshPreventSqlInjConfig" ) ;
refreshEscapeSqlHelper ( ) ;
Set < String > specialCharParam = EscapeSqlHelper . getInstance ( ) . getSpecialCharParam ( paras ) ;
// 将参数转义等
Set < TableDataProvider > tableDataProviders = getTableDataProviders ( ) ;
@ -223,6 +217,13 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener {
pane . setVisible ( true ) ;
}
private static void refreshEscapeSqlHelper ( ) {
EscapeSqlHelper . getInstance ( ) . setUseForbidWord ( ConfigService . getInstance ( ) . getPSIConfig ( ) . isUseForbidWord ( ) ) ;
EscapeSqlHelper . getInstance ( ) . setSelectedForbidWord ( ConfigService . getInstance ( ) . getPSIConfig ( ) . getSelectedForbidWord ( ) ) ;
EscapeSqlHelper . getInstance ( ) . setUseEscapeSpecialChar ( ConfigService . getInstance ( ) . getPSIConfig ( ) . isUseEscapeSpecialChar ( ) ) ;
EscapeSqlHelper . getInstance ( ) . setSelectedSpecialChar ( ConfigService . getInstance ( ) . getPSIConfig ( ) . getSelectedSpecialChar ( ) ) ;
}
private static boolean isShowSpecialCharSqlPane ( List < int [ ] > specialCharParamIndex ) {
return specialCharParamIndex ! = null & & ! specialCharParamIndex . isEmpty ( ) ;
}