source: josm/trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java@ 4668

Last change on this file since 4668 was 4668, checked in by bastiK, 12 years ago

session support (first part, see #4029)

Idea: Save and load the current session, i.e. list of open layers and possibly more.
This change includes only support for reading session files and only for osm-data layers.

session.svg: Public Domain

  • Property svn:eol-style set to native
File size: 2.0 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;
8
9import javax.xml.xpath.XPath;
10import javax.xml.xpath.XPathConstants;
11import javax.xml.xpath.XPathExpression;
12import javax.xml.xpath.XPathExpressionException;
13import javax.xml.xpath.XPathFactory;
14
15import org.w3c.dom.Element;
16
17import org.openstreetmap.josm.gui.layer.Layer;
18import org.openstreetmap.josm.gui.progress.ProgressMonitor;
19import org.openstreetmap.josm.io.IllegalDataException;
20import org.openstreetmap.josm.io.OsmImporter;
21import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
22
23public class OsmDataSessionImporter implements SessionLayerImporter {
24
25 @Override
26 public Layer load(Element elem, ImportSupport support, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
27 String version = elem.getAttribute("version");
28 if (!"0.1".equals(version)) {
29 throw new IllegalDataException(tr("Version ''{0}'' of meta data for osm data layer is not supported. Expected: 0.1", version));
30 }
31 try {
32 XPathFactory xPathFactory = XPathFactory.newInstance();
33 XPath xpath = xPathFactory.newXPath();
34 XPathExpression fileExp = xpath.compile("file/text()");
35 String fileStr = (String) fileExp.evaluate(elem, XPathConstants.STRING);
36 if (fileStr == null || fileStr.equals("")) {
37 throw new IllegalDataException(tr("File name expected for layer no. {0}", support.getLayerIndex()));
38 }
39
40 OsmImporter importer = new OsmImporter();
41 InputStream in = support.getInputStream(fileStr);
42 importer.loadLayer(in, support.getFile(fileStr), support.getLayerName(), progressMonitor);
43
44 support.addPostLayersTask(importer.getPostLayerTask());
45 return importer.getLayer();
46
47 } catch (XPathExpressionException e) {
48 throw new RuntimeException(e);
49 }
50 }
51}
52
Note: See TracBrowser for help on using the repository browser.