Ignore:
Timestamp:
2010-12-27T19:40:35+01:00 (13 years ago)
Author:
jttt
Message:

Make sure wms layer will not try to download the same area twice

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/imagery/WMSGrabber.java

    r3720 r3747  
    2727import org.openstreetmap.josm.data.coor.EastNorth;
    2828import org.openstreetmap.josm.data.coor.LatLon;
     29import org.openstreetmap.josm.data.imagery.GeorefImage.State;
    2930import org.openstreetmap.josm.data.imagery.ImageryInfo;
    30 import org.openstreetmap.josm.data.imagery.GeorefImage.State;
    3131import org.openstreetmap.josm.data.projection.Mercator;
    3232import org.openstreetmap.josm.gui.MapView;
    3333import org.openstreetmap.josm.gui.layer.WMSLayer;
    34 import org.openstreetmap.josm.io.CacheFiles;
    3534import org.openstreetmap.josm.io.OsmTransferException;
    3635import org.openstreetmap.josm.io.ProgressInputStream;
     
    4241    private final boolean urlWithPatterns;
    4342
    44     public WMSGrabber(MapView mv, WMSLayer layer, CacheFiles cache) {
    45         super(mv, layer, cache);
     43    public WMSGrabber(MapView mv, WMSLayer layer) {
     44        super(mv, layer);
    4645        this.baseURL = layer.getInfo().getURL();
    4746        /* URL containing placeholders? */
     
    5049
    5150    @Override
    52     void fetch(WMSRequest request) throws Exception{
     51    void fetch(WMSRequest request, int attempt) throws Exception{
    5352        URL url = null;
    5453        try {
     
    5756                    b.max.east(), b.max.north(),
    5857                    width(), height());
    59             request.finish(State.IMAGE, grab(url));
     58            request.finish(State.IMAGE, grab(url, attempt));
    6059
    6160        } catch(Exception e) {
     
    165164    }
    166165
    167     protected BufferedImage grab(URL url) throws IOException, OsmTransferException {
    168         System.out.println("Grabbing WMS " + url);
     166    protected BufferedImage grab(URL url, int attempt) throws IOException, OsmTransferException {
     167        System.out.println("Grabbing WMS " + (attempt > 1? "(attempt " + attempt + ") ":"") + url);
    169168
    170169        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
     
    193192        InputStream in = conn.getInputStream();
    194193        BufferedReader br = new BufferedReader(new InputStreamReader(in));
    195 
    196         String line = null;
    197         while( (line = br.readLine()) != null) {
    198             // filter non-ASCII characters and control characters
    199             exception.append(line.replaceAll("[^\\p{Print}]", ""));
    200             exception.append('\n');
    201         }
    202         return exception.toString();
     194        try {
     195            String line = null;
     196            while( (line = br.readLine()) != null) {
     197                // filter non-ASCII characters and control characters
     198                exception.append(line.replaceAll("[^\\p{Print}]", ""));
     199                exception.append('\n');
     200            }
     201            return exception.toString();
     202        } finally {
     203            br.close();
     204        }
    203205    }
    204206}
Note: See TracChangeset for help on using the changeset viewer.