/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKejbEditYmdInit
*	ソースファイル名：JKKejbEditYmdInit.java
*	作成者			：富士通
*	日付			：2011年06月16日
*＜機能概要＞
*	年月日初期値編集部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/16	富士通		新規作成
*
**********************************************************************/

package eo.ejb.common.edit;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.common.JKKModelCommon;

/**
 * <p>
 * 年月日の初期値編集を行うクラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbEditYmdInit
{

	/** 終了日の最大値 */
	private static final String MAX_ENDYMD = "20991231";

	/** 終了日時分の最大値 */
	private static final String MAX_ENDYMDHM = "209912312359";

	/**
	 * コンストラクタです。
	 */
	public JKKejbEditYmdInit()
	{
	}

	/**
	 * <p>
	 * 入力パラメータの設定値に応じた年月日の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param startYMD 終了日と対となる開始日
	 * @return 開始年月日により判定された終了日
	 */
	public Object convYmdInit(CAANMsg inMsg, AgentDispatchContext inContext, Object startYMD)
	{
		// パラメータの判定
		if (null != startYMD)
		{
			// 開始日が設定されている場合は終了日の最大値を返却
			return MAX_ENDYMD;
		}

		// 開始日が未設定の場合はnullを返却
		return null;
	}

	/**
	 * <p>
	 * 入力パラメータの設定値の組み合わせに応じた年月日の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param startYMD 終了日と対となる開始日
	 * @param endYMD 終了日
	 * @return 開始年月日、終了年月日により判定された終了日
	 */
	public Object convYmdInitMulti(CAANMsg inMsg, AgentDispatchContext inContext, Object startYMD, Object endYMD)
	{
		// パラメータの判定
		if (null != startYMD && null != endYMD)
		{
			// 開始日、終了日が設定されている場合は終了日をそのまま返却
			return endYMD;
		}
		else if (null != startYMD && null == endYMD)
		{
			// 開始日が設定され、終了日が未設定の場合は終了日の最大値を返却
			return MAX_ENDYMD;
		}

		// 上記判定以外の場合はnullを返却
		return null;
	}

	/**
	 * <p>
	 * 入力パラメータの設定値に応じた終了年月日の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param endYMD 終了年月日
	 * @return 編集した終了年月日
	 */
	public Object convEndYmdInit(CAANMsg inMsg, AgentDispatchContext inContext, Object endYMD)
	{
		// パラメータの判定
		if (null == endYMD)
		{
			// 終了年月日が設定されていない場合は終了日の最大値を返却
			return MAX_ENDYMD;
		}

		// 終了年月日が設定されているの場合は終了年月日を返却
		return endYMD;
	}

	/**
	 * <p>
	 * 入力パラメータの設定値の組み合わせに応じた年月日時分の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param startYMDHM 終了年月日時分と対となる開始年月日時分
	 * @param endYMDHM 終了年月日時分
	 * @return 開始年月日時分、終了年月日時分により判定された終了年月日時分
	 */
	public Object convYmdhmInitMulti(CAANMsg inMsg, AgentDispatchContext inContext, Object startYMDHM, Object endYMDHM)
	{
		// パラメータの判定
		if (null != startYMDHM && null != endYMDHM)
		{
			// 開始年月日時分、終了年月日時分が設定されている場合は終了年月日時分をそのまま返却
			return endYMDHM;
		}
		else if (null != startYMDHM && null == endYMDHM)
		{
			// 開始年月日時分が設定され、終了年月日時分が未設定の場合は終了年月日時分の最大値を返却
			return MAX_ENDYMDHM;
		}

		// 上記判定以外の場合はnullを返却
		return null;
	}

	/**
	 * <p>
	 * 終了年月日の初期値編集を行う。。
	 * </p>
	 * @return 固定値"20991231"
	 */
	public Object convEndYmdInitFix()
	{
		// 固定値"20991231"を返却する。
		return MAX_ENDYMD;
	}

	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param  inMsg 処理対象のメッセージキャリア
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  targetYMD 編集対象の年月日
	 * @return 判定結果により編集された年月日
	 */
	public Object convYmdInitOpeDate(CAANMsg inMsg, AgentDispatchContext inContext, Object targetYMD)
	{
		// パラメータの判定
		if (null != targetYMD)
		{
			// 編集対象の年月日が設定されている場合は編集対象の年月日を返却
			return targetYMD;
		}
		// 編集対象の年月日が未設定の場合は運用日付を返却
		return JKKModelCommon.getOpeDate(inMsg);
	}

	/**
	 * <p>
	 * 入力パラメータに応じた予約適用年月日に編集します。
	 * 入力パラメータが未設定の場合は、初期値として"20991231"を返却します。
	 * </p>
	 * @param ymd 予約適用年月日設定対象の年月日
	 * @return 編集された予約適用年月日
	 */
	public static String convRsvAplyYmdInit(String ymd)
	{
		if (null == ymd)
		{
			// 未設定の場合は"20991231"に編集
			return MAX_ENDYMD;
		}

		return ymd;
	}
	
	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた予約適用年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kktkSvcNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @param svcStaAutoYh サービス開始日自動適用要否
	 * @param shkaFinYmd 出荷完了年月日
	 * @return 編集された予約適用年月日
	 */
	public Object setRsvAplyYmd(CAANMsg inMsg, AgentDispatchContext inContext, 
			Object kktkSvcNo, Object idoDiv, Object svcStaAutoyh, Object shkaFinymd)
	{
		return JKKModelCommon.getOpeDate(inMsg); 
	}
	
	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた開始年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kktkSvcNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @param svcStaAutoYh サービス開始日自動適用要否
	 * @param shkaFinYmd 出荷完了年月日
	 * @return 編集された開始年月日
	 */
	public Object setStaYmd(CAANMsg inMsg, AgentDispatchContext inContext, 
			Object kktkSvcNo, Object idoDiv, Object svcStaAutoyh, Object shkaFinymd)
	{
		return JKKModelCommon.getOpeDate(inMsg); 
	}

	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた課金開始年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kktkSvcNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @param svcChrgStaAutoYh サービス課金開始日自動適用要否
	 * @param shkaFinYmd 出荷完了年月日
	 * @return 編集された課金開始年月日
	 */
	public Object setChrgStaYmd(CAANMsg inMsg, AgentDispatchContext inContext, 
			Object kktkSvcNo, Object idoDiv, Object svcChrgStaAutoYh, Object shkaFinymd)
	{
		return JKKModelCommon.getOpeDate(inMsg); 
	}

	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた終了年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kktkSvcNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @param svcStaAutoYh サービス開始日自動適用要否
	 * @param shkaFinYmd 出荷完了年月日
	 * @return 編集された終了年月日
	 */
	public Object setEndYmd(CAANMsg inMsg, AgentDispatchContext inContext, 
			Object kktkSvcNo, Object idodiv, Object svcStaAutoyh, Object shkaFinymd)
	{
		return MAX_ENDYMD; 
	}
	
	/**
	 * <p>
	 * 入力パラメータの設定項目に応じた課金終了年月日（入力値未設定時の運用日付設定）の初期値編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kktkSvcNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @param svcChrgStaAutoYh サービス課金開始日自動適用要否
	 * @param shkaFinYmd 出荷完了年月日
	 * @return 編集された課金終了年月日
	 */
	public Object setChrgEndYmd(CAANMsg inMsg, AgentDispatchContext inContext, 
			Object kktkSvcNo, Object idoDiv, Object svcChrgStaAutoYh, Object shkaFinymd)
	{
		return MAX_ENDYMD; 
	}
	
}
