Changeset 15784 in josm for trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
- Timestamp:
- 2020-01-27T02:35:43+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
r14763 r15784 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.util.Arrays; 6 7 import java.util.Date; 7 8 import java.util.HashMap; … … 12 13 import java.util.concurrent.RejectedExecutionException; 13 14 import java.util.regex.Matcher; 14 import java.util.regex.Pattern;15 15 16 16 import org.openstreetmap.josm.data.Bounds; … … 34 34 import org.openstreetmap.josm.gui.history.HistoryLoadTask; 35 35 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 36 import org.openstreetmap.josm.io.Compression; 36 37 import org.openstreetmap.josm.io.OsmApi; 37 38 import org.openstreetmap.josm.io.OsmServerLocationReader; 38 39 import org.openstreetmap.josm.io.OsmServerReader; 39 40 import org.openstreetmap.josm.io.OsmTransferException; 41 import org.openstreetmap.josm.io.UrlPatterns.OsmChangeUrlPattern; 40 42 import org.openstreetmap.josm.tools.Logging; 41 43 … … 46 48 public class DownloadOsmChangeTask extends DownloadOsmTask { 47 49 48 private static final String OSM_WEBSITE_PATTERN = "https?://www\\.(osm|openstreetmap)\\.org/changeset/(\\p{Digit}+).*";49 50 50 @Override 51 51 public String[] getPatterns() { 52 return new String[]{"https?://.*/api/0.6/changeset/\\p{Digit}+/download", // OSM API 0.6 changesets 53 OSM_WEBSITE_PATTERN, // OSM changesets 54 "https?://.*/.*\\.osc" // Remote .osc files 55 }; 52 return patterns(OsmChangeUrlPattern.class); 56 53 } 57 54 … … 67 64 68 65 @Override 69 public Future<?> loadUrl(DownloadParams settings, String url, ProgressMonitor progressMonitor) { 70 final Matcher matcher = Pattern.compile(OSM_WEBSITE_PATTERN).matcher(url); 66 public Future<?> loadUrl(DownloadParams settings, final String url, ProgressMonitor progressMonitor) { 67 OsmChangeUrlPattern urlPattern = Arrays.stream(OsmChangeUrlPattern.values()).filter(p -> p.matches(url)).findFirst() 68 .orElseThrow(() -> new IllegalArgumentException("URL does not match any OSM URL pattern: " + url)); 69 String newUrl = url; 70 final Matcher matcher = OsmChangeUrlPattern.OSM_WEBSITE.matcher(url); 71 71 if (matcher.matches()) { 72 url = OsmApi.getOsmApi().getBaseUrl() + "changeset/" + Long.parseLong(matcher.group(2)) + "/download"; 73 } 74 downloadTask = new DownloadTask(settings, new OsmServerLocationReader(url), progressMonitor); 72 newUrl = OsmApi.getOsmApi().getBaseUrl() + "changeset/" + Long.parseLong(matcher.group(2)) + "/download"; 73 } 74 downloadTask = new DownloadTask(settings, new OsmServerLocationReader(newUrl), progressMonitor, true, 75 Compression.byExtension(newUrl)); 75 76 // Extract .osc filename from URL to set the new layer name 76 extractOsmFilename(settings, "https?://.*/(.*\\.osc)", url);77 extractOsmFilename(settings, urlPattern.pattern(), newUrl); 77 78 return MainApplication.worker.submit(downloadTask); 78 79 } … … 88 89 * @param reader OSM data reader 89 90 * @param progressMonitor progress monitor 91 * @param zoomAfterDownload If true, the map view will zoom to download area after download 92 * @param compression compression to use 90 93 */ 91 public DownloadTask(DownloadParams settings, OsmServerReader reader, ProgressMonitor progressMonitor) { 92 super(settings, reader, progressMonitor); 94 public DownloadTask(DownloadParams settings, OsmServerReader reader, ProgressMonitor progressMonitor, 95 boolean zoomAfterDownload, Compression compression) { 96 super(settings, reader, progressMonitor, zoomAfterDownload, compression); 93 97 } 94 98 95 99 @Override 96 100 protected DataSet parseDataSet() throws OsmTransferException { 97 return reader.parseOsmChange(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); 101 return reader.parseOsmChange(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false), 102 compression); 98 103 } 99 104
Note:
See TracChangeset
for help on using the changeset viewer.