001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.io.importexport;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.io.File;
007import java.io.IOException;
008import java.io.OutputStream;
009import java.nio.file.Files;
010
011import org.openstreetmap.josm.actions.ExtensionFileFilter;
012import org.openstreetmap.josm.gui.layer.Layer;
013import org.openstreetmap.josm.gui.layer.NoteLayer;
014import org.openstreetmap.josm.io.NoteWriter;
015import org.openstreetmap.josm.tools.Logging;
016
017/**
018 * Exporter to write note data to an XML file
019 */
020public class NoteExporter extends FileExporter {
021
022    /** File extension filter for .osn files */
023    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
024            "osn", "osn", tr("Note Files") + " (*.osn)");
025
026    /** Create a new note exporter with the default .osn file filter */
027    public NoteExporter() {
028        super(FILE_FILTER);
029    }
030
031    @Override
032    public boolean acceptFile(File pathname, Layer layer) {
033        if (!(layer instanceof NoteLayer))
034            return false;
035        return super.acceptFile(pathname, layer);
036    }
037
038    @Override
039    public void exportData(File file, Layer layer) throws IOException {
040        Logging.info("exporting notes to file: " + file);
041        if (layer instanceof NoteLayer) {
042            try (OutputStream os = Files.newOutputStream(file.toPath());
043                 NoteWriter writer = new NoteWriter(os)) {
044                writer.write(((NoteLayer) layer).getNoteData());
045            }
046        }
047    }
048}