Ticket #24385: Remote_Control__export_data.patch
| File Remote_Control__export_data.patch, 6.4 KB (added by , 9 months ago) |
|---|
-
new file core/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java
Subject: [PATCH] Remote Control: export data --- IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 diff --git a/core/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java b/core/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java new file mode 100644
- + 1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.io.remotecontrol.handler; 3 4 import org.openstreetmap.josm.gui.MainApplication; 5 import org.openstreetmap.josm.gui.layer.Layer; 6 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 7 import org.openstreetmap.josm.io.OsmWriter; 8 import org.openstreetmap.josm.io.OsmWriterFactory; 9 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault; 10 11 import java.io.*; 12 13 import static org.openstreetmap.josm.tools.I18n.tr; 14 15 /** 16 * Export map data into .osm format 17 * For instance, {@code /export]}. 18 */ 19 public class ExportHandler extends RequestHandler { 20 21 /** 22 * The remote control command name used to export data from JOSM. 23 */ 24 public static final String command = "export"; 25 26 @Override 27 public String[] getMandatoryParams() { 28 return new String[]{}; 29 } 30 31 @Override 32 public String[] getOptionalParams() { 33 return new String[] {}; 34 } 35 36 @Override 37 public String getUsage() { 38 return "export data from JOSM"; 39 } 40 41 @Override 42 public String[] getUsageExamples() { 43 return new String[] {"/export"}; 44 } 45 46 @Override 47 protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException { 48 Layer layer = MainApplication.getLayerManager().getActiveLayer(); 49 if (!(layer instanceof OsmDataLayer)) { 50 content = ""; 51 return; 52 } 53 OsmDataLayer osmLayer = (OsmDataLayer) layer; 54 StringWriter sw = new StringWriter(); 55 OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(sw), false, osmLayer.data.getVersion()); 56 osmLayer.data.getReadLock().lock(); 57 try { 58 w.write(osmLayer.data); 59 } finally { 60 osmLayer.data.getReadLock().unlock(); 61 } 62 contentType = "application/xml"; 63 content = sw.toString(); 64 } 65 66 @Override 67 public String getPermissionMessage() { 68 return tr("Remote Control has been asked to export data from JOSM"); 69 } 70 71 @Override 72 public PermissionPrefWithDefault getPermissionPref() { 73 return PermissionPrefWithDefault.EXPORT_DATA; 74 } 75 76 @Override 77 protected void validateRequest() throws RequestHandlerBadRequestException {} 78 } -
core/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java
IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 diff --git a/core/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java b/core/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java
a b 26 26 /** Import data from URL */ 27 27 public static final PermissionPrefWithDefault IMPORT_DATA = 28 28 new PermissionPrefWithDefault("remotecontrol.permission.import", true, tr("Import data from URL")); 29 /** Export data from JOSM */ 30 public static final PermissionPrefWithDefault EXPORT_DATA = 31 new PermissionPrefWithDefault("remotecontrol.permission.export", false, tr("Export data from JOSM")); 29 32 /** Open local files */ 30 33 public static final PermissionPrefWithDefault OPEN_FILES = 31 34 new PermissionPrefWithDefault("remotecontrol.permission.open-files", false, tr("Open local files")); -
core/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 diff --git a/core/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java b/core/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
a b 37 37 import org.openstreetmap.josm.io.remotecontrol.handler.FeaturesHandler; 38 38 import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler; 39 39 import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler; 40 import org.openstreetmap.josm.io.remotecontrol.handler.ExportHandler; 40 41 import org.openstreetmap.josm.io.remotecontrol.handler.LoadAndZoomHandler; 41 42 import org.openstreetmap.josm.io.remotecontrol.handler.LoadDataHandler; 42 43 import org.openstreetmap.josm.io.remotecontrol.handler.LoadObjectHandler; … … 172 173 addRequestHandlerClass(LoadObjectHandler.command, LoadObjectHandler.class, true); 173 174 addRequestHandlerClass(LoadDataHandler.command, LoadDataHandler.class, true); 174 175 addRequestHandlerClass(ImportHandler.command, ImportHandler.class, true); 176 addRequestHandlerClass(ExportHandler.command, ExportHandler.class, true); 175 177 addRequestHandlerClass(OpenFileHandler.command, OpenFileHandler.class, true); 176 178 PermissionPrefWithDefault.addPermissionPref(PermissionPrefWithDefault.ALLOW_WEB_RESOURCES); 177 179 addRequestHandlerClass(ImageryHandler.command, ImageryHandler.class, true); … … 332 334 handler.setSender(sender); 333 335 handler.handle(); 334 336 sendHeader(out, "200 OK", handler.getContentType(), false); 335 out.write("Content-length: " + handler.getContent(). length()337 out.write("Content-length: " + handler.getContent().getBytes().length 336 338 + "\r\n"); 337 339 out.write("\r\n"); 338 340 out.write(handler.getContent());
