package com.nifty.cloud.ncs.transfer;


/**
 * {@link TransferManager}の設定を行うクラスです。
 */
public class TransferManagerConfiguration
{
	private static final int KB = 1024;
	private static final int MB = 1024 * KB;

	/** 最小パートサイズのデフォルト値 */
	private static final int DEFAULT_MINIMUM_UPLOAD_PART_SIZE = 5 * MB;

	/** マルチアップロード使用開始サイズの閾値のデフォルト値  */
	private static final int DEFAULT_MULTIPART_UPLOAD_THRESHOLD = 16 * MB;

	/**
	 * 最小パートサイズ<br>
	 * アップロードサイズによらず、1パートのサイズは最低でもこの値になります。
	 */
	private long minimumUploadPartSize = DEFAULT_MINIMUM_UPLOAD_PART_SIZE;

	/**
	 * マルチアップロード使用開始サイズの閾値<br>
	 * このサイズより大きいデータをアップロードしようとした場合、マルチパートでアップロードされます。
	 */
	private long multipartUploadThreshold = DEFAULT_MULTIPART_UPLOAD_THRESHOLD;


	/**
	 * 最小パートサイズを取得します。
	 *
	 * @return 最小パートサイズ
	 */
	public long getMinimumUploadPartSize()
	{
		return (minimumUploadPartSize);
	}

	/**
	 * 最小パートサイズを設定します。
	 *
	 * @param minimumUploadPartSize
	 *  最小パートサイズ
	 */
	public void setMinimumUploadPartSize(long minimumUploadPartSize)
	{
		this.minimumUploadPartSize = minimumUploadPartSize;
	}

	/**
	 * マルチパートアップロード使用開始サイズの閾値を取得します。
	 *
	 * @return マルチパートアップロード使用開始サイズの閾値
	 */
	public long getMultipartUploadThreshold()
	{
		return (multipartUploadThreshold);
	}

	/**
	 * マルチパートアップロード使用開始サイズの閾値を設定します。
	 *
	 * @param multipartUploadThreshold
	 *  マルチパートアップロード使用開始サイズの閾値
	 */
	public void setMultipartUploadThreshold(long multipartUploadThreshold)
	{
		this.multipartUploadThreshold = multipartUploadThreshold;
	}
}
