source: josm/trunk/src/org/openstreetmap/josm/io/NoteImporter.java@ 7538

Last change on this file since 7538 was 7538, checked in by bastiK, 10 years ago

applied #10514 - Add ability to open note dump files (patch by ToeBee)

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
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}
Note: See TracBrowser for help on using the repository browser.