source: josm/trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java@ 7937

Last change on this file since 7937 was 7937, checked in by bastiK, 9 years ago

add subversion property svn:eol=native

  • Property svn:eol-style set to native
File size: 2.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.downloadtasks;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.IOException;
7import java.net.URISyntaxException;
8import java.net.URL;
9import java.util.concurrent.Future;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
13import org.openstreetmap.josm.data.Bounds;
14import org.openstreetmap.josm.gui.progress.ProgressMonitor;
15import org.openstreetmap.josm.tools.Utils;
16
17/**
18 * Task allowing to download JOSM session (*.jos, *.joz file).
19 * @since 6215
20 */
21public class DownloadSessionTask extends AbstractDownloadTask {
22
23 private static final String PATTERN_SESSION = "https?://.*/.*\\.jo(s|z)";
24
25 private Loader loader;
26
27 /**
28 * Constructs a new {@code DownloadSessionTask}.
29 */
30 public DownloadSessionTask() {
31 }
32
33 @Override
34 public String getTitle() {
35 return tr("Download session");
36 }
37
38 @Override
39 public String[] getPatterns() {
40 return new String[]{PATTERN_SESSION};
41 }
42
43 @Override
44 public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
45 return null;
46 }
47
48 @Override
49 public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
50 if (url != null && (url.matches(PATTERN_SESSION))) {
51 try {
52 URL u = new URL(url);
53 loader = new Loader(Utils.openURL(u), u.toURI(), url.endsWith(".joz"));
54 return Main.worker.submit(loader);
55 } catch (URISyntaxException | IOException e) {
56 Main.error(e);
57 }
58 }
59 return null;
60 }
61
62 @Override
63 public void cancel() {
64 if (loader != null) {
65 loader.cancel();
66 }
67 }
68
69 @Override
70 public String getConfirmationMessage(URL url) {
71 // TODO
72 return null;
73 }
74
75 /**
76 * Do not allow to load a session file via remotecontrol.
77 *
78 * Session importers can be added by plugins and there is currently
79 * no way to ensure that these are safe for remotecontol.
80 * @return
81 */
82 @Override
83 public boolean isSafeForRemotecontrolRequests() {
84 return Main.pref.getBoolean("remotecontrol.import.allow_session", false);
85 }
86}
Note: See TracBrowser for help on using the repository browser.