From 4069fabeda145da4349dfe664517ea79d834f644 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 15 Aug 2024 17:17:04 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-114392=20FR-FBP=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E8=AE=BE=E8=AE=A1=E9=80=82=E9=85=8D=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/server/GlobalTableDataAction.java | 3 +- .../fr/design/data/DataEncryptionHelper.java | 41 ------ .../fr/design/data/datapane/ChoosePane.java | 20 ++- .../data/datapane/TableDataPaneListPane.java | 4 +- .../data/datapane/TreeTableDataComboBox.java | 28 +++- .../datapane/preview/TableDataBeanHelper.java | 137 ------------------ .../tabledata/wrapper/TableDataFactory.java | 5 +- 7 files changed, 43 insertions(+), 195 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/data/DataEncryptionHelper.java delete mode 100644 designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java diff --git a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java index 8c9076a0c1..d32e4b1bfc 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java @@ -7,7 +7,7 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.actions.UpdateAction; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; -import com.fr.design.data.datapane.preview.TableDataBeanHelper; +import com.fr.workspace.server.repository.tabledata.TableDataBeanHelper; import com.fr.design.data.tabledata.ResponseDataSourceChange; import com.fr.design.data.tabledata.tabledatapane.TableDataManagerPane; import com.fr.design.dialog.BasicDialog; @@ -26,7 +26,6 @@ import com.fr.esd.event.StrategyEventsNotifier; import com.fr.report.LockItem; import com.fr.security.encryption.transmission.TransmissionEncryptionManager; import com.fr.workspace.server.entity.connection.ConnectionBean; -import com.fr.workspace.server.entity.tabledata.TableDataBean; import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository; diff --git a/designer-base/src/main/java/com/fr/design/data/DataEncryptionHelper.java b/designer-base/src/main/java/com/fr/design/data/DataEncryptionHelper.java deleted file mode 100644 index e5a7059fbf..0000000000 --- a/designer-base/src/main/java/com/fr/design/data/DataEncryptionHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.fr.design.data; - -import com.fr.decision.webservice.utils.DecisionServiceConstants; -import com.fr.security.encryption.transmission.TransmissionEncryptionManager; -import com.fr.stable.StringUtils; -import com.fr.workspace.server.repository.WorkplaceConstants; - -/** - * 数据加解密工具类 - * - * @author Destiny.Lin - * @since 11.0 - * Created on 2024/8/9 - */ -public class DataEncryptionHelper { - - /** - * 密码加密 - */ - public static String encryptPassWord(String password) { - // 如果是空密码或者默认密码,就返回默认的星号回去 - if (StringUtils.isEmpty(password) || StringUtils.equals(password, DecisionServiceConstants.DEFAULT_PASSWORD)) { - return DecisionServiceConstants.DEFAULT_PASSWORD; - } - return encrypt(password); - } - - /** - * 加密字符串 - */ - public static String encrypt(String str) { - return TransmissionEncryptionManager.getInstance().getEncryption(WorkplaceConstants.getEncryptionMode()).encrypt(str, WorkplaceConstants.getEncryptionKey()); - } - - /** - * 解密字符串 - */ - public static String decrypt(String str) { - return TransmissionEncryptionManager.getInstance().getEncryption(WorkplaceConstants.getDecryptionMode()).decrypt(str, WorkplaceConstants.getDecryptionKey()); - } -} 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 7d0859c0ac..fab38db6fc 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 @@ -39,8 +39,7 @@ import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; -import com.fr.workspace.server.connection.DBConnectAuth; -import com.fr.workspace.server.entity.connection.ConnectionBean; +import com.fr.workspace.server.repository.authority.RemoteAuthorityRepository; import com.fr.workspace.server.repository.connection.ConnectionRepository; import javax.swing.JList; @@ -67,7 +66,10 @@ import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.CancellationException; @@ -330,7 +332,7 @@ public class ChoosePane extends BasicBeanPane implements Refresha List authConnections = getHasAuthConnections(); for (String name : authConnections) { if (ComparatorUtils.equals(selectedDSName, name)) { - return ConnectionConfigProviderFactory.getConfigProvider().getConnection(name); + return ConnectionRepository.getInstance().getByName(name).getConnection(); } } return null; @@ -338,9 +340,9 @@ public class ChoosePane extends BasicBeanPane implements Refresha private List getHasAuthConnections() { List authConnections = new ArrayList<>(); - Set allConnections = ConnectionConfigProviderFactory.getConfigProvider().getConnections().keySet(); + Set allConnections = new HashSet<>(ConnectionRepository.getInstance().getConnNames()); // 待实现 - Collection noAuthConnections = new ArrayList<>(); + Collection noAuthConnections = RemoteAuthorityRepository.getInstance().getNoAuthConnections(); if (noAuthConnections == null) { return authConnections; } @@ -438,7 +440,13 @@ public class ChoosePane extends BasicBeanPane implements Refresha public TableData createSelectTableData(SelectSqlProcessor sqlProcessor) { DataBaseItems paras = this.updateBean(); boolean connect = false; - com.fr.data.impl.Connection database = DBUtils.checkDBConnection(paras.getDatabaseName()); + com.fr.data.impl.Connection database = null; + try { + database = ConnectionRepository.getInstance().getByName(paras.getDatabaseName()).getConnection(); + } catch (Exception e) { + FineLoggerFactory.getLogger().info(e.getMessage(), e); + } + if (database == null) { failedToFindTable(); return TableData.EMPTY_TABLEDATA; diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java index bbd188ce66..f32e8d2e2f 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -7,18 +7,16 @@ import com.fr.data.TableDataSource; import com.fr.decision.webservice.bean.dataset.ServerDataSetBean; -import com.fr.decision.webservice.v10.datasource.dataset.processor.impl.DataSetProcessorFactory; import com.fr.design.data.BasicTableDataUtils; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.MapCompareUtils; -import com.fr.design.data.datapane.preview.TableDataBeanHelper; +import com.fr.workspace.server.repository.tabledata.TableDataBeanHelper; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.i18n.Toolkit; import com.fr.file.ProcedureConfig; -import com.fr.file.TableDataOperator; import com.fr.file.TableDataOperatorImpl; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TreeTableDataComboBox.java b/designer-base/src/main/java/com/fr/design/data/datapane/TreeTableDataComboBox.java index bca5b29912..b0f9a12551 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TreeTableDataComboBox.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TreeTableDataComboBox.java @@ -1,19 +1,27 @@ package com.fr.design.data.datapane; -import com.fanruan.config.impl.data.TableDataConfigProviderFactory; import com.fr.base.TableData; import com.fr.data.TableDataSource; +import com.fr.data.impl.Connection; import com.fr.data.impl.RecursionTableData; +import com.fr.decision.webservice.bean.dataset.ServerDataSetBean; import com.fr.design.data.DesignTableDataManager; +import com.fr.workspace.server.repository.tabledata.TableDataBeanHelper; import com.fr.design.data.tabledata.wrapper.ServerTableDataWrapper; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBoxRenderer; +import com.fr.security.encryption.transmission.TransmissionEncryptionManager; import com.fr.stable.StringUtils; +import com.fr.workspace.server.entity.connection.ConnectionBean; +import com.fr.workspace.server.repository.connection.ConnectionRepository; +import com.fr.workspace.server.repository.tabledata.TableDataRepository; import javax.swing.*; import java.awt.*; +import java.util.HashMap; +import java.util.List; import java.util.Map; public class TreeTableDataComboBox extends UIComboBox { @@ -61,7 +69,23 @@ public class TreeTableDataComboBox extends UIComboBox { } // 全局数据集 - Map map = TableDataConfigProviderFactory.getInstance().getTableDatas(); + List beans = TableDataRepository.getInstance().getAllTableData(); + Map map = new HashMap<>(); + final List connectionInfoBeans = ConnectionRepository.getInstance().getAll(); + final Map connectionMap = new HashMap<>(); + for (ConnectionBean bean : connectionInfoBeans) { + connectionMap.put(bean.getName(), bean.getConnection()); + } + try { + TransmissionEncryptionManager.setTransEncryptionLevel(1); + for (ServerDataSetBean bean : beans) { + map.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); + } + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + TransmissionEncryptionManager.removeTransEncryptionLevel(); + } for (Map.Entry entry : map.entrySet()) { TableData tableData = entry.getValue(); if (tableData instanceof RecursionTableData) { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java deleted file mode 100644 index b77f8dce27..0000000000 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/TableDataBeanHelper.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.fr.design.data.datapane.preview; - -import com.fanruan.config.impl.data.ConnectionConfigProviderFactory; -import com.fr.base.DataSetProcessors; -import com.fr.base.Parameter; -import com.fr.base.ParameterHelper; -import com.fr.base.ParameterTypeHandler; -import com.fr.base.TableData; -import com.fr.data.impl.Connection; -import com.fr.data.impl.DBTableData; -import com.fr.data.impl.NameDatabaseConnection; -import com.fr.decision.fun.UniversalServerTableDataProvider; -import com.fr.decision.privilege.TransmissionTool; -import com.fr.decision.webservice.bean.dataset.ParameterBean; -import com.fr.decision.webservice.bean.dataset.SQLDataSetBean; -import com.fr.decision.webservice.bean.dataset.ServerDataSetBean; -import com.fr.decision.webservice.v10.datasource.dataset.processor.impl.SQLDataSetProcessor; -import com.fr.design.data.DataEncryptionHelper; -import com.fr.general.GeneralUtils; -import com.fr.general.sql.SqlUtils; -import com.fr.json.JSONObject; -import com.fr.log.FineLoggerFactory; -import com.fr.script.Calculator; -import com.fr.stable.ParameterProvider; -import com.fr.stable.StringUtils; -import com.fr.workspace.server.entity.connection.ConnectionBean; -import com.fr.workspace.server.repository.connection.ConnectionRepository; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 数据集bean工具类 - * - * @author Destiny.Lin - * @since 11.0 - * Created on 2024/8/9 - */ -public class TableDataBeanHelper { - - - /** - * 根据序列化数据生成tabledata - */ - public static TableData getTableDataSet(Map connectionMap, String type, String tableDataSetData) throws Exception { - if (DataSetProcessors.getProcessors().containsKey(type)) { - if (StringUtils.equals(SQLDataSetProcessor.TYPE, type)) { - return deserialize4SQL(connectionMap, null, new JSONObject(tableDataSetData)); - } else { - UniversalServerTableDataProvider processor = DataSetProcessors.getProcessors().get(type); - return (TableData) processor.deserialize(null, new JSONObject(tableDataSetData)); - } - - } - return null; - } - - - /** - * 获取服务器数据集传输的bean - */ - public static ServerDataSetBean getServerDataSetBean(String name, TableData tableData) { - for (UniversalServerTableDataProvider processor : DataSetProcessors.getProcessors().values()) { - if (SQLDataSetProcessor.KEY.classForTableData() == tableData.getClass()) { - return serialize4SQL(name, tableData); - } else if (processor.classForTableData() == tableData.getClass()) { - ServerDataSetBean bean = new ServerDataSetBean(); - try { - bean.setDatasetData(processor.serialize(tableData).toString()); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - bean.setDatasetData(StringUtils.EMPTY); - } - bean.setDatasetName(name); - bean.setDatasetType(processor.nameForTableData()); - return bean; - } - } - return new ServerDataSetBean(name); - } - - private static ServerDataSetBean serialize4SQL(String name, TableData tableData) { - ServerDataSetBean bean = new ServerDataSetBean(); - try { - bean.setDatasetData(serialize4SQL0((DBTableData) tableData).toString()); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - bean.setDatasetData(StringUtils.EMPTY); - } - bean.setDatasetName(name); - bean.setDatasetType(SQLDataSetProcessor.KEY.nameForTableData()); - return bean; - } - - private static Object serialize4SQL0(DBTableData dataSet) { - SQLDataSetBean bean = new SQLDataSetBean(); - if (dataSet.getDatabase() instanceof NameDatabaseConnection) { - bean.setDatabase(((NameDatabaseConnection) dataSet.getDatabase()).getName()); - } - bean.setQuery(DataEncryptionHelper.encrypt(dataSet.getQuery())); - List parameterBeans = new ArrayList<>(); - ParameterProvider[] parameters = dataSet.getParameters(Calculator.createCalculator()); - for (ParameterProvider parameter : parameters) { - parameterBeans.add(new ParameterBean(parameter.getValue().getClass().getSimpleName(), parameter.getName(), GeneralUtils.objectToString(parameter.getValue()))); - } - bean.setParameters(parameterBeans); - return JSONObject.mapFrom(bean); - } - - - private static TableData deserialize4SQL(Map connectionMap, DBTableData oldDataSet, JSONObject object) { - DBTableData tableData = new DBTableData(); - SQLDataSetBean bean = object.mapTo(SQLDataSetBean.class); - tableData.setQuery(DataEncryptionHelper.decrypt(bean.getQuery())); - Connection connection = connectionMap.get(bean.getDatabase()); - if (connection != null) { - tableData.setDatabase(new NameDatabaseConnection(bean.getDatabase())); - } else { - FineLoggerFactory.getLogger().error("not find conn by {}", bean.getDatabase()); - } - String sql = SqlUtils.clearSqlComments(DataEncryptionHelper.decrypt(bean.getQuery())); - Parameter[] parameters = new Parameter[bean.getParameters().size()]; - for (int i = 0; i < parameters.length; i++) { - ParameterBean parameterBean = bean.getParameters().get(i); - parameters[i] = (Parameter) ParameterTypeHandler.getInstance().parseParameter(parameterBean, new Parameter(parameterBean.getName())); - } - tableData.setParameters(ParameterHelper.analyzeAndUnionSameParameters(new String[]{sql}, parameters)); - if (oldDataSet != null) { - tableData.setMaxMemRowCount(oldDataSet.getMaxMemRowCount()); - tableData.setPageQuerySql(oldDataSet.getPageQuerySql()); - tableData.setShare(oldDataSet.isShare()); - tableData.setDataQueryProcessor(oldDataSet.getDataQueryProcessor()); - } - return tableData; - } -} diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java index b5e1df4f26..699d4ecb3b 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java @@ -1,6 +1,5 @@ package com.fr.design.data.tabledata.wrapper; -import com.fanruan.config.impl.data.TableDataConfigProviderFactory; import com.fr.base.TableData; import com.fr.data.TableDataSource; import com.fr.data.impl.ClassTableData; @@ -14,7 +13,7 @@ import com.fr.data.impl.RecursionTableData; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.decision.webservice.bean.dataset.ServerDataSetBean; import com.fr.design.data.datapane.TableDataNameObjectCreator; -import com.fr.design.data.datapane.preview.TableDataBeanHelper; +import com.fr.workspace.server.repository.tabledata.TableDataBeanHelper; import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane; import com.fr.design.data.tabledata.tabledatapane.ClassTableDataPane; import com.fr.design.data.tabledata.tabledatapane.DBTableDataPane; @@ -28,8 +27,6 @@ import com.fr.general.ComparatorUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import com.fr.workspace.WorkContext; -import com.fr.workspace.server.authority.user.UserAuthority; import com.fr.workspace.server.entity.connection.ConnectionBean; import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository;