/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wcs.response;
import java.io.File;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.platform.resource.Resource;
import org.geoserver.platform.resource.Resource.Type;
import org.geotools.util.logging.Logging;
/**
* Cleans up the contents of ${GEOSERVER_DATA_DIR}/temp/wcs, by removing all files that
* have been in the temp folder for too long
* @author Andrea Aime - TOPP
*
*/
public class WCSStorageCleaner extends TimerTask {
Logger LOGGER = Logging.getLogger(WCSStorageCleaner.class);
long expirationDelay;
@Override
public void run() {
try {
// first check that temp/wcs is really there in the data dir
GeoServerResourceLoader loader = GeoServerExtensions.bean(GeoServerResourceLoader.class);
Resource wcs = loader.get("temp/wcs");
if( wcs.getType() != Type.DIRECTORY ){
return; // nothing to cleanup
}
// ok, now scan for existing files there and clean up those that are too old
long now = System.currentTimeMillis();
for(Resource f : wcs.list()) {
if(now - f.lastmodified() > (expirationDelay * 1000)){
f.delete();
}
}
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Error occurred while trying to clean up "
+ "old coverages from temp storage", e);
}
}
/**
* The file expiration delay in seconds, a file will be deleted when
* it's been around more than expirationDelay
*
*
*/
public long getExpirationDelay() {
return expirationDelay;
}
public void setExpirationDelay(long expirationDelay) {
this.expirationDelay = expirationDelay;
}
}