/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKStarChannelSetwariCC
*   ソースファイル名：JKKStarChannelSetwariCC.java
*   作成者          ：FJ
*   日付            ：2014年07月03日
*＜機能概要＞
*   スターチャンネルセット割部品CC
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v10.00.00   2014/07/03  FJ)寺園     新規作成(ANK-2135-00-00)
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451C070CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg1List;

/**
 * スターチャンネルセット割部品CC
 * 
 * @author 富士通
 */
public class JKKStarChannelSetwariCC extends AbstractCommonComponent {
	
	/** サービスインタフェース呼び出しで使用するマッパー群 */
	private JKKStarChannelSetwariMapperCC mapper = null;
	
	/** ユーザデータ情報 */
	private HashMap<String, Object> inMap = null;

	/** スターチャンネルセット割引部品CCの作業領域 */
	private Map<String, Object> ccWorkMap = null;

	/** CC機能コード（チェック・登録） */
	private final String CC_FUNC_CD_1 = "1";
	/** CC機能コード（チェック） */
	private final String CC_FUNC_CD_2 = "2";
	
	/** 機能コード 1 */
	private final String FUNC_CD_1 = "1";
	/** 機能コード 2 */
	private final String FUNC_CD_2 = "2";
	/** 機能コード 3 */
	private final String FUNC_CD_3 = "3";
	
	/** 処理区分（登録） */
	private final String TRN_DIV_ADD    = "01";
	/** 処理区分（キャンセル） */
	private final String TRN_DIV_CANCEL    = "02";
	
	/** 割引サービスコード 地デジ・BSコース　スターチャンネルセット割引 */
	private final String WRIB_SVC_CD_STAR_CHANNEL_SETWARI = "W00000009";
	
	/** 料金コースコード 地デジ・BSコース　スターチャンネルセット割引 */
	private final String PCRS_CD_STAR_CHANNEL_SETWARI = "F05";
	
	/** 料金プランコード 地デジ・BSコース　スターチャンネルセット割引 */
	private final String PPLAN_CD_STAR_CHANNEL_SETWARI = "PF0501";
	
	/** 運用日取得キー */
	private final String OPE_DATE = "OPE_DATE";
	
	/**
	 * 
	 * 引数キー
	 * 
	 * ・機能コード
	 * ・処理区分
	 * ・SYSID
	 * ・サービス契約番号
	 * ・申込明細番号
	 * ・サービスキャンセル理由コード
	 * ・起算日
	 * ・利用開始希望年月日
	 * ・異動区分
	 * ・更新年月日時分秒（更新前）
	 */
	public static final String KEY_FUNC_CD           = "func_cd";
	public static final String KEY_TRN_DIV           = "trn_div";
	public static final String KEY_SYSID             = "sysid";
	public static final String KEY_SVC_KEI_NO        = "svc_kei_no";
	public static final String KEY_MSKM_DTL_NO       = "mskm_dtl_no";
	public static final String KEY_SVC_CANCEL_RSN_CD = "svc_cancel_rsn_cd";
	public static final String KEY_KISAN_YMD         = "kisan_ymd";
	public static final String KEY_USE_STA_KIBO_YMD  = "use_sta_kibo_ymd";
	public static final String KEY_IDO_DIV           = "ido_div";
	public static final String KEY_KK0081_UPD_DTM    = "kk0081_upd_dtm";
	
	/**
	 * 戻り値キー
	 * ・更新年月日時分秒
	 */
	private final String RTRN_KEY_UPD_DTM           = "upd_dtm";
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引登録・キャンセル処理を実施する.<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param handle    セッションハンドル
	 * @param param     リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle,
												IRequestParameterReadWrite param,
												String fixedText) throws Throwable {
		printlnEjbLog("JKKStarChannelSetwariCC.execute start");
		
		// 基準となる日付の取得
		String opeDate = JCCBPCommon.getOpeDate(null);
		
		// 初期処理
		initSetUp(handle, param, fixedText, opeDate);
		
		// 入力データチェック
		chkInMap(handle, param);
		
		// 機能コード「チェックのみ」の場合は、主処理は行わない
		if (this.CC_FUNC_CD_2.equals(this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_FUNC_CD)))
			return param;
		
		// メイン処理実行
		main(handle, param);

		printlnEjbLog("JKKStarChannelSetwariCC.execute end");
		return param;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>主処理<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  handle セッションハンドル
	 * @param  param  リクエストパラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("serial")
	private void main(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable {
		printlnEjbLog("JKKStarChannelSetwariCC.main start");
		
		String updDtm = null;
		if(TRN_DIV_ADD.equals((String)this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_TRN_DIV)))
		{
			// 登録
			updDtm = addStarChannelSetwari();
			if(!JKKStringUtil.isNullBlank(updDtm))
			{
				// 登録処理が行われているので、更新年月日時分秒に対して登録結果の更新年月日時分秒を設定
				this.inMap.put(RTRN_KEY_UPD_DTM, updDtm);
			}
			else
			{
				// 登録処理が行われていないため、連携された更新年月日時分秒(更新前)の値を設定
				this.inMap.put(RTRN_KEY_UPD_DTM, this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_KK0081_UPD_DTM));
			}
		}
		else if(TRN_DIV_CANCEL.equals((String)this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_TRN_DIV)))
		{
			// キャンセル
			updDtm = cancelStarChannelSetwari();
			if(!JKKStringUtil.isNullBlank(updDtm))
			{
				// キャンセル処理が行われているので、更新年月日時分秒に対して登録結果の更新年月日時分秒を設定
				this.inMap.put(RTRN_KEY_UPD_DTM, updDtm);
			}
			else
			{
				// キャンセル処理が行われていないため、連携された更新年月日時分秒(更新前)の値を設定
				this.inMap.put(RTRN_KEY_UPD_DTM, this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_KK0081_UPD_DTM));
			}
		}
		
		printlnEjbLog("JKKStarChannelSetwariCC.main end");
	}

	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>スターチャンネルセット割 登録処理<BR>
	 * <dt>処理補足：
	 * <dd>スターチャンネルセット割の登録処理を行う
	 * </dl>
	 * @return 登録結果の更新年月日時分秒
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String addStarChannelSetwari() throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.addStarChannelSetwari start");
		
		// サービス契約一意照会
		CAANMsg ekk0081a010 = callEKK0081A010();

		// 課金先一覧照会（請求契約番号／サービス契約番号）
		String seikyKeiNo = callEKK0321B002();
		
		// 請求契約一意照会
		String updDtm = callEKK0491A010(seikyKeiNo);
		
		// 割引サービス対象サービス一覧照会
		CAANMsg ekk0851b001 = callEKK0851B001(ekk0081a010);
		
		if(ekk0851b001 == null)
		{
			// 該当の割引サービス対象サービスが存在しない場合
			return null;
		}
		
		// 割引サービス契約登録
		CAANMsg ekk0451d010Msg = callEKK0451D010(ekk0851b001);
		
		// 課金先登録
		callEKK0321D010(seikyKeiNo, ekk0451d010Msg.getString(EKK0451D010CBSMsg.WRIB_SVC_KEI_NO), updDtm);
		
		printlnEjbLog("JKKStarChannelSetwariCC.addStarChannelSetwari end");
		
		// 更新年月日時分秒を返却
		return ekk0451d010Msg.getString(EKK0451D010CBSMsg.UPD_DTM);
	}

	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>スターチャンネルセット割 キャンセル処理<BR>
	 * <dt>処理補足：
	 * <dd>スターチャンネルセット割のキャンセル処理を行う
	 * </dl>
	 * @return 更新結果の更新年月日時分秒
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String cancelStarChannelSetwari() throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.cancelStarChannelSetwari start");
		
		// 割引サービス契約一覧照会
		HashMap<String, Object> ekk0451b001Msg = callEKK0451B001();
		
		String updDtm = "";
		boolean existFlg = false;
		Iterator<String> ite = ekk0451b001Msg.keySet().iterator();
		while (ite.hasNext())
		{
			String wribSvcKeiNo = ite.next();
			CAANMsg ekk0451b001 = (CAANMsg)ekk0451b001Msg.get(wribSvcKeiNo);
			String wribSvcKeiStat = ekk0451b001.getString(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT);
			
			if(JKKStrConst.CD00055_UKZM.equals(wribSvcKeiStat))
			{
				// 割引サービス契約キャンセル
				CAANMsg ekk0451C070Msg = callEKK0451C070(ekk0451b001);
				
				// 返却用の更新年月日時分秒を保持
				updDtm = ekk0451C070Msg.getString(EKK0451C070CBSMsg.UPD_DTM);
				existFlg = true;
				break;
			}
			else if(JKKStrConst.CD00037_SVCTK_CHU.equals(wribSvcKeiStat))
			{
				// 該当の割引サービス契約が「サービス提供中」の場合
				throw new CCException("該当の割引サービス契約は「サービス提供中」です。", new Exception());
			}
		}
		
		printlnEjbLog("JKKStarChannelSetwariCC.cancelStarChannelSetwari end");
		return updDtm;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0081_サービス契約を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	private CAANMsg callEKK0081A010() throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0081A010 start");
		
		// サービス契約番号
		String svcKeiNo = (String)this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_SVC_KEI_NO);
		
		CAANMsg[] ekk0081a010 = this.mapper.callEKK0081A010(this.FUNC_CD_2, svcKeiNo);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0081A010 end");
		return ekk0081a010[0];
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0451_割引サービス契約を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> callEKK0451B001() throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451B001 start");
		
		// KK0451_割引サービス契約
		CAANMsg[] ekk0451b001List = this.mapper.callEKK0451B001(this.FUNC_CD_1, (String) this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_SVC_KEI_NO));
		
		// key：割引サービス契約番号 value:DB取得結果
		HashMap<String, Object> wriInf = new HashMap<String, Object>();
		
		for (CAANMsg ekk0451b001 : ekk0451b001List) {
			
			if(WRIB_SVC_CD_STAR_CHANNEL_SETWARI.equals(ekk0451b001.getString(EKK0451B001CBSMsg1List.WRIB_SVC_CD)))
			{
				// 該当のスターチャンネルセット割の場合に割引情報を保持する
				String wribSvcKeiNo = ekk0451b001.getString(EKK0451B001CBSMsg1List.WRIB_SVC_KEI_NO);
				wriInf.put(wribSvcKeiNo, ekk0451b001);
			}
		}
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451B001 end");
		return wriInf;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引サービス契約登録<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callEKK0451D010(CAANMsg wrisvcTrgtSvcInf) throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451D010 start");
		
		// 割引サービス対象サービスコード取得
		String wribSvcTgSvcCd = wrisvcTrgtSvcInf.getString(EKK0851B001CBSMsg1List.WRIB_SVC_TRGT_SVC_CD);
		
		// KK0451_割引サービス契約登録
		CAANMsg ekk0451d010Msg = this.mapper.callEKK0451D010(this.FUNC_CD_1, this.ccWorkMap, WRIB_SVC_CD_STAR_CHANNEL_SETWARI, 
			PCRS_CD_STAR_CHANNEL_SETWARI, PPLAN_CD_STAR_CHANNEL_SETWARI, wribSvcTgSvcCd);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451D010 end");
		return ekk0451d010Msg;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引サービス契約キャンセル<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param wribSvcKeiInf
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg callEKK0451C070(CAANMsg wribSvcKeiInf) throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451C070 start");
		
		CAANMsg ekk0451C070Msg = this.mapper.callEKK0451C070(this.FUNC_CD_1, this.ccWorkMap, wribSvcKeiInf);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0451C070 end");
		return ekk0451C070Msg;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0491_請求契約を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	private String callEKK0491A010(String seikyKeiNo) throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0491A010 start");
		
		CAANMsg[] ekk0491a010 = this.mapper.callEKK0491A010(this.FUNC_CD_2, seikyKeiNo);
		
		String lastUpdDtm = ekk0491a010[0].getString(EKK0491A010CBSMsg1List.LAST_UPD_DTM);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0491A010 end");
		
		return lastUpdDtm;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0851_割引サービス対象サービスを検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callEKK0851B001(CAANMsg svcKeiInf) throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0851B001 start");
		
		// サービス契約情報からプランコード取得
		String pplancd = svcKeiInf.getString(EKK0081A010CBSMsg1List.PPLAN_CD);
		
		// KK0851_割引サービス対象サービス
		CAANMsg[] ekk0851b001List = this.mapper.callEKK0851B001(this.FUNC_CD_3, WRIB_SVC_CD_STAR_CHANNEL_SETWARI);
		
		CAANMsg rtrnCaanMsg = null;
		if(ekk0851b001List != null && ekk0851b001List.length != 0)
		{
			for (CAANMsg ekk0851b001 : ekk0851b001List) {
				
				String pplanCd = ekk0851b001.getString(EKK0851B001CBSMsg1List.PPLAN_CD);
				if(pplancd.equals(pplanCd))
				{
					rtrnCaanMsg = ekk0851b001;
					break;
				}
			}
		}
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0851B001 end");
		return rtrnCaanMsg;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>KK0321_課金先を検索<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	private String callEKK0321B002() throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0321B002 start");
		
		// KK0321_課金先
		CAANMsg[] ekk0321b002List = this.mapper.callEKK0321B002(this.FUNC_CD_1, (String) this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_SVC_KEI_NO));
		
		String seikyKeiNo = ekk0321b002List[0].getString(EKK0321B002CBSMsg1List.SEIKY_KEI_NO);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0321B002 end");
		return seikyKeiNo;
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>課金先登録<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	private void callEKK0321D010(String seikyKeiNo, String wribSvcKeiNo, String updDtmBf) throws Throwable
	{
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0321D010 start");
		
		// KK0321_課金先登録
		this.mapper.callEKK0321D010(this.FUNC_CD_1, seikyKeiNo, wribSvcKeiNo, updDtmBf);
		
		printlnEjbLog("JKKStarChannelSetwariCC.callEKK0321D010 end");
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>初期設定を実施<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  handle    セッションハンドル
	 * @param  param     リクエストパラメータ
	 * @param  fixedText サービスメッセージ
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings({ "unchecked" })
	private void initSetUp(SessionHandle handle,
								IRequestParameterReadWrite param,
								String fixedText,
								String opeDate) throws RequestParameterException {
		printlnEjbLog("JKKStarChannelSetwariCC.initSetUp start");
		
		// CC-SCマッピングクラスのインスタンス生成
		this.mapper = new JKKStarChannelSetwariMapperCC(handle, param, opeDate);
		
		// ユーザデータ情報
		this.inMap = (HashMap<String, Object>) param.getData(fixedText);
		printlnEjbLog("fixedText=" + fixedText);
		
		// スターチャンネルセット割操作部品クラス用の作業領域
		this.ccWorkMap = new HashMap();
		this.ccWorkMap.put(OPE_DATE, opeDate);
		
		printlnEjbLog("JKKStarChannelSetwariCC.initSetUp end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>入力データをチェック.<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param handle セッションハンドル
	 * @param param  リクエストパラメータ
	 * @throws Throwable 
	 */
	private void chkInMap(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable {
		printlnEjbLog("JKKStarChannelSetwariCC.chkInMap start");
		
		// 機能コード
		setterWorkParam(JKKStarChannelSetwariCC.KEY_FUNC_CD, "0");
		List<String> funcCdList = Arrays.asList(CC_FUNC_CD_1, CC_FUNC_CD_2);
		setterWorkParamValue(JKKStarChannelSetwariCC.KEY_FUNC_CD, funcCdList);
		
		// 処理区分
		setterWorkParam(JKKStarChannelSetwariCC.KEY_TRN_DIV, "0");
		List<String> trnDivList = Arrays.asList(TRN_DIV_ADD, TRN_DIV_CANCEL);
		setterWorkParamValue(JKKStarChannelSetwariCC.KEY_TRN_DIV, trnDivList);
		
		//---------------------------
		// 必須チェック
		//---------------------------
		// サービス契約番号
		setterWorkParam(JKKStarChannelSetwariCC.KEY_SVC_KEI_NO, "0");
		
		String trnDiv = (String)this.ccWorkMap.get(JKKStarChannelSetwariCC.KEY_TRN_DIV);

		// SYSID
		setterWorkParam(JKKStarChannelSetwariCC.KEY_SYSID, "0");
		
		// 申込明細番号
		setterWorkParam(JKKStarChannelSetwariCC.KEY_MSKM_DTL_NO, "0");
		
		
		if(this.TRN_DIV_CANCEL.equals(trnDiv))
		{
			//-------------------------------------------------
			// キャンセルでの呼出しの場合は下記項目を必須とする
			//-------------------------------------------------
			// サービスキャンセル理由コード
			setterWorkParam(JKKStarChannelSetwariCC.KEY_SVC_CANCEL_RSN_CD, "0");
		}
		
		// 起算日
		setterWorkParam(JKKStarChannelSetwariCC.KEY_KISAN_YMD, "0");
		
		// 利用開始希望日
		setterWorkParam(JKKStarChannelSetwariCC.KEY_USE_STA_KIBO_YMD, "1");
		
		// 異動区分
		setterWorkParam(JKKStarChannelSetwariCC.KEY_IDO_DIV, "0");
		
		// 更新年月日時分秒（更新前）
		setterWorkParam(JKKStarChannelSetwariCC.KEY_KK0081_UPD_DTM, "0");
			
		printlnEjbLog("JKKStarChannelSetwariCC.chkInMap end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>keyに紐づく引数を内部mapへ保持<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  key 
	 * @throws CCException 
	 */
	private void setterWorkParam(String key, String nullDiv) throws CCException {
		
		String obj = (String) this.inMap.get(key);
		
		if (!JKKStringUtil.isNullBlank(obj) || "1".equals(nullDiv)) {
			printlnEjbLog(key + "=" + obj);
			this.ccWorkMap.put(key, obj);
		} else {
			printlnEjbLog(key + "=NULL");
			throw new CCException(key + "=NULL", new Exception());
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>keyに紐づく引数を内部mapへ保持<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  key 
	 * @throws CCException 
	 */
	private void setterWorkParamValue(String key, List valueList) throws CCException {
		
		String obj = (String) this.inMap.get(key);
		
		if(JKKStringUtil.isNullBlank(obj))
		{
			return;
		}
		
		if (!valueList.contains(obj)) {
			printlnEjbLog(key + "=対象外の値が設定されています");
			throw new CCException(key + "=対象外の値が設定されています", new Exception());
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>デバッグログを出力します<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	@SuppressWarnings("static-access")
	private void printlnEjbLog(Object dumpObj) {
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}
}
