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}