Ticket #8556: import_patch.diff

File import_patch.diff, 3.7 KB (added by ben.abelshausen@…, 11 years ago)
  • src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java

    diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
    index 5874161..f67f497 100644
    a b  
    2323     */
    2424    public static final String command = "import";
    2525   
    26     private URL url;
     26    private URL url; // parameter 'url'
     27    private Boolean new_layer; // parameter 'nl'
    2728    private Collection<DownloadTask> suitableDownloadTasks;
    2829
    2930    @Override
    3031    protected void handleRequest() throws RequestHandlerErrorException {
    3132        try {
    3233            if (suitableDownloadTasks != null && !suitableDownloadTasks.isEmpty()) {
    33                 // TODO: add new_layer parameter
    3434                // TODO: handle multiple suitable download tasks ?
    35                 suitableDownloadTasks.iterator().next().loadUrl(false, url.toExternalForm(), null);
     35                suitableDownloadTasks.iterator().next().loadUrl(new_layer, url.toExternalForm(), null);
    3636            }
    3737        } catch (Exception ex) {
    3838            System.out.println("RemoteControl: Error parsing import remote control request:");
    public PermissionPrefWithDefault getPermissionPref() {  
    6969
    7070    @Override
    7171    protected void parseArgs() {
     72        String req = decodeParam(this.request);
    7273        HashMap<String, String> args = new HashMap<String, String>();
    7374        if (request.indexOf('?') != -1) {
    74             String query = request.substring(request.indexOf('?') + 1);
    75             if (query.indexOf("url=") == 0) {
    76                 args.put("url", decodeParam(query.substring(4)));
    77             } else {
    78                 int urlIdx = query.indexOf("&url=");
    79                 if (urlIdx != -1) {
    80                     /*String url =*/ query.substring(urlIdx + 1);
    81                     args.put("url", decodeParam(query.substring(urlIdx + 5)));
    82                     query = query.substring(0, urlIdx);
    83                 } else {
    84                     if (query.indexOf('#') != -1) {
    85                         query = query.substring(0, query.indexOf('#'));
    86                     }
    87                 }
    88                 String[] params = query.split("&", -1);
    89                 for (String param : params) {
    90                     int eq = param.indexOf('=');
    91                     if (eq != -1) {
    92                         args.put(param.substring(0, eq), param.substring(eq + 1));
    93                     }
    94                 }
    95             }
     75                        String query = req.substring(req.indexOf('?') + 1);
     76                        if (query.indexOf('#') != -1) {
     77                                query = query.substring(0, query.indexOf('#'));
     78                        }
     79                        String[] params = query.split("&", -1);
     80                        for (String param : params) {
     81                                int eq = param.indexOf('=');
     82                                if (eq != -1) {
     83                                        args.put(param.substring(0, eq), param.substring(eq + 1));
     84                                }
     85                        }
    9686        }
    9787        this.args = args;
    9888    }
    protected void validateRequest() throws RequestHandlerBadRequestException {  
    10696        } catch (MalformedURLException e) {
    10797            throw new RequestHandlerBadRequestException("MalformedURLException: "+e.getMessage());
    10898        }
     99               
     100                // See if there is a new-layer specified.
     101                if(args.containsKey("nl") &&
     102                        args.get("nl").equals("yes"))
     103                {
     104                        new_layer = true;
     105                }
     106                else
     107                {
     108                        new_layer = false;
     109                }
     110               
    109111        // Find download tasks for the given URL
    110112        suitableDownloadTasks = Main.main.menu.openLocation.findDownloadTasks(urlString);
    111113        if (suitableDownloadTasks.isEmpty()) {
    protected void validateRequest() throws RequestHandlerBadRequestException {  
    114116            suitableDownloadTasks.add(new DownloadOsmTask());
    115117        }
    116118    }
    117 }
    118  No newline at end of file
     119}