001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions.downloadtasks; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.util.concurrent.Future; 007import java.util.regex.Matcher; 008import java.util.regex.Pattern; 009 010import org.openstreetmap.josm.gui.progress.ProgressMonitor; 011 012public class DownloadNotesUrlIdTask extends DownloadNotesTask { 013 014 private static final String URL_ID_PATTERN = "https?://www\\.(osm|openstreetmap)\\.org/note/(\\p{Digit}+).*"; 015 016 @Override 017 public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) { 018 final Matcher matcher = Pattern.compile(URL_ID_PATTERN).matcher(url); 019 if (matcher.matches()) { 020 return download(Long.parseLong(matcher.group(2)), null); 021 } else { 022 throw new IllegalStateException("Failed to parse note id from " + url); 023 } 024 } 025 026 @Override 027 public String[] getPatterns() { 028 return new String[]{URL_ID_PATTERN}; 029 } 030 031 @Override 032 public String getTitle() { 033 return tr("Download OSM Note by ID"); 034 } 035}