From 7a6905142dd43e58dbe04459547654793b4a6df2 Mon Sep 17 00:00:00 2001 From: gongbin <47426305@qq.com> Date: Mon, 1 Aug 2022 22:09:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20'src/main/java/com/fr/plug?= =?UTF-8?q?in/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvide?= =?UTF-8?q?r.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DynamicDbConnectDSModifyProvider.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java diff --git a/src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java b/src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java new file mode 100644 index 0000000..0286d3f --- /dev/null +++ b/src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java @@ -0,0 +1,71 @@ +package com.fr.plugin.dynamic.dbconnect.dbprovider; + +import com.fr.base.TableData; +import com.fr.data.impl.Connection; +import com.fr.data.impl.DBTableData; +import com.fr.data.impl.MemCachedDBDataModel; +import com.fr.data.impl.NameDatabaseConnection; +import com.fr.general.data.DataModel; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.dynamic.dbconnect.manager.ConnectManager; +import com.fr.script.Calculator; +import com.fr.stable.StringUtils; +import com.fr.stable.fun.impl.AbstractDSModifyProvider; +import com.fr.stable.web.SessionProvider; +import com.fr.web.core.ReportSessionIDInfor; +import com.fr.web.core.SessionParaMap; +import com.fr.web.core.SessionPoolManager; + +import java.util.HashMap; +import java.util.Set; + +public class DynamicDbConnectDSModifyProvider extends AbstractDSModifyProvider { + public boolean accept(TableData var1, Calculator var2, DataModel var3) { + return true; + } + + public DataModel modify(TableData var1, Calculator var2, DataModel var3) { + if(var1 instanceof DBTableData){ + SessionProvider sp = SessionPoolManager.getContextSession(); + ReportSessionIDInfor rsid = (ReportSessionIDInfor)sp; + if(rsid != null){ + SessionParaMap spm = rsid.getAllSessionPara(); + HashMap params = new HashMap(); + Set keyset = spm.keySet(); + for(String key : keyset){ + params.put(key.toLowerCase(),spm.get(key).toString()); + } + String newConnectName = ConnectManager.getNewConnectName(params); + FineLoggerFactory.getLogger().info("newConnName:"+newConnectName); + if(StringUtils.isNotEmpty(newConnectName)){ + DBTableData dbtabledata = (DBTableData)var1; + Connection conn = dbtabledata.getDatabase(); + if(conn instanceof NameDatabaseConnection){ + NameDatabaseConnection nameConn = (NameDatabaseConnection)conn; + String connName = nameConn.getName(); + FineLoggerFactory.getLogger().info("connName:"+connName); + if(newConnectName.equals(connName) == false){ + String sql = var2.getAttributeAsString(DynamicDbConnectTableDataProvider.sqlKey); + NameDatabaseConnection nameDatabaseConnection = new NameDatabaseConnection(newConnectName); + try{ + nameDatabaseConnection.createConnection(); + dbtabledata.setDatabase(nameDatabaseConnection); + MemCachedDBDataModel model = new MemCachedDBDataModel(dbtabledata.getDatabase(),sql); + return model; + } + catch(Exception ex){ + ex.printStackTrace(); + } + } + + } + + + } + } + + } + return var3; + } +} +