Browse Source

添加 'src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java'

master
gongbin 3 years ago
parent
commit
7a6905142d
  1. 71
      src/main/java/com/fr/plugin/dynamic/dbconnect/dbprovider/DynamicDbConnectDSModifyProvider.java

71
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<Object> spm = rsid.getAllSessionPara();
HashMap params = new HashMap();
Set<String> 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;
}
}
Loading…
Cancel
Save