1 changed files with 71 additions and 0 deletions
@ -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…
Reference in new issue