source: josm/trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java@ 13612

Last change on this file since 13612 was 13352, checked in by Don-vip, 6 years ago

fix #15816 - full XZ support

  • Property svn:eol-style set to native
File size: 2.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.downloadtasks;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.util.concurrent.Future;
7
8import org.openstreetmap.josm.data.osm.DataSet;
9import org.openstreetmap.josm.gui.MainApplication;
10import org.openstreetmap.josm.gui.progress.ProgressMonitor;
11import org.openstreetmap.josm.io.Compression;
12import org.openstreetmap.josm.io.OsmServerLocationReader;
13import org.openstreetmap.josm.io.OsmTransferException;
14
15/**
16 * Task allowing to download compressed OSM-Change files (gzip, xz and bzip2)
17 * @since 5361
18 */
19public class DownloadOsmChangeCompressedTask extends DownloadOsmChangeTask {
20
21 private static final String PATTERN_COMPRESS = "https?://.*/(.*\\.osc.(gz|xz|bz2?|zip))";
22
23 @Override
24 public String[] getPatterns() {
25 return new String[]{PATTERN_COMPRESS};
26 }
27
28 @Override
29 public String getTitle() {
30 return tr("Download Compressed OSM Change");
31 }
32
33 /**
34 * Loads a given URL
35 * @param newLayer {@code true} if the data should be saved to a new layer
36 * @param url The URL as String
37 * @param progressMonitor progress monitor for user interaction
38 */
39 @Override
40 public Future<?> loadUrl(boolean newLayer, final String url, ProgressMonitor progressMonitor) {
41 downloadTask = new DownloadTask(newLayer, new OsmServerLocationReader(url), progressMonitor) {
42 @Override
43 protected DataSet parseDataSet() throws OsmTransferException {
44 ProgressMonitor subTaskMonitor = progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false);
45 return reader.parseOsmChange(subTaskMonitor, Compression.byExtension(url));
46 }
47 };
48 currentBounds = null;
49 // Extract .osc.gz/xz/bz/bz2/zip filename from URL to set the new layer name
50 extractOsmFilename(PATTERN_COMPRESS, url);
51 return MainApplication.worker.submit(downloadTask);
52 }
53}
Note: See TracBrowser for help on using the repository browser.