From e63d239c88aee423b914d58183b18861ce4baac1 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 21 Oct 2024 10:10:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?REPORT-137543=20=E3=80=90fr-fbp=E5=86=92?= =?UTF-8?q?=E7=83=9F=E3=80=91=E3=80=90=E6=95=B0=E6=8D=AE=E6=BA=90=E3=80=91?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=95=B0=E6=8D=AE=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=20=E9=87=8D=E5=91=BD=E5=90=8D=E5=88=A4=E6=96=AD=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/LocalConnectionSource.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java index 4b91320829..8dc3e2f2d2 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/LocalConnectionSource.java @@ -1,7 +1,10 @@ package com.fr.design.data.datapane.connect; import com.fanruan.config.impl.data.ConnectionConfigProviderFactory; +import com.fanruan.datasource.driver.bean.DriverLoaderBean; import com.fr.data.driver.DriverClassNotFoundException; +import com.fr.data.driver.DriverLoader; +import com.fr.data.driver.config.DriverLoaderConfig; import com.fr.data.impl.Connection; import com.fr.decision.webservice.bean.datasource.ConnectionInfoBean; import com.fr.decision.webservice.exception.general.DriverNotFoundException; @@ -9,13 +12,15 @@ import com.fr.decision.webservice.v10.datasource.connection.processor.impl.Conne import com.fr.design.data.datapane.preview.ConnectionInfoBeanHelper; import com.fr.design.i18n.Toolkit; import com.fr.log.FineLoggerFactory; -import com.fr.security.encryption.transmission.TransmissionEncryptionManager; import com.fr.workspace.engine.exception.DriverUnExistException; import com.fr.workspace.server.repository.connection.BaseConnectionSource; + import java.sql.SQLException; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 本地Connection资源操作 @@ -98,6 +103,26 @@ public class LocalConnectionSource extends BaseConnectionSource { } + + @Override + public Map getDriverLoaders() throws Exception { + return DriverLoaderConfig.getInstance().getDriverLoaders().entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getKey, entry -> convertDriverLoader(entry.getValue()), (a, b) -> a, LinkedHashMap::new)); + } + + private DriverLoaderBean convertDriverLoader(DriverLoader driverLoader) { + if (driverLoader == null) { + return null; + } + DriverLoaderBean driverLoaderBean = new DriverLoaderBean(); + driverLoaderBean.setName(driverLoader.getName()); + driverLoaderBean.setDriverClass(driverLoader.getDriverClass()); + driverLoaderBean.setDriverList(driverLoader.getDriverList()); + driverLoaderBean.setDriverJarFiles(driverLoader.getDriverJarFiles()); + driverLoaderBean.setLoadingStrategy(driverLoader.getLoadingStrategy()); + return driverLoaderBean; + } + @Override public boolean lock(String str) { // 本地默认锁定成功,让其执行后续动作 From af3e1586b25fbe3cc5871fbb970c2152ea4d49ef Mon Sep 17 00:00:00 2001 From: Anner Date: Mon, 21 Oct 2024 12:01:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?REPORT-130954=20fix:=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E5=B1=8F=E8=94=BD=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adaptation/DesignServerSupportModule.java | 62 +++++++++++++++++++ .../adaptation/ReportAdaptationComponent.java | 5 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 designer-realize/src/main/java/com/fanruan/boot/adaptation/DesignServerSupportModule.java diff --git a/designer-realize/src/main/java/com/fanruan/boot/adaptation/DesignServerSupportModule.java b/designer-realize/src/main/java/com/fanruan/boot/adaptation/DesignServerSupportModule.java new file mode 100644 index 0000000000..df486b1d72 --- /dev/null +++ b/designer-realize/src/main/java/com/fanruan/boot/adaptation/DesignServerSupportModule.java @@ -0,0 +1,62 @@ +package com.fanruan.boot.adaptation; + +import com.fanruan.portal.module.PortalModuleManager; +import com.fr.third.guava.collect.Sets; + +import java.util.Optional; +import java.util.Set; + +import static com.fanruan.portal.authority.PortalAuthorityItems.ENTERPRISE_GENERAL_ID; +import static com.fanruan.portal.authority.PortalAuthorityItems.ENTERPRISE_ID; +import static com.fanruan.portal.authority.PortalAuthorityItems.MAP_ID; +import static com.fanruan.portal.authority.PortalAuthorityItems.PORTAL_MANAGEMENT_ID; +import static com.fanruan.portal.authority.PortalAuthorityItems.SECURITY_ID; + +/** + * 内置服务器支持展示的模块,预期调用顺序在业务模块之后 + * + * @author Anner + * @since 11.0 + * Created on 2024/10/15 + */ +public class DesignServerSupportModule { + private final static Set SUPPORT_MODULE = Sets.newHashSet( + // 系统管理 + PORTAL_MANAGEMENT_ID, + // 企业设置 + ENTERPRISE_ID, + // 企业设置 - 通用设置 + ENTERPRISE_GENERAL_ID, + // 安全管理 + SECURITY_ID, + // 地图管理 + MAP_ID + ); + + /** + * 注册一下支持展示的模块 + * + * @param moduleName name + */ + public static void register(String moduleName) { + Optional.of(moduleName).ifPresent(SUPPORT_MODULE::add); + } + + /** + * 取消注册展示的模块 + * + * @param moduleName name + */ + public static void unregister(String moduleName) { + Optional.of(moduleName).ifPresent(SUPPORT_MODULE::remove); + } + + /** + * 启动入口,重建一下展示的module + */ + public static void rebuild() { + PortalModuleManager.allModules().keySet().stream() + .filter(m -> !SUPPORT_MODULE.contains(m)) + .forEach(PortalModuleManager::unregister); + } +} diff --git a/designer-realize/src/main/java/com/fanruan/boot/adaptation/ReportAdaptationComponent.java b/designer-realize/src/main/java/com/fanruan/boot/adaptation/ReportAdaptationComponent.java index d09e3db108..7a1a90af3d 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/adaptation/ReportAdaptationComponent.java +++ b/designer-realize/src/main/java/com/fanruan/boot/adaptation/ReportAdaptationComponent.java @@ -1,6 +1,7 @@ package com.fanruan.boot.adaptation; import com.fanruan.carina.Carina; +import com.fanruan.carina.annotions.DependsOn; import com.fanruan.carina.annotions.FineComponent; import com.fanruan.carina.annotions.Start; import com.fanruan.plugins.resource.PluginResourceHelper; @@ -57,8 +58,8 @@ import java.util.TreeSet; * Created on 2024/6/24 */ @FineComponent(name = "fine_report_adaptation") +@DependsOn(dependencies = {"fine_report"}) public class ReportAdaptationComponent { - /** * 启动 */ @@ -74,6 +75,8 @@ public class ReportAdaptationComponent { // 插件controller注册 PluginControllerManager.getInstance().init(); + // 过滤掉内置服务器不支持的模块 + DesignServerSupportModule.rebuild(); } private void listenEmbedServletFilter(ServletContext servletContext) { From 5d0c6c1305dfc738b6bd031f54957f0692fb2283 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 21 Oct 2024 16:07:12 +0800 Subject: [PATCH 3/3] =?UTF-8?q?REPORT-137542=20-=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E4=B8=8B=E9=95=BF=E6=97=B6=E9=97=B4=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=90=8E=E5=88=87=E6=8D=A2=E6=A8=A1=E6=9D=BF=E5=8D=A1?= =?UTF-8?q?=E6=85=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/server/GlobalTableDataAction.java | 5 +- .../data/datapane/TreeTableDataComboBox.java | 3 +- .../connect/ConnectionComboBoxPanel.java | 6 +- .../datapane/connect/ConnectionListPane.java | 4 +- .../preview/ConnectionInfoBeanHelper.java | 73 ++++++++++++++----- .../datapane/preview/TableDataBeanHelper.java | 5 +- .../tabledata/wrapper/TableDataFactory.java | 5 +- 7 files changed, 64 insertions(+), 37 deletions(-) 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 138ab32295..b9f8ba5949 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 @@ -24,11 +24,8 @@ import com.fr.design.menu.MenuKeySet; import com.fr.esd.event.DSMapping; import com.fr.esd.event.DsNameTarget; import com.fr.esd.event.StrategyEventsNotifier; - import com.fr.log.FineLoggerFactory; import com.fr.report.LockItem; -import com.fr.security.encryption.transmission.TransmissionEncryptionManager; -import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository; import javax.swing.KeyStroke; @@ -85,7 +82,7 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS // 锁定成功,执行后续操作 final DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); final List beans = TableDataRepository.getInstance().getAllTableData(); - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); final Map tableDataMap = new HashMap<>(); for (ServerDataSetBean bean : beans) { try { 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 8954d12593..c80f756af3 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 @@ -14,7 +14,6 @@ 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.stable.StringUtils; -import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository; import javax.swing.*; @@ -70,7 +69,7 @@ public class TreeTableDataComboBox extends UIComboBox { // 全局数据集 List beans = TableDataRepository.getInstance().getAllTableData(); Map map = new HashMap<>(); - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); try { for (ServerDataSetBean bean : beans) { map.put(bean.getDatasetName() , TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index 2376872a0f..9d4774b7de 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -1,8 +1,6 @@ package com.fr.design.data.datapane.connect; -import com.fanruan.config.impl.data.ConnectionConfigProviderFactory; import com.fine.theme.icon.LazyIcon; -import com.fr.base.svg.IconUtils; import com.fr.data.impl.AbstractDatabaseConnection; import com.fr.data.impl.Connection; import com.fr.data.impl.NameDatabaseConnection; @@ -15,9 +13,7 @@ import com.fr.design.gui.ibutton.UILockButton; import com.fr.report.LockItem; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; -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.SwingUtilities; import java.awt.Dimension; @@ -91,7 +87,7 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { if (noAuthConnections == null) { return nameList.iterator(); } - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); for (Map.Entry connectionEntry : connectionMap.entrySet()) { String conName = connectionEntry.getKey(); if (noAuthConnections.contains(conName)) { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java index d1acf83474..93780213d5 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java @@ -207,7 +207,7 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh public void populate(Map connectionMap) { List nameObjectList = new ArrayList(); populatedConnectionsSnapshot.clear(); - final Map map = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map map = ConnectionInfoBeanHelper.getCurrentConnectionMap(); for (Map.Entry entry : map.entrySet()) { nameObjectList.add(new NameObject(entry.getKey(), entry.getValue())); try { @@ -369,7 +369,7 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh public static void showDialog(Window parent) { try { - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); final ConnectionManagerPane connectionManagerPane = new ConnectionManagerPane() { @Override public void complete() { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java index 0aa05737ed..b1adba8b09 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/ConnectionInfoBeanHelper.java @@ -22,20 +22,30 @@ import com.fr.decision.webservice.bean.datasource.JDBCConnectionBean; import com.fr.decision.webservice.utils.DecisionServiceConstants; import com.fr.decision.webservice.v10.datasource.connection.processor.impl.ConnectionProcessorFactory; import com.fr.decision.webservice.v10.datasource.connection.processor.impl.JDBCConnectionProcessor; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.event.Null; import com.fr.log.FineLoggerFactory; import com.fr.module.tool.ActivatorToolBox; import com.fr.security.encryption.transmission.TransmissionEncryptionManager; import com.fr.stable.Constants; import com.fr.stable.StringUtils; import com.fr.third.fasterxml.jackson.databind.ObjectMapper; +import com.fr.third.guava.cache.CacheBuilder; +import com.fr.third.guava.cache.CacheLoader; +import com.fr.third.guava.cache.LoadingCache; import com.fr.third.springframework.beans.BeanUtils; import com.fr.workspace.server.repository.WorkplaceConstants; +import com.fr.workspace.server.repository.connection.ConnectionCacheEvent; import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.DataEncryptionHelper; import java.util.HashMap; import java.util.Map; import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; /** * 数据连接传输工具类 @@ -50,19 +60,38 @@ public class ConnectionInfoBeanHelper { private static final int ORACLE_DEFAULT_FETCH_SIZE = 128; private static final int DB2_DEFAULT_FETCH_SIZE = 50; private static final int POSTGRE_DEFAULT_FETCH_SIZE = 10000; + public static final int CACHE_MAX_SIZE = 1; + public static final String VALUE = "value"; + private static LoadingCache> cache = CacheBuilder.newBuilder() + // 缓存容量1 + .maximumSize(CACHE_MAX_SIZE) + // 默认写入过60S后过期 + .expireAfterWrite(60, TimeUnit.SECONDS) + .build(new CacheLoader>() { + @Override + public Map load(String s) throws Exception { + return updateCache(); + } + }); + static { FETCH_SIZE_MAP.put("oracle", ORACLE_DEFAULT_FETCH_SIZE); FETCH_SIZE_MAP.put("ibm-db2", DB2_DEFAULT_FETCH_SIZE); FETCH_SIZE_MAP.put("postgresql", POSTGRE_DEFAULT_FETCH_SIZE); + // 监听数据连接缓存失效 + EventDispatcher.listen(ConnectionCacheEvent.REMOVE, new Listener() { + @Override + public void on(Event event, Null aNull) { + cache.invalidateAll(); + } + }); } - /** - * 获取连接Map - */ - public static Map createConnectionMap(ConnectionInfoBean[] beans) { + private static Map updateCache() { Map ans = new HashMap<>(); + ConnectionInfoBean[] beans = ConnectionRepository.getInstance().getAll(); for (ConnectionInfoBean infoBean : beans) { try { if (JDBCConnectionProcessor.KEY.acceptConnectionTypes().contains(infoBean.getConnectionType())) { @@ -77,23 +106,33 @@ public class ConnectionInfoBeanHelper { return ans; } + + + + /** + * 获取连接Map + */ + public static Map getCurrentConnectionMap() { + try { + return cache.get(VALUE); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } + } + /** * 根据bean创建连接 */ public static Connection createConnection(ConnectionInfoBean infoBean) { - Connection connection = null; - try { - if (JDBCConnectionProcessor.KEY.acceptConnectionTypes().contains(infoBean.getConnectionType())) { - connection = createJDBCConnection(infoBean); - } else { - connection = ConnectionProcessorFactory.createConnection(infoBean, true); - } - connection.setConnectionName(infoBean.getConnectionName()); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - return connection; - } - return connection; + try { + Connection connection = cache.get(VALUE).get(infoBean.getConnectionName()); + if (connection != null) { + connection.setConnectionName(infoBean.getConnectionName()); + } + return connection; + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } /** 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 index a5309a8ce0..6884df268d 100644 --- 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 @@ -25,13 +25,10 @@ import com.fr.general.sql.SqlUtils; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.script.Calculator; -import com.fr.security.encryption.transmission.TransmissionEncryptionManager; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; -import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.DataEncryptionHelper; import com.fr.workspace.server.repository.tabledata.TableDataRepository; -import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.HashMap; @@ -52,7 +49,7 @@ public class TableDataBeanHelper { */ public static Map getServerTableDatas() { final List beans = TableDataRepository.getInstance().getAllTableData(); - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); final Map tableDataMap = new HashMap<>(); try { for (ServerDataSetBean bean : beans) { 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 5cd4893572..96441bb326 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 @@ -31,7 +31,6 @@ import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import com.fr.workspace.server.repository.connection.ConnectionRepository; import com.fr.workspace.server.repository.tabledata.TableDataRepository; import javax.swing.Icon; @@ -205,7 +204,7 @@ public abstract class TableDataFactory { clearAll(); try { List beans = TableDataRepository.getInstance().getAllTableData(); - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); Map tableDataMap = new HashMap<>(); for (ServerDataSetBean bean : beans) { tableDataMap.put(bean.getDatasetName(), TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); @@ -229,7 +228,7 @@ public abstract class TableDataFactory { Map tableDataMap = new HashMap<>(); try { List beans = TableDataRepository.getInstance().getAllTableData(); - final Map connectionMap = ConnectionInfoBeanHelper.createConnectionMap(ConnectionRepository.getInstance().getAll()); + final Map connectionMap = ConnectionInfoBeanHelper.getCurrentConnectionMap(); for (ServerDataSetBean bean : beans) { tableDataMap.put(bean.getDatasetName(), TableDataBeanHelper.getTableDataSet(connectionMap, bean.getDatasetType(), bean.getDatasetData())); }