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

Last change on this file since 13632 was 12846, checked in by bastiK, 7 years ago

see #15229 - use Config.getPref() wherever possible

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