- Timestamp:
- 2010-02-08T07:05:59+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
r2923 r2950 21 21 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 22 22 import org.openstreetmap.josm.data.osm.PrimitiveId; 23 import org.openstreetmap.josm.data.osm.Way; 23 24 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 24 25 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 25 26 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 27 import org.openstreetmap.josm.io.MultiFetchServerObjectReader; 26 28 import org.openstreetmap.josm.io.OsmServerBackreferenceReader; 29 import org.openstreetmap.josm.io.OsmServerReader; 27 30 import org.openstreetmap.josm.io.OsmTransferException; 28 31 import org.openstreetmap.josm.tools.CheckParameterUtil; … … 37 40 private boolean cancelled; 38 41 private Exception lastException; 39 private OsmServer BackreferenceReader reader;42 private OsmServerReader reader; 40 43 /** the target layer */ 41 44 private OsmDataLayer targetLayer; … … 184 187 protected void downloadParents(long id, OsmPrimitiveType type, ProgressMonitor progressMonitor) throws OsmTransferException{ 185 188 reader = new OsmServerBackreferenceReader(id, type); 186 DataSet ds = reader.parseOsm(progressMonitor );189 DataSet ds = reader.parseOsm(progressMonitor.createSubTaskMonitor(1, false)); 187 190 synchronized(this) { // avoid race condition in cancel() 188 191 reader = null; 189 192 } 190 DataSetMerger visitor = new DataSetMerger(parents, ds); 191 visitor.merge(); 193 Collection<Way> ways = ds.getWays(); 194 DataSetMerger merger; 195 if (!ways.isEmpty()) { 196 reader = new MultiFetchServerObjectReader(); 197 for (Way w: ways) { 198 ((MultiFetchServerObjectReader)reader).append(w.getNodes()); 199 } 200 DataSet wayNodes = reader.parseOsm(progressMonitor.createSubTaskMonitor(1, false)); 201 synchronized(this) { // avoid race condition in cancel() 202 reader = null; 203 } 204 merger = new DataSetMerger(ds, wayNodes); 205 merger.merge(); 206 } 207 merger = new DataSetMerger(parents, ds); 208 merger.merge(); 192 209 } 193 210 … … 207 224 } 208 225 progressMonitor.subTask(msg); 209 downloadParents(entry.getKey(), entry.getValue(), progressMonitor .createSubTaskMonitor(1, false));226 downloadParents(entry.getKey(), entry.getValue(), progressMonitor); 210 227 i++; 211 228 }
Note:
See TracChangeset
for help on using the changeset viewer.