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

Last change on this file since 5680 was 5680, checked in by Don-vip, 11 years ago

fix #8148 - Improve remote control handlers (requests validation, display of confirmation messages, robustness, javadoc)

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