// License: GPL. For details, see LICENSE file. package poly; import java.util.concurrent.Future; import org.openstreetmap.josm.Main; import static org.openstreetmap.josm.tools.I18n.tr; import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask; import org.openstreetmap.josm.data.Bounds; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.gui.progress.ProgressMonitor; import org.openstreetmap.josm.io.OsmServerReader; import org.openstreetmap.josm.io.OsmTransferException; /** * Download task for remote control to download poly files. * * @author zverik */ public class DownloadPolyTask extends DownloadOsmTask { @Override public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) { return null; } @Override public Future<?> loadUrl(boolean new_layer, String url, ProgressMonitor progressMonitor) { downloadTask = new DownloadTask(new_layer, new ServerPolyReader(url), progressMonitor); return Main.worker.submit(downloadTask); } @Override public String[] getPatterns() { return new String[]{"https?://.*/.*\\.poly"}; } @Override public String getTitle() { return tr("Download Osmosis poly"); } public class ServerPolyReader extends OsmServerReader { private String url; public ServerPolyReader(String url) { this.url = url; } @Override public DataSet parseOsm(ProgressMonitor progressMonitor) throws OsmTransferException { try { progressMonitor.beginTask(tr("Contacting Server...", 10)); return new PolyImporter().parseDataSet(url); } catch (Exception e) { throw new OsmTransferException(e); } finally { progressMonitor.finishTask(); } } } }