001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.io;
003
004 import java.io.PrintWriter;
005
006 /**
007 * This factory is called by everyone who needs an OsmWriter object,
008 * instead of directly calling the OsmWriter constructor.
009 *
010 * This enables plugins to substitute the original OsmWriter with
011 * their own version, altering the way JOSM writes objects to the
012 * server, and to disk.
013 *
014 * @author Frederik Ramm
015 *
016 */
017 public class OsmWriterFactory {
018
019 public static OsmWriterFactory theFactory;
020 public static OsmWriter createOsmWriter(PrintWriter out, boolean osmConform, String version) {
021 // pre-set factory with this default implementation; can still be overwritten
022 // later. note that the default factory may already be used for constructing
023 // OsmWriters during the startup process.
024 if (theFactory == null) {
025 theFactory = new OsmWriterFactory();
026 }
027 return theFactory.createOsmWriterImpl(out, osmConform, version);
028 }
029 protected OsmWriter createOsmWriterImpl(PrintWriter out, boolean osmConform, String version) {
030 return new OsmWriter(out, osmConform, version);
031 }
032 }