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.FileOutputStream;
008import java.io.IOException;
009import java.io.OutputStream;
010
011import org.openstreetmap.josm.Main;
012import org.openstreetmap.josm.actions.ExtensionFileFilter;
013import org.openstreetmap.josm.gui.layer.Layer;
014import org.openstreetmap.josm.gui.layer.NoteLayer;
015
016/**
017 * Exporter to write note data to an XML file
018 */
019public class NoteExporter extends FileExporter {
020
021    /** File extension filter for .osn files */
022    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
023            "osn", "osn", tr("Note Files") + " (*.osn)");
024
025    /** Create a new note exporter with the default .osn file filter */
026    public NoteExporter() {
027        super(FILE_FILTER);
028    }
029
030    @Override
031    public boolean acceptFile(File pathname, Layer layer) {
032        if (!(layer instanceof NoteLayer))
033            return false;
034        return super.acceptFile(pathname, layer);
035    }
036
037    @Override
038    public void exportData(File file, Layer layer) throws IOException {
039        Main.info("exporting notes to file: " + file);
040        if (layer instanceof NoteLayer) {
041            OutputStream os = new FileOutputStream(file);
042            NoteWriter writer = new NoteWriter(os);
043            writer.write(((NoteLayer) layer).getNoteData());
044            os.flush();
045            writer.close();
046        }
047    }
048}