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}