/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.pepsoft.worldpainter.exporting; import org.pepsoft.worldpainter.layers.Layer; import org.pepsoft.worldpainter.layers.exporters.ExporterSettings; /** * An abstract base class for {@link LayerExporter} implementations. * * @author pepijn */ public abstract class AbstractLayerExporter<L extends Layer> implements LayerExporter { @SuppressWarnings("unchecked") public AbstractLayerExporter(L layer, ExporterSettings defaultSettings) { this.layer = layer; this.defaultSettings = defaultSettings; settings = defaultSettings.clone(); } public AbstractLayerExporter(L layer) { this.layer = layer; this.defaultSettings = null; } @Override public final L getLayer() { return layer; } public final ExporterSettings getSettings() { return settings; } @Override @SuppressWarnings("unchecked") public void setSettings(ExporterSettings settings) { if (settings != null) { this.settings = settings; } else { this.settings = (defaultSettings != null) ? defaultSettings.clone() : null; } } protected final L layer; private final ExporterSettings defaultSettings; private ExporterSettings settings; }