001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.io;
003
004import 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 */
017public 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}