001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.io.session; 003 004import java.io.OutputStream; 005import java.io.OutputStreamWriter; 006import java.io.PrintWriter; 007import java.io.Writer; 008import java.nio.charset.StandardCharsets; 009 010import org.openstreetmap.josm.gui.layer.OsmDataLayer; 011import org.openstreetmap.josm.io.OsmWriter; 012import org.openstreetmap.josm.io.OsmWriterFactory; 013 014/** 015 * Session exporter for {@link OsmDataLayer}. 016 * @since 4685 017 */ 018public class OsmDataSessionExporter extends GenericSessionExporter<OsmDataLayer> { 019 020 /** 021 * Constructs a new {@code OsmDataSessionExporter}. 022 * @param layer Data layer to export 023 */ 024 public OsmDataSessionExporter(OsmDataLayer layer) { 025 super(layer, "osm-data", "0.1", "osm"); 026 } 027 028 @Override 029 protected void addDataFile(OutputStream out) { 030 Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8); 031 OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, layer.data.getVersion()); 032 layer.data.getReadLock().lock(); 033 try { 034 w.writeLayer(layer); 035 w.flush(); 036 } finally { 037 layer.data.getReadLock().unlock(); 038 } 039 } 040}