source: josm/trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java@ 5095

Last change on this file since 5095 was 5085, checked in by simon04, 12 years ago

fix #5824 - remotecontrol: add command for opening local files + refactoring of permission preference

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.remotecontrol.handler;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.UnsupportedEncodingException;
7import java.net.URLDecoder;
8import java.util.HashMap;
9
10import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
11import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
12import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
13
14/**
15 * Handler for import request
16 */
17public class ImportHandler extends RequestHandler {
18
19 public static final String command = "import";
20
21 @Override
22 protected void handleRequest() throws RequestHandlerErrorException {
23 try {
24 DownloadTask osmTask = new DownloadOsmTask();
25 osmTask.loadUrl(false, args.get("url"), null);
26 } catch (Exception ex) {
27 System.out.println("RemoteControl: Error parsing import remote control request:");
28 ex.printStackTrace();
29 throw new RequestHandlerErrorException();
30 }
31 }
32
33 @Override
34 public String[] getMandatoryParams() {
35 return new String[]{"url"};
36 }
37
38 @Override
39 public String getPermissionMessage() {
40 return tr("Remote Control has been asked to import data from the following URL:")
41 + "<br>" + request;
42 }
43
44 @Override
45 public PermissionPrefWithDefault getPermissionPref() {
46 return PermissionPrefWithDefault.IMPORT_DATA;
47 }
48
49 @Override
50 protected void parseArgs() {
51 HashMap<String, String> args = new HashMap<String, String>();
52 if (request.indexOf('?') != -1) {
53 String query = request.substring(request.indexOf('?') + 1);
54 if (query.indexOf("url=") == 0) {
55 args.put("url", decodeURL(query.substring(4)));
56 } else {
57 int urlIdx = query.indexOf("&url=");
58 if (urlIdx != -1) {
59 String url = query.substring(urlIdx + 1);
60 args.put("url", decodeURL(query.substring(urlIdx + 5)));
61 query = query.substring(0, urlIdx);
62 } else {
63 if (query.indexOf('#') != -1) {
64 query = query.substring(0, query.indexOf('#'));
65 }
66 }
67 String[] params = query.split("&", -1);
68 for (String param : params) {
69 int eq = param.indexOf('=');
70 if (eq != -1) {
71 args.put(param.substring(0, eq), param.substring(eq + 1));
72 }
73 }
74 }
75 }
76 this.args = args;
77 }
78
79 private String decodeURL(String url) {
80 try {
81 return URLDecoder.decode(url, "UTF-8");
82 } catch (UnsupportedEncodingException e) {
83 throw new RuntimeException();
84 }
85 }
86}
Note: See TracBrowser for help on using the repository browser.