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    }