// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.actions.downloadtasks;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.concurrent.Future;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
import org.openstreetmap.josm.data.Bounds;
import org.openstreetmap.josm.gui.progress.ProgressMonitor;
import org.openstreetmap.josm.tools.Utils;
/**
* Task allowing to download JOSM session (*.jos, *.joz file).
* @since 6215
*/
public class DownloadSessionTask extends AbstractDownloadTask {
private static final String PATTERN_SESSION = "https?://.*/.*\\.jo(s|z)";
private Loader loader;
/**
* Constructs a new {@code DownloadSessionTask}.
*/
public DownloadSessionTask() {
}
@Override
public String getTitle() {
return tr("Download session");
}
@Override
public String[] getPatterns() {
return new String[]{PATTERN_SESSION};
}
@Override
public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
return null;
}
@Override
public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
if (url != null && (url.matches(PATTERN_SESSION))) {
try {
URL u = new URL(url);
loader = new Loader(Utils.openURL(u), u.toURI(), url.endsWith(".joz"));
return Main.worker.submit(loader);
} catch (URISyntaxException | IOException e) {
Main.error(e);
}
}
return null;
}
@Override
public void cancel() {
if (loader != null) {
loader.cancel();
}
}
@Override
public String getConfirmationMessage(URL url) {
// TODO
return null;
}
}