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