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

Last change on this file since 12630 was 12630, checked in by Don-vip, 7 years ago

see #15182 - deprecate Main.map and Main.isDisplayingMapView(). Replacements: gui.MainApplication.getMap() / gui.MainApplication.isDisplayingMapView()

  • Property svn:eol-style set to native
File size: 3.0 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.IOException;
8import java.io.InputStream;
9import java.util.List;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.actions.ExtensionFileFilter;
13import org.openstreetmap.josm.data.notes.Note;
14import org.openstreetmap.josm.gui.MainApplication;
15import org.openstreetmap.josm.gui.layer.NoteLayer;
16import org.openstreetmap.josm.gui.progress.ProgressMonitor;
17import org.openstreetmap.josm.tools.Logging;
18import org.xml.sax.SAXException;
19
20/**
21 * File importer that reads note dump files (*.osn, .osn.gz and .osn.bz2)
22 * @since 7538
23 */
24public class NoteImporter extends FileImporter {
25
26 private static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
27 "osn", "osn", tr("Note Files"), true);
28
29 /** Create an importer for note dump files */
30 public NoteImporter() {
31 super(FILE_FILTER);
32 }
33
34 @Override
35 public void importData(final File file, ProgressMonitor progressMonitor) throws IOException {
36 if (Logging.isDebugEnabled()) {
37 Logging.debug("importing notes file {0}", file.getAbsolutePath());
38 }
39 try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
40 final NoteLayer layer = loadLayer(is, file, file.getName(), progressMonitor);
41 if (!Main.getLayerManager().containsLayer(layer)) {
42 Main.getLayerManager().addLayer(layer);
43 }
44 } catch (SAXException e) {
45 Logging.error("error opening up notes file");
46 Logging.error(e);
47 throw new IOException(e.getMessage(), e);
48 }
49 }
50
51 /**
52 * Load note layer from InputStream.
53 * @param in input stream
54 * @param associatedFile filename of data (can be <code>null</code> if the stream does not come from a file)
55 * @param layerName name of generated layer
56 * @param progressMonitor handler for progress monitoring and canceling
57 * @return note layer
58 * @throws IOException if any I/O error occurs
59 * @throws SAXException if any SAX error occurs
60 * @since 9746
61 */
62 public NoteLayer loadLayer(InputStream in, final File associatedFile, final String layerName, ProgressMonitor progressMonitor)
63 throws SAXException, IOException {
64 final List<Note> fileNotes = new NoteReader(in).parse();
65 List<NoteLayer> noteLayers = null;
66 if (MainApplication.getMap() != null) {
67 noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
68 }
69 final NoteLayer layer;
70 if (noteLayers != null && !noteLayers.isEmpty()) {
71 layer = noteLayers.get(0);
72 layer.getNoteData().addNotes(fileNotes);
73 } else {
74 layer = new NoteLayer(fileNotes, associatedFile != null ? associatedFile.getName() : tr("Notes"));
75 }
76 return layer;
77 }
78}
Note: See TracBrowser for help on using the repository browser.