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}