001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.io; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.io.File; 007import java.io.IOException; 008import java.io.Writer; 009import java.nio.charset.StandardCharsets; 010import java.nio.file.Files; 011 012import org.openstreetmap.josm.actions.ExtensionFileFilter; 013import org.openstreetmap.josm.gui.layer.Layer; 014import org.openstreetmap.josm.gui.layer.OsmDataLayer; 015 016public class GeoJSONExporter extends FileExporter { 017 018 public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter( 019 "geojson,json", "geojson", tr("GeoJSON Files") + " (*.geojson *.json)"); 020 021 /** 022 * Constructs a new {@code GeoJSONExporter}. 023 */ 024 public GeoJSONExporter() { 025 super(FILE_FILTER); 026 } 027 028 @Override 029 public void exportData(File file, Layer layer) throws IOException { 030 if (layer instanceof OsmDataLayer) { 031 String json = new GeoJSONWriter((OsmDataLayer) layer).write(); 032 try (Writer out = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8)) { 033 out.write(json); 034 } 035 } else { 036 throw new IllegalArgumentException(tr("Layer ''{0}'' not supported", layer.getClass().toString())); 037 } 038 } 039}