001 package railo.runtime.type.scope.storage.clean; 002 003 import java.sql.SQLException; 004 005 import railo.commons.io.log.Log; 006 import railo.runtime.config.ConfigImpl; 007 import railo.runtime.config.ConfigWeb; 008 import railo.runtime.config.ConfigWebImpl; 009 import railo.runtime.db.DataSource; 010 import railo.runtime.db.DatasourceConnection; 011 import railo.runtime.db.DatasourceConnectionPool; 012 import railo.runtime.exp.PageException; 013 import railo.runtime.type.scope.storage.StorageScopeEngine; 014 import railo.runtime.type.scope.storage.StorageScopeListener; 015 import railo.runtime.type.scope.storage.db.SQLExecutionFactory; 016 import railo.runtime.type.scope.storage.db.SQLExecutor; 017 018 public class DatasourceStorageScopeCleaner extends StorageScopeCleanerSupport { 019 020 //private String strType; 021 022 public DatasourceStorageScopeCleaner(int type,StorageScopeListener listener) { 023 super(type,listener,INTERVALL_HOUR); 024 //this.strType=VariableInterpreter.scopeInt2String(type); 025 } 026 027 public void init(StorageScopeEngine engine) { 028 super.init(engine); 029 } 030 031 protected void _clean() { 032 ConfigWeb config = engine.getFactory().getConfig(); 033 DataSource[] datasources = config.getDataSources(); 034 for(int i=0;i<datasources.length;i++){ 035 036 if((datasources[i]).isStorage()) { 037 try { 038 clean(config,datasources[i]); 039 } catch (Throwable t) { 040 error(t); 041 } 042 } 043 } 044 } 045 046 private void clean(ConfigWeb config, DataSource dataSource) throws PageException, SQLException { 047 ConfigWebImpl cwi=(ConfigWebImpl) config; 048 DatasourceConnection dc=null; 049 050 DatasourceConnectionPool pool = cwi.getDatasourceConnectionPool(); 051 try { 052 dc=pool.getDatasourceConnection(null,dataSource,null,null); 053 Log log=((ConfigImpl)config).getScopeLogger(); 054 SQLExecutor executor=SQLExecutionFactory.getInstance(dc); 055 executor.clean(config, dc, type, engine,this, listener, log); 056 } 057 finally { 058 if(dc!=null) pool.releaseDatasourceConnection(dc); 059 } 060 } 061 }