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.BufferedWriter; 007import java.io.File; 008import java.io.FileOutputStream; 009import java.io.IOException; 010import java.io.OutputStreamWriter; 011import java.io.Writer; 012 013import org.openstreetmap.josm.actions.ExtensionFileFilter; 014import org.openstreetmap.josm.gui.layer.Layer; 015import org.openstreetmap.josm.gui.layer.OsmDataLayer; 016import org.openstreetmap.josm.tools.Utils; 017 018public class GeoJSONExporter extends FileExporter { 019 020 public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter( 021 "json,geojson", "json", tr("GeoJSON Files") + " (*.json *.geojson)"); 022 023 public GeoJSONExporter() { 024 super(FILE_FILTER); 025 } 026 027 @Override 028 public void exportData(File file, Layer layer) throws IOException { 029 if (layer instanceof OsmDataLayer) { 030 String json = new GeoJSONWriter((OsmDataLayer) layer).write(); 031 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); 032 try { 033 out.write(json); 034 } finally { 035 Utils.close(out); 036 } 037 } else { 038 throw new IllegalArgumentException(tr("Layer ''{0}'' not supported", layer.getClass().toString())); 039 } 040 } 041}