source: josm/trunk/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java@ 9197

Last change on this file since 9197 was 8846, checked in by Don-vip, 9 years ago

sonar - fb-contrib - minor performance improvements:

  • Method passes constant String of length 1 to character overridden method
  • Method needlessly boxes a boolean constant
  • Method uses iterator().next() on a List to get the first item
  • Method converts String to boxed primitive using excessive boxing
  • Method converts String to primitive using excessive boxing
  • Method creates array using constants
  • Class defines List based fields but uses them like Sets
  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.session;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.IOException;
7import java.io.InputStream;
8import java.util.List;
9
10import javax.xml.xpath.XPath;
11import javax.xml.xpath.XPathConstants;
12import javax.xml.xpath.XPathExpression;
13import javax.xml.xpath.XPathExpressionException;
14import javax.xml.xpath.XPathFactory;
15
16import org.openstreetmap.josm.gui.layer.GpxLayer;
17import org.openstreetmap.josm.gui.layer.Layer;
18import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
19import org.openstreetmap.josm.gui.progress.ProgressMonitor;
20import org.openstreetmap.josm.io.GpxImporter;
21import org.openstreetmap.josm.io.IllegalDataException;
22import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
23import org.w3c.dom.Element;
24
25public class MarkerSessionImporter implements SessionLayerImporter {
26
27 @Override
28 public Layer load(Element elem, ImportSupport support, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
29 String version = elem.getAttribute("version");
30 if (!"0.1".equals(version)) {
31 throw new IllegalDataException(tr("Version ''{0}'' of meta data for marker layer is not supported. Expected: 0.1", version));
32 }
33 try {
34 XPathFactory xPathFactory = XPathFactory.newInstance();
35 XPath xpath = xPathFactory.newXPath();
36 XPathExpression fileExp = xpath.compile("file/text()");
37 String fileStr = (String) fileExp.evaluate(elem, XPathConstants.STRING);
38 if (fileStr == null || fileStr.isEmpty()) {
39 throw new IllegalDataException(tr("File name expected for layer no. {0}", support.getLayerIndex()));
40 }
41
42 try (InputStream in = support.getInputStream(fileStr)) {
43 GpxImporter.GpxImporterData importData = GpxImporter.loadLayers(in, support.getFile(fileStr), support.getLayerName(),
44 null, progressMonitor);
45
46 support.addPostLayersTask(importData.getPostLayerTask());
47
48 GpxLayer gpxLayer = null;
49 List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
50 if (!deps.isEmpty()) {
51 Layer layer = deps.get(0).getLayer();
52 if (layer instanceof GpxLayer) {
53 gpxLayer = (GpxLayer) layer;
54 }
55 }
56
57 MarkerLayer markerLayer = importData.getMarkerLayer();
58 if (markerLayer != null) {
59 markerLayer.fromLayer = gpxLayer;
60 }
61
62 return markerLayer;
63 }
64 } catch (XPathExpressionException e) {
65 throw new IllegalDataException(e);
66 }
67 }
68}
Note: See TracBrowser for help on using the repository browser.