Ticket #11312: imagerycache_jcs_fix.patch

File imagerycache_jcs_fix.patch, 4.4 KB (added by wiktorn, 11 years ago)

Corrected patch. Now performance is OK

  • plugins/imagerycache/src/org/openstreetmap/josm/plugins/imagerycache/ImageryCachePlugin.java

     
    11package org.openstreetmap.josm.plugins.imagerycache;
    22
    33import java.io.File;
     4import java.util.Map;
     5
    46import org.openstreetmap.gui.jmapviewer.OsmTileLoader;
     7import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
    58import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
    69import org.openstreetmap.josm.gui.layer.TMSLayer;
    710import org.openstreetmap.josm.plugins.Plugin;
     
    2730            }
    2831            return null;
    2932        }
     33
     34                @Override
     35                public TileLoader makeTileLoader(TileLoaderListener listener,
     36                                Map<String, String> headers) {
     37                        return makeTileLoader(listener);
     38                }
    3039    };
    3140
    3241    public ImageryCachePlugin(PluginInformation info) {
  • plugins/imagerycache/src/org/openstreetmap/josm/plugins/imagerycache/OsmDBTilesLoader.java

     
    1515import org.openstreetmap.gui.jmapviewer.OsmTileLoader;
    1616import org.openstreetmap.gui.jmapviewer.Tile;
    1717import org.openstreetmap.gui.jmapviewer.interfaces.CachedTileLoader;
    18 import org.openstreetmap.gui.jmapviewer.interfaces.TileClearController;
    1918import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
    2019import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
    2120import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
     
    4039    protected long maxCacheFileAge = FILE_AGE_ONE_WEEK;
    4140    protected long recheckAfter = FILE_AGE_ONE_DAY;
    4241
    43 
    4442    public OsmDBTilesLoader(TileLoaderListener smap, File cacheFolder) {
    4543        super(smap);
    4644        dao = TileDAOMapDB.getInstance();
     
    5452
    5553    @Override
    5654    public void clearCache(TileSource source) {
    57         clearCache(source, null);
     55        dao.cleanStorage(source.getName());
    5856    }
    5957
    60     @Override
    61     public void clearCache(TileSource source, TileClearController controller) {
    62         dao.cleanStorage(source.getName());
    63     }
    64 
    6558    protected class DatabaseLoadJob implements TileJob {
    6659
    6760        private final Tile tile;
     
    9487                    return;
    9588                tile.initLoading();
    9689            }
    97             if (loadTileFromFile()) {
    98                 return;
    99             }
    100             if (dbTile != null) {
    101                 TileJob job = new TileJob() {
    102                     @Override public void run() {
    103                         loadOrUpdateTileFromServer();
    104                     }
    105                     @Override public Tile getTile() {
    106                         return tile;
    107                     }
    108                 };
    109                 JobDispatcher.getInstance().addJob(job);
    110             } else {
    111                 loadOrUpdateTileFromServer();
    112             }
     90
     91            TileJob job = new TileJob() {
     92                @Override public void run() {
     93                        if (loadTileFromFile()) {
     94                                return;
     95                        }
     96
     97                        loadOrUpdateTileFromServer();
     98                }
     99                @Override public Tile getTile() {
     100                        return tile;
     101                }
     102                @Override
     103                public void submit() {
     104                        run();
     105
     106                }
     107            };
     108            JobDispatcher.getInstance().addJob(job);
    113109        }
    114110
    115111        /**
     
    164160            } catch (Error e) { // this is bad, bat MapDB throws it
    165161                Main.error("Serious database error: Can not load tile from database: "+sourceName+":"+id);
    166162                Main.error(e);
    167                 dbTile = null;  fileAge = 0;  return false;
     163                dbTile = null; 
     164                fileAge = 0;
     165                return false;
    168166            }
    169167        }
    170168
     
    340338                tile.putValue(k, m.get(k));
    341339            }
    342340        }
     341
     342                @Override
     343                public void submit() {
     344                        run();
     345                       
     346                }
    343347    }
    344348}