/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JBSSecureRandom
*	ソースファイル名：JBSSecureRandom.java
*	作成者			：富士通
*	日付			：2011年02月17日
*＜機能概要＞
*	日付判定に関する共通処理を提供する。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/02/17	富士通		新規作成
*
**********************************************************************/
package eo.common.util;

import eo.common.util.JPCCommonUtil;
import eo.common.util.JPCDateUtil;


/**
 * 日付判定に関する共通処理を行うクラスです。<p>
 * <br>
 * @author 富士通
 */
public class JPCDateChecker extends JPCCommonUtil 
{
	/**
	 * 指定された日付が運用日付と同日か判定します。
	 * <br>
	 * @param arg0 判定する日付(yyyyMMdd)
	 * @param arg1 基準となる運用日付(yyyyMMdd)
	 * @return boolean 日付が運用日付と同日の場合はtrue
	 * @exception IllegalArgumentException 不正な引数が渡された場合。
	 * @see eo.common.JCMInterface#subtractDay(String, String)
	 */
	public static boolean isEqualDate(String arg0, String arg1) 
	{
		if (!isValidParameter(arg0, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg0 + "]" + "は不正です。");
		}

		if (!isValidParameter(arg1, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg1 + "]" + "は不正です。");
		}

		// 運用日付との差分日数を算出
		int differ = JPCDateUtil.subtractDay(arg1, arg0);

		return 0 == differ;
	}

	/**
	 * 指定された日付が運用日付より過去日か判定します。
	 * <br>
	 * @param arg0 判定する日付(yyyyMMdd)
	 * @param arg1 基準となる運用日付(yyyyMMdd)
	 * @param arg2 同日を含む／含まないの指定(0：含まない、1：含む)
	 * @return boolean 日付が運用日付より過去日の場合はtrue
	 * @exception IllegalArgumentException 不正な引数が渡された場合。
	 * @see eo.common.JCMInterface#subtractDay(String, String)
	 */
	public static boolean isPastDate(String arg0, String arg1, String arg2) 
	{
		if (!isValidParameter(arg0, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg0 + "]" + "は不正です。");
		}

		if (!isValidParameter(arg1, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg1 + "]" + "は不正です。");
		}

		// 運用日付との差分日数を算出
		int differ = JPCDateUtil.subtractDay(arg1, arg0);

		// 同日を含む場合は、差分日数を＋１
		if ("1".equals(arg2)) 
		{
			differ++;
		}

		return 0 < differ;
	}
	
	/**
	 * 指定された日付が運用日付より未来日か判定します。
	 * <br>
	 * @param arg0 判定する日付(yyyyMMdd)
	 * @param arg1 基準となる運用日付(yyyyMMdd)
	 * @param arg2 同日を含む／含まないの指定(0：含まない、1：含む)
	 * @return boolean 日付が運用日付より未来日の場合はtrue
	 * @exception IllegalArgumentException 不正な引数が渡された場合。
	 * @see eo.common.JCMInterface#subtractDay(String, String)
	 */
	public static boolean isFutureDate(String arg0, String arg1, String arg2) 
	{
		if (!isValidParameter(arg0, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg0 + "]" + "は不正です。");
		}

		if (!isValidParameter(arg1, 8)) 
		{
			throw new IllegalArgumentException("パラメータ[" + arg1 + "]" + "は不正です。");
		}

		// 運用日付との差分日数を算出
		int differ = JPCDateUtil.subtractDay(arg1, arg0);

		// 同日を含む場合は、差分日数を−１
		if ("1".equals(arg2)) 
		{
			differ--;
		}

		return 0 > differ;
	}
	
//	/**
//	 * 指定された日付が運用日付からシステムパラメータで規定された
//	 * 日数範囲内であるか判定します。
//	 * このメソッドの呼び出しを行う場合は、{@link bitsolino.ejb.common.JSYejbInterface#isValidRangeDate(String, String, String)}
//	 * を使用して呼び出してください。
//	 * <br>
//	 * @param arg0 判定する日付(yyyyMMdd)
//	 * @param arg1 基準となる運用日付(yyyyMMdd)
//	 * @param arg2 日数が規定されたパラメータID
//	 * @return システムパラメータに規定された日数範囲内の場合はtrue
//	 * @exception IllegalArgumentException 不正な引数が渡された場合。
//	 * @see bitsolino.ejb.common.JSYejbSysParam#getIntParam(String)
//	 * @see bitsolino.common.JCMInterface#subtractDay(String, String)
//	 */
//	public static boolean isValidRangeDate(String arg0, String arg1, String arg2)
//	{
//		if (!isValidParameter(arg0, 8))
//		{
//			throw new IllegalArgumentException("パラメータ[" + arg0 + "]" + "は不正です。");
//		}
//
//		if (!isValidParameter(arg1, 8))
//		{
//			throw new IllegalArgumentException("パラメータ[" + arg1 + "]" + "は不正です。");
//		}
//
//		if (!isValidParameter(arg2))
//		{
//			throw new IllegalArgumentException("パラメータ[" + arg2 + "]" + "は不正です。");
//		}
//
//		// システムパラメータの参照
//		int retParam = new JPCSysParam().getIntParam(arg2);
//
//		// 運用日付との差分日数を算出
//		int differ = JCMInterface.subtractDay(arg0, arg1);
//
//		return retParam >= differ;
//	}
}
