Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / configuration / file / FileConfigurationOptions.java
@vlad20012 vlad20012 on 24 Feb 2017 3 KB initial
package org.bukkit.configuration.file;

import org.bukkit.configuration.MemoryConfiguration;
import org.bukkit.configuration.MemoryConfigurationOptions;

/**
 * Various settings for controlling the input and output of a {@link
 * FileConfiguration}
 */
public class FileConfigurationOptions extends MemoryConfigurationOptions
{
	private String header = null;
	private boolean copyHeader = true;

	protected FileConfigurationOptions(MemoryConfiguration configuration)
	{
		super(configuration);
	}

	@Override
	public FileConfiguration configuration()
	{
		return (FileConfiguration) super.configuration();
	}

	@Override
	public FileConfigurationOptions copyDefaults(boolean value)
	{
		super.copyDefaults(value);
		return this;
	}

	@Override
	public FileConfigurationOptions pathSeparator(char value)
	{
		super.pathSeparator(value);
		return this;
	}

	/**
	 * Gets the header that will be applied to the top of the saved output.
	 * <p>
	 * This header will be commented out and applied directly at the top of
	 * the generated output of the {@link FileConfiguration}. It is not
	 * required to include a newline at the end of the header as it will
	 * automatically be applied, but you may include one if you wish for extra
	 * spacing.
	 * <p>
	 * Null is a valid value which will indicate that no header is to be
	 * applied. The default value is null.
	 *
	 * @return Header
	 */
	public String header()
	{
		return header;
	}

	/**
	 * Sets the header that will be applied to the top of the saved output.
	 * <p>
	 * This header will be commented out and applied directly at the top of
	 * the generated output of the {@link FileConfiguration}. It is not
	 * required to include a newline at the end of the header as it will
	 * automatically be applied, but you may include one if you wish for extra
	 * spacing.
	 * <p>
	 * Null is a valid value which will indicate that no header is to be
	 * applied.
	 *
	 * @param value New header
	 * @return This object, for chaining
	 */
	public FileConfigurationOptions header(String value)
	{
		this.header = value;
		return this;
	}

	/**
	 * Gets whether or not the header should be copied from a default source.
	 * <p>
	 * If this is true, if a default {@link FileConfiguration} is passed to
	 * {@link
	 * FileConfiguration#setDefaults(org.bukkit.configuration.Configuration)}
	 * then upon saving it will use the header from that config, instead of
	 * the one provided here.
	 * <p>
	 * If no default is set on the configuration, or the default is not of
	 * type FileConfiguration, or that config has no header ({@link #header()}
	 * returns null) then the header specified in this configuration will be
	 * used.
	 * <p>
	 * Defaults to true.
	 *
	 * @return Whether or not to copy the header
	 */
	public boolean copyHeader()
	{
		return copyHeader;
	}

	/**
	 * Sets whether or not the header should be copied from a default source.
	 * <p>
	 * If this is true, if a default {@link FileConfiguration} is passed to
	 * {@link
	 * FileConfiguration#setDefaults(org.bukkit.configuration.Configuration)}
	 * then upon saving it will use the header from that config, instead of
	 * the one provided here.
	 * <p>
	 * If no default is set on the configuration, or the default is not of
	 * type FileConfiguration, or that config has no header ({@link #header()}
	 * returns null) then the header specified in this configuration will be
	 * used.
	 * <p>
	 * Defaults to true.
	 *
	 * @param value Whether or not to copy the header
	 * @return This object, for chaining
	 */
	public FileConfigurationOptions copyHeader(boolean value)
	{
		copyHeader = value;

		return this;
	}
}