package railo.runtime.type.scope.storage.clean; import java.sql.SQLException; import railo.commons.io.log.Log; import railo.runtime.config.ConfigImpl; import railo.runtime.config.ConfigWeb; import railo.runtime.config.ConfigWebImpl; import railo.runtime.db.DataSource; import railo.runtime.db.DatasourceConnection; import railo.runtime.db.DatasourceConnectionPool; import railo.runtime.exp.PageException; import railo.runtime.type.scope.storage.StorageScopeEngine; import railo.runtime.type.scope.storage.StorageScopeListener; import railo.runtime.type.scope.storage.db.SQLExecutionFactory; import railo.runtime.type.scope.storage.db.SQLExecutor; public class DatasourceStorageScopeCleaner extends StorageScopeCleanerSupport { //private String strType; public DatasourceStorageScopeCleaner(int type,StorageScopeListener listener) { super(type,listener,INTERVALL_HOUR); //this.strType=VariableInterpreter.scopeInt2String(type); } public void init(StorageScopeEngine engine) { super.init(engine); } protected void _clean() { ConfigWeb config = engine.getFactory().getConfig(); DataSource[] datasources = config.getDataSources(); for(int i=0;i<datasources.length;i++){ if((datasources[i]).isStorage()) { try { clean(config,datasources[i]); } catch (Throwable t) { error(t); } } } } private void clean(ConfigWeb config, DataSource dataSource) throws PageException, SQLException { ConfigWebImpl cwi=(ConfigWebImpl) config; DatasourceConnection dc=null; DatasourceConnectionPool pool = cwi.getDatasourceConnectionPool(); try { dc=pool.getDatasourceConnection(null,dataSource,null,null); Log log=((ConfigImpl)config).getScopeLogger(); SQLExecutor executor=SQLExecutionFactory.getInstance(dc); executor.clean(config, dc, type, engine,this, listener, log); } finally { if(dc!=null) pool.releaseDatasourceConnection(dc); } } }