Changeset 26909 in osm for applications/viewer


Ignore:
Timestamp:
2011-10-20T01:43:00+02:00 (13 years ago)
Author:
donvip
Message:

see #josm6109 and #josm6288 - Allow to flush Disk Tile cache

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java

    r26529 r26909  
    2020import java.net.URLConnection;
    2121import java.nio.charset.Charset;
     22import java.util.HashMap;
     23import java.util.Map;
    2224import java.util.Map.Entry;
    2325import java.util.Random;
     
    5254
    5355    protected String cacheDirBase;
     56   
     57    protected final Map<TileSource, File> sourceCacheDirMap;
    5458
    5559    protected long maxCacheFileAge = FILE_AGE_ONE_WEEK;
     
    96100        log.finest("Tile cache directory: " + cacheDir);
    97101        cacheDirBase = cacheDir.getAbsolutePath();
     102        sourceCacheDirMap = new HashMap<TileSource, File>();
    98103    }
    99104
     
    112117    }
    113118
     119    protected File getSourceCacheDir(TileSource source) {
     120        File dir = sourceCacheDirMap.get(source);
     121        if (dir == null) {
     122            dir = new File(cacheDirBase, source.getName().replaceAll("[\\\\/:*?\"<>|]", "_"));
     123            if (!dir.exists()) {
     124                dir.mkdirs();
     125            }
     126        }
     127        return dir;
     128    }
     129   
    114130    protected class FileLoadJob implements Runnable {
    115131        InputStream input = null;
     
    140156                tile.loading = true;
    141157            }
    142             tileCacheDir = new File(cacheDirBase, source.getName().replaceAll("[\\\\/:*?\"<>|]", "_"));
    143             if (!tileCacheDir.exists()) {
    144                 tileCacheDir.mkdirs();
    145             }
     158            tileCacheDir = getSourceCacheDir(source);
    146159            if (loadTileFromFile())
    147160                return;
     
    463476        this.cacheDirBase = dir.getAbsolutePath();
    464477    }
    465 
     478   
     479    public void clearCache(TileSource source) {
     480        File dir = getSourceCacheDir(source);
     481        if (dir.isDirectory()) {
     482            for (File file : dir.listFiles()) {
     483                file.delete();
     484            }
     485        }
     486        dir.delete();
     487    }
    466488}
Note: See TracChangeset for help on using the changeset viewer.