Changeset 418

Show
Ignore:
Timestamp:
11/11/08 20:44:15 (2 months ago)
Author:
arneke
Message:

Decent code for truncating cache, one issue with bounding box translation remains...

Location:
trunk/geowebcache/src/main
Files:
1 added
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/geowebcache/src/main/java/org/geowebcache/cache/Cache.java

    r279 r418  
    2121 
    2222import org.geowebcache.GeoWebCacheException; 
     23import org.geowebcache.layer.SRS; 
     24import org.geowebcache.layer.TileLayer; 
     25import org.geowebcache.mime.MimeType; 
    2326import org.geowebcache.tile.Tile; 
    2427import org.springframework.context.ApplicationContextAware; 
     
    6770    throws CacheException, GeoWebCacheException; 
    6871 
     72    public void truncate(TileLayer tl, SRS srs, int zoomStart, int zoomStop,  
     73            int[][] bounds, MimeType mimeType) throws CacheException; 
     74     
    6975    public boolean remove(CacheKey keyProto, Tile tile) throws CacheException; 
    7076 
  • trunk/geowebcache/src/main/java/org/geowebcache/cache/file/FileCache.java

    r417 r418  
    3434import org.geowebcache.cache.Cache; 
    3535import org.geowebcache.cache.CacheException; 
     36import org.geowebcache.cache.CacheFilter; 
    3637import org.geowebcache.cache.CacheKey; 
     38import org.geowebcache.layer.SRS; 
     39import org.geowebcache.layer.TileLayer; 
     40import org.geowebcache.mime.MimeType; 
    3741import org.geowebcache.tile.Tile; 
    3842import org.geowebcache.util.GWCVars; 
     
    289293        context = (WebApplicationContext) arg0; 
    290294    } 
     295 
     296    public void truncate(TileLayer tl, SRS srs, int zoomStart, int zoomStop, 
     297            int[][] bounds, MimeType mimeType) throws CacheException { 
     298 
     299        String prefix = tl.getCachePrefix(); 
     300 
     301        File layerPath = new File(prefix); 
     302 
     303        if (layerPath.exists() && layerPath.canWrite()) { 
     304            FilePathKey2Filter fpk2f = new FilePathKey2Filter(srs, zoomStart, 
     305                    zoomStop, bounds, mimeType); 
     306 
     307            File[] srsZoomDirs = layerPath.listFiles(fpk2f); 
     308 
     309            for (File srsZoom : srsZoomDirs) { 
     310                File[] intermediates = srsZoom.listFiles(fpk2f); 
     311 
     312                for (File imd : intermediates) { 
     313                    File[] tiles = imd.listFiles(fpk2f); 
     314 
     315                    for (File tile : tiles) { 
     316                        tile.delete(); 
     317                    } 
     318 
     319                    String[] chk = imd.list(); 
     320                    if (chk == null || chk.length == 0) { 
     321                        imd.delete(); 
     322                    } 
     323                } 
     324 
     325                String[] chk = srsZoom.list(); 
     326                if (chk == null || chk.length == 0) { 
     327                    srsZoom.delete(); 
     328                } 
     329 
     330            } 
     331 
     332        } else { 
     333            throw new CacheException(prefix 
     334                    + " does not exist or is not writable."); 
     335        } 
     336 
     337    } 
    291338} 
  • trunk/geowebcache/src/main/java/org/geowebcache/cache/file/FilePathKey2.java

    r349 r418  
    1313 *  along with this program.  If not, see <http://www.gnu.org/licenses/>. 
    1414 *  
    15  * @author Arne Kepp, The Open Planning Project, Copyright 2007 
     15 * @author Arne Kepp, The Open Planning Project, Copyright 2008 
    1616 *   
    1717 */ 
  • trunk/geowebcache/src/main/java/org/geowebcache/rest/SeedResource.java

    r410 r418  
    212212        } 
    213213        if(type.equalsIgnoreCase("truncate")) { 
    214             return new TruncateTask(); 
     214            return new TruncateTask(rq, tl); 
    215215        } 
    216216         
  • trunk/geowebcache/src/main/java/org/geowebcache/rest/TruncateTask.java

    r384 r418  
    1717package org.geowebcache.rest; 
    1818 
     19import org.apache.commons.logging.Log; 
     20import org.apache.commons.logging.LogFactory; 
    1921import org.geowebcache.GeoWebCacheException; 
     22import org.geowebcache.cache.Cache; 
     23import org.geowebcache.layer.TileLayer; 
     24import org.geowebcache.mime.MimeType; 
     25import org.geowebcache.util.wms.BBOX; 
    2026 
    2127public class TruncateTask extends GWCTask { 
    22  
    23     @Override 
     28    private static Log log = LogFactory.getLog(org.geowebcache.rest.TruncateTask.class); 
     29     
     30    private final SeedRequest req; 
     31     
     32    private final TileLayer tl; 
     33     
     34    public TruncateTask(SeedRequest req, TileLayer tl) { 
     35        this.req = req; 
     36        this.tl = tl; 
     37    } 
     38     
    2439    void doAction() throws GeoWebCacheException { 
    25         throw new GeoWebCacheException("Truncate isn't implemented yet! Sorry :( "); 
     40         
     41        tl.isInitialized(); 
     42         
     43        Cache cache = tl.getCache(); 
     44         
     45        BBOX bbox = req.getBounds(); 
     46        int[][] bounds = null; 
     47         
     48        if(bbox != null) { 
     49            bounds = tl.getCoveredGridLevels(req.getSRS(), bbox); 
     50        } 
     51         
     52        cache.truncate(tl, req.getSRS(),  
     53                req.getZoomStart(), req.getZoomStop(),  
     54                bounds, MimeType.createFromFormat(req.getMimeFormat())); 
    2655    } 
    2756 
  • trunk/geowebcache/src/main/java/org/geowebcache/service/kml/KMLDebugGridLayer.java

    r371 r418  
    6161 
    6262    } 
    63      
    64      
    65      
     63 
    6664    private KMLDebugGridLayer() { 
    6765        super.grids = new Hashtable<SRS,Grid>(); 
     
    388386    } 
    389387 
     388 
     389    public void truncate(TileLayer tl, SRS srs, int zoomStart, int zoomStop, 
     390            int[][] bounds, MimeType mimeType) throws CacheException { 
     391        // TODO Auto-generated method stub 
     392         
     393    } 
     394 
    390395}