source: josm/trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java@ 4661

Last change on this file since 4661 was 4661, checked in by Don-vip, 12 years ago

fix #7135 - NPE when cancelling a download request not responding

File size: 2.8 KB
Line 
1package org.openstreetmap.josm.actions.downloadtasks;
2
3import static org.openstreetmap.josm.tools.I18n.tr;
4
5import java.util.concurrent.Future;
6
7import org.openstreetmap.josm.Main;
8import org.openstreetmap.josm.data.Bounds;
9import org.openstreetmap.josm.data.osm.DataSet;
10import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
11import org.openstreetmap.josm.gui.progress.ProgressMonitor;
12import org.openstreetmap.josm.io.OsmServerLocationReader;
13import org.openstreetmap.josm.io.OsmServerReader;
14import org.openstreetmap.josm.io.OsmTransferException;
15
16public class DownloadOsmChangeTask extends DownloadOsmTask {
17
18 @Override
19 public boolean acceptsUrl(String url) {
20 return url != null && url.matches("http://.*/api/0.6/changeset/\\p{Digit}+/download");
21 }
22
23 /* (non-Javadoc)
24 * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask#download(boolean, org.openstreetmap.josm.data.Bounds, org.openstreetmap.josm.gui.progress.ProgressMonitor)
25 */
26 @Override
27 public Future<?> download(boolean newLayer, Bounds downloadArea,
28 ProgressMonitor progressMonitor) {
29 return null;
30 }
31
32 /* (non-Javadoc)
33 * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask#loadUrl(boolean, java.lang.String, org.openstreetmap.josm.gui.progress.ProgressMonitor)
34 */
35 @Override
36 public Future<?> loadUrl(boolean new_layer, String url,
37 ProgressMonitor progressMonitor) {
38 downloadTask = new DownloadTask(new_layer,
39 new OsmServerLocationReader(url),
40 progressMonitor);
41 return Main.worker.submit(downloadTask);
42 }
43
44 protected class DownloadTask extends DownloadOsmTask.DownloadTask {
45
46 public DownloadTask(boolean newLayer, OsmServerReader reader,
47 ProgressMonitor progressMonitor) {
48 super(newLayer, reader, progressMonitor);
49 }
50
51 /* (non-Javadoc)
52 * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask.DownloadTask#parseDataSet()
53 */
54 @Override
55 protected DataSet parseDataSet() throws OsmTransferException {
56 return reader.parseOsmChange(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
57 }
58
59 /* (non-Javadoc)
60 * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask.DownloadTask#finish()
61 */
62 @Override
63 protected void finish() {
64 super.finish();
65 if (isFailed() || isCanceled() || downloadedData == null)
66 return; // user canceled download or error occurred
67 progressMonitor.subTask(tr("Updating data"));
68 UpdatePrimitivesTask task = new UpdatePrimitivesTask(targetLayer, downloadedData.allPrimitives());
69 Main.worker.submit(task);
70 }
71 }
72}
Note: See TracBrowser for help on using the repository browser.