source: josm/trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java@ 10242

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

see #11255 - checkstyle/findbugs

  • Property svn:eol-style set to native
File size: 3.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.InvalidClassException;
10import java.io.ObjectInputStream;
11import java.util.Map;
12
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.actions.ExtensionFileFilter;
15import org.openstreetmap.josm.data.Preferences;
16import org.openstreetmap.josm.data.coor.EastNorth;
17import org.openstreetmap.josm.data.imagery.ImageryInfo;
18import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
19import org.openstreetmap.josm.gui.layer.ImageryLayer;
20import org.openstreetmap.josm.gui.progress.ProgressMonitor;
21import org.openstreetmap.josm.gui.util.GuiHelper;
22import org.openstreetmap.josm.tools.CheckParameterUtil;
23
24/**
25 * Import a WMS layer from a serialized binary file previously exported via {@link WMSLayerExporter}.
26 * @since 5457
27 */
28public class WMSLayerImporter extends FileImporter {
29
30 /**
31 * The file filter used in "open" and "save" dialogs for WMS layers.
32 */
33 public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
34 "wms", "wms", tr("WMS Files (*.wms)"));
35
36 /**
37 * Constructs a new {@code WMSLayerImporter}.
38 */
39 public WMSLayerImporter() {
40 super(FILE_FILTER);
41 }
42
43 @Override
44 public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
45 CheckParameterUtil.ensureParameterNotNull(file, "file");
46 final EastNorth zoomTo;
47 ImageryInfo info = null;
48 final ImageryLayer layer;
49
50 try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
51 int sfv = ois.readInt();
52 if (sfv < 5) {
53 throw new InvalidClassException(tr("Unsupported WMS file version; found {0}, expected {1}", sfv, 5));
54 } else if (sfv == 5) {
55 ois.readInt(); // dax - not needed
56 ois.readInt(); // day - not needed
57 zoomTo = null;
58
59 int imageSize = ois.readInt();
60 double pixelPerDegree = ois.readDouble();
61
62 String name = (String) ois.readObject();
63 String extendedUrl = (String) ois.readObject();
64
65 info = new ImageryInfo(name);
66 info.setExtendedUrl(extendedUrl);
67 info.setPixelPerDegree(pixelPerDegree);
68 info.setTileSize(imageSize);
69 } else if (sfv == WMSLayerExporter.CURRENT_FILE_VERSION) {
70 zoomTo = (EastNorth) ois.readObject();
71
72 @SuppressWarnings("unchecked")
73 ImageryPreferenceEntry entry = Preferences.deserializeStruct(
74 (Map<String, String>) ois.readObject(),
75 ImageryPreferenceEntry.class);
76 info = new ImageryInfo(entry);
77 } else {
78 throw new InvalidClassException(tr("Unsupported WMS file version; found {0}, expected {1}", sfv, 6));
79 }
80 } catch (ClassNotFoundException e) {
81 throw new IllegalDataException(e);
82 }
83 layer = ImageryLayer.create(info);
84
85
86 // FIXME: remove UI stuff from IO subsystem
87 GuiHelper.runInEDT(new Runnable() {
88 @Override
89 public void run() {
90 Main.main.addLayer(layer);
91 if (zoomTo != null) {
92 Main.map.mapView.zoomTo(zoomTo);
93 }
94 }
95 });
96 }
97}
Note: See TracBrowser for help on using the repository browser.