source: josm/trunk/src/org/openstreetmap/josm/gui/io/importexport/WMSLayerExporter.java@ 13204

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

enable new PMD rule AvoidFileStream - see https://pmd.github.io/pmd-6.0.0/pmd_rules_java_performance.html#avoidfilestream / https://bugs.openjdk.java.net/browse/JDK-8080225 for details

  • 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.gui.io.importexport;
3
4import java.io.File;
5import java.io.IOException;
6import java.io.ObjectOutputStream;
7import java.nio.file.Files;
8
9import org.openstreetmap.josm.data.StructUtils;
10import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
11import org.openstreetmap.josm.gui.MainApplication;
12import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
13import org.openstreetmap.josm.gui.layer.Layer;
14import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
15import org.openstreetmap.josm.tools.CheckParameterUtil;
16
17/**
18 * Export a WMS layer to a serialized binary file that can be imported later via {@link WMSLayerImporter}.
19 *
20 * @since 5457
21 */
22public class WMSLayerExporter extends FileExporter {
23
24 /** Which version of the file we export */
25 public static final int CURRENT_FILE_VERSION = 6;
26
27 /**
28 * Constructs a new {@code WMSLayerExporter}
29 */
30 public WMSLayerExporter() {
31 super(WMSLayerImporter.FILE_FILTER);
32 }
33
34 @Override
35 public void exportData(File file, Layer layer) throws IOException {
36 CheckParameterUtil.ensureParameterNotNull(file, "file");
37 CheckParameterUtil.ensureParameterNotNull(layer, "layer");
38
39 if (layer instanceof AbstractTileSourceLayer) {
40 try (ObjectOutputStream oos = new ObjectOutputStream(Files.newOutputStream(file.toPath()))) {
41 oos.writeInt(CURRENT_FILE_VERSION); // file version
42 oos.writeObject(MainApplication.getMap().mapView.getCenter());
43 ImageryPreferenceEntry entry = new ImageryPreferenceEntry(((AbstractTileSourceLayer<?>) layer).getInfo());
44 oos.writeObject(StructUtils.serializeStruct(entry, ImageryPreferenceEntry.class));
45 }
46 }
47 }
48
49 @Override
50 public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
51 setEnabled(e.getSource().getActiveLayer() instanceof AbstractTileSourceLayer);
52 }
53}
Note: See TracBrowser for help on using the repository browser.