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