Ticket #10514: noteImporter.patch

File noteImporter.patch, 3.5 KB (added by ToeBee, 11 years ago)
  • src/org/openstreetmap/josm/actions/ExtensionFileFilter.java

     
    5252                "org.openstreetmap.josm.io.OsmChangeImporter",
    5353                "org.openstreetmap.josm.io.GpxImporter",
    5454                "org.openstreetmap.josm.io.NMEAImporter",
     55                "org.openstreetmap.josm.io.NoteImporter",
    5556                "org.openstreetmap.josm.io.OsmBzip2Importer",
    5657                "org.openstreetmap.josm.io.JpgImporter",
    5758                "org.openstreetmap.josm.io.WMSLayerImporter",
  • src/org/openstreetmap/josm/io/NoteImporter.java

     
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.io;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.io.File;
     7import java.io.FileInputStream;
     8import java.io.IOException;
     9import java.io.InputStream;
     10import java.util.List;
     11
     12import org.openstreetmap.josm.Main;
     13import org.openstreetmap.josm.actions.ExtensionFileFilter;
     14import org.openstreetmap.josm.data.notes.Note;
     15import org.openstreetmap.josm.gui.layer.NoteLayer;
     16import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     17import org.openstreetmap.josm.gui.util.GuiHelper;
     18import org.openstreetmap.josm.tools.Utils;
     19import org.xml.sax.SAXException;
     20
     21/**
     22 * File importer that reads note dump files (*.osn and .osn.bz2)
     23 */
     24public class NoteImporter extends FileImporter {
     25
     26    private static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
     27            "osn,osn.bz2", "osn", tr("Note Files") + " (*.osn *.osn.bz2)");
     28
     29    /** Create an importer for note dump files */
     30    public NoteImporter() {
     31        super(FILE_FILTER);
     32    }
     33
     34    @Override
     35    public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
     36        Main.debug("importing notes file " + file.getAbsolutePath());
     37        final String fileName = file.getName();
     38        InputStream is;
     39        if(fileName.endsWith(".bz2")) {
     40            is = Utils.getBZip2InputStream(new FileInputStream(file));
     41        } else {
     42            is = new FileInputStream(file);
     43        }
     44        NoteReader reader = new NoteReader(is);
     45        try {
     46            final List<Note> fileNotes = reader.parse();
     47
     48            List<NoteLayer> noteLayers = null;
     49            if (Main.map != null) {
     50                noteLayers = Main.map.mapView.getLayersOfType(NoteLayer.class);
     51            }
     52            if (noteLayers != null && noteLayers.size() > 0) {
     53                NoteLayer layer = noteLayers.get(0);
     54                layer.addNotes(fileNotes);
     55            } else {
     56                GuiHelper.runInEDT(new Runnable() {
     57                    @Override
     58                    public void run() {
     59                        NoteLayer layer = new NoteLayer(fileNotes, fileName);
     60                        Main.main.addLayer(layer);
     61                    }
     62                });
     63            }
     64        } catch (SAXException e) {
     65            Main.error("error opening up notes file");
     66            Main.error(e, true);
     67            throw new IOException(e.getMessage(), e);
     68        }
     69        finally {
     70            Utils.close(is);
     71        }
     72    }
     73
     74}