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.io.IOException; 007import java.net.MalformedURLException; 008import java.net.URISyntaxException; 009import java.net.URL; 010import java.util.concurrent.Future; 011 012import org.openstreetmap.josm.Main; 013import org.openstreetmap.josm.actions.SessionLoadAction.Loader; 014import org.openstreetmap.josm.data.Bounds; 015import org.openstreetmap.josm.gui.progress.ProgressMonitor; 016import org.openstreetmap.josm.tools.Utils; 017 018/** 019 * Task allowing to download JOSM session (*.jos, *.joz file). 020 * @since 6215 021 */ 022public class DownloadSessionTask extends AbstractDownloadTask { 023 024 private static final String PATTERN_SESSION = "https?://.*/.*\\.jo(s|z)"; 025 026 private Loader loader; 027 028 /** 029 * Constructs a new {@code DownloadSessionTask}. 030 */ 031 public DownloadSessionTask() { 032 } 033 034 @Override 035 public String getTitle() { 036 return tr("Download session"); 037 } 038 039 @Override 040 public String[] getPatterns() { 041 return new String[]{PATTERN_SESSION}; 042 } 043 044 @Override 045 public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) { 046 return null; 047 } 048 049 @Override 050 public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) { 051 if (url != null && (url.matches(PATTERN_SESSION))) { 052 try { 053 URL u = new URL(url); 054 loader = new Loader(Utils.openURL(u), u.toURI(), url.endsWith(".joz")); 055 return Main.worker.submit(loader); 056 } catch (URISyntaxException e) { 057 e.printStackTrace(); 058 } catch (MalformedURLException e) { 059 e.printStackTrace(); 060 } catch (IOException e) { 061 e.printStackTrace(); 062 } 063 } 064 return null; 065 } 066 067 @Override 068 public void cancel() { 069 if (loader != null) { 070 loader.cancel(); 071 } 072 } 073 074 @Override 075 public String getConfirmationMessage(URL url) { 076 // TODO 077 return null; 078 } 079}