/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JTUejbTU0091TKCK
*	ソースファイル名：JTUejbTU0091TKCK.java
*	作成者			：FJ
*	日付			：2011年03月31日
*＜機能概要＞
*	サービスインターフェイスの共通部を使用した判定処理に関する共通処理を提供するクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/03/31	FJ)楠神		新規作成
*	v4.00.00	2012/05/30	FJ)宮本		ANK-0398-00-00
*	v4.01.00	2012/08/7	FJ)宮本		TAI-2012-0000093
*
**********************************************************************/
package eo.ejb.common.itemrelation;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JTUStrConst;
import eo.ejb.cbs.cbsmsg.ETU0091C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0081D011CBSMsg;
import eo.ejb.common.JTUModelCommon;


/**
 * サービスインターフェイスの共通部を使用した判定処理に関する共通処理を提供するクラスです。<p>
 * <br>
 * @author FJ
 */
public class JTUejbTU0091TKCK
{

	/** 更新時の必須項目 */
	private static final 	String[] CHKKOMOKU_UPD = new String[]{
		ETU0091C010CBSMsg.NTT_TELNO
		, ETU0091C010CBSMsg.COMP_KOBET_FLG
		, ETU0091C010CBSMsg.JIJUBETS_FLG
		, ETU0091C010CBSMsg.DBLE_KEISAI_FLG
		, ETU0091C010CBSMsg.KEISAI_GUIDE_USE_CD
		, ETU0091C010CBSMsg.TEKKYO_DSP_CD
		, ETU0091C010CBSMsg.KEISAI_AD_DIV
		, ETU0091C010CBSMsg.KEISAI_INFO_GIJ_DSP_YH
		, ETU0091C010CBSMsg.KEISAI_AD_MAN_INPUT_FLG
		, ETU0091C010CBSMsg.KEISAI_AD_CD
		, ETU0091C010CBSMsg.KEISAI_PCD
		, ETU0091C010CBSMsg.KEISAI_STATE_NM
		, ETU0091C010CBSMsg.KEISAI_CITY_NM
		, ETU0091C010CBSMsg.SETPLACE_AD_MAN_INPUT_FLG
		, ETU0091C010CBSMsg.SETPLACE_AD_CD
		, ETU0091C010CBSMsg.SETPLACE_PCD
		, ETU0091C010CBSMsg.SETPLACE_STATE_NM
		, ETU0091C010CBSMsg.SETPLACE_CITY_NM
		, ETU0091C010CBSMsg.KEISAI_KANA_NM
		, ETU0091C010CBSMsg.KEISAI_NM
	};
	
	/** 登録時の必須項目 */
	private static final String[] CHKKOMOKU_INS = new String[]{
		ETU0081D011CBSMsg.COMP_KOBET_FLG
		, ETU0081D011CBSMsg.JIJUBETS_FLG
		, ETU0081D011CBSMsg.DBLE_KEISAI_FLG
		, ETU0081D011CBSMsg.KEISAI_GUIDE_USE_CD
		, ETU0081D011CBSMsg.TEKKYO_DSP_CD
		, ETU0081D011CBSMsg.KEISAI_AD_DIV
		, ETU0081D011CBSMsg.KEISAI_INFO_GIJ_DSP_YH
		, ETU0081D011CBSMsg.KEISAI_AD_MAN_INPUT_FLG
		, ETU0081D011CBSMsg.KEISAI_AD_CD
		, ETU0081D011CBSMsg.KEISAI_PCD
		, ETU0081D011CBSMsg.KEISAI_STATE_NM
		, ETU0081D011CBSMsg.KEISAI_CITY_NM
		, ETU0081D011CBSMsg.SETPLACE_AD_MAN_INPUT_FLG
		, ETU0081D011CBSMsg.SETPLACE_AD_CD
		, ETU0081D011CBSMsg.SETPLACE_PCD
		, ETU0081D011CBSMsg.SETPLACE_STATE_NM
		, ETU0081D011CBSMsg.SETPLACE_CITY_NM
		, ETU0081D011CBSMsg.KEISAI_KANA_NM
		, ETU0081D011CBSMsg.KEISAI_NM
	};
	
	/** 更新時のクリア項目 */
	private static final 	String[] NULLKOMOKU_UPD = new String[]{
		ETU0091C010CBSMsg.NTT_TELNO
		, ETU0091C010CBSMsg.KEI_TELNO
		, ETU0091C010CBSMsg.COMP_KOBET_FLG
		, ETU0091C010CBSMsg.JIJUBETS_FLG
		, ETU0091C010CBSMsg.DBLE_KEISAI_FLG
		, ETU0091C010CBSMsg.KEISAI_GUIDE_USE_CD
		, ETU0091C010CBSMsg.TEKKYO_DSP_CD
		, ETU0091C010CBSMsg.KEISAI_AD_DIV
		, ETU0091C010CBSMsg.KEISAI_INFO_GIJ_DSP_YH
		, ETU0091C010CBSMsg.KEISAI_AD_MAN_INPUT_FLG
		, ETU0091C010CBSMsg.KEISAI_AD_CD
		, ETU0091C010CBSMsg.KEISAI_PCD
		, ETU0091C010CBSMsg.KEISAI_STATE_NM
		, ETU0091C010CBSMsg.KEISAI_CITY_NM
		, ETU0091C010CBSMsg.KEISAI_OAZTSU_NM
		, ETU0091C010CBSMsg.KEISAI_AZCHO_NM
		, ETU0091C010CBSMsg.KEISAI_AD_BNCHIGO
		, ETU0091C010CBSMsg.KEISAI_ADRTTM
		, ETU0091C010CBSMsg.KEISAI_ADRRM
		, ETU0091C010CBSMsg.SETPLACE_AD_MAN_INPUT_FLG
		, ETU0091C010CBSMsg.SETPLACE_AD_CD
		, ETU0091C010CBSMsg.SETPLACE_PCD
		, ETU0091C010CBSMsg.SETPLACE_STATE_NM
		, ETU0091C010CBSMsg.SETPLACE_CITY_NM
		, ETU0091C010CBSMsg.SETPLACE_OAZTSU_NM
		, ETU0091C010CBSMsg.SETPLACE_AZCHO_NM
		, ETU0091C010CBSMsg.SETPLACE_BNCHIGO
		, ETU0091C010CBSMsg.SETPLACE_ADRTTM
		, ETU0091C010CBSMsg.SETPLACE_ADRRM
		, ETU0091C010CBSMsg.KEISAI_KANA_NM
		, ETU0091C010CBSMsg.KEISAI_NM
		, ETU0091C010CBSMsg.KEISAI_NM_APPDX
		, ETU0091C010CBSMsg.DNWACHO_DSP_KISN_SKBT_CD
		, ETU0091C010CBSMsg.FREE_TEIGI_KMK
		, ETU0091C010CBSMsg.DNRYAK_SYMBOL
		, ETU0091C010CBSMsg.KIJIRAN
	};
	
	/** 登録時のクリア項目 */
	private static final String[] NULLKOMOKU_INS = new String[]{
		ETU0081D011CBSMsg.KEI_TELNO
		, ETU0081D011CBSMsg.COMP_KOBET_FLG
		, ETU0081D011CBSMsg.JIJUBETS_FLG
		, ETU0081D011CBSMsg.DBLE_KEISAI_FLG
		, ETU0081D011CBSMsg.KEISAI_GUIDE_USE_CD
		, ETU0081D011CBSMsg.TEKKYO_DSP_CD
		, ETU0081D011CBSMsg.KEISAI_AD_DIV
		, ETU0081D011CBSMsg.KEISAI_AD_MAN_INPUT_FLG
		, ETU0081D011CBSMsg.KEISAI_AD_CD
		, ETU0081D011CBSMsg.KEISAI_PCD
		, ETU0081D011CBSMsg.KEISAI_STATE_NM
		, ETU0081D011CBSMsg.KEISAI_CITY_NM
		, ETU0081D011CBSMsg.KEISAI_OAZTSU_NM
		, ETU0081D011CBSMsg.KEISAI_AZCHO_NM
		, ETU0081D011CBSMsg.KEISAI_AD_BNCHIGO
		, ETU0081D011CBSMsg.KEISAI_ADRTTM
		, ETU0081D011CBSMsg.KEISAI_ADRRM
		, ETU0081D011CBSMsg.SETPLACE_AD_MAN_INPUT_FLG
		, ETU0081D011CBSMsg.SETPLACE_AD_CD
		, ETU0081D011CBSMsg.SETPLACE_PCD
		, ETU0081D011CBSMsg.SETPLACE_STATE_NM
		, ETU0081D011CBSMsg.SETPLACE_CITY_NM
		, ETU0081D011CBSMsg.SETPLACE_OAZTSU_NM
		, ETU0081D011CBSMsg.SETPLACE_AZCHO_NM
		, ETU0081D011CBSMsg.SETPLACE_BNCHIGO
		, ETU0081D011CBSMsg.SETPLACE_ADRTTM
		, ETU0081D011CBSMsg.SETPLACE_ADRRM
		, ETU0081D011CBSMsg.KEISAI_KANA_NM
		, ETU0081D011CBSMsg.KEISAI_NM
		, ETU0081D011CBSMsg.DNRYAK_SYMBOL
		, ETU0081D011CBSMsg.KEISAI_NM_APPDX
		, ETU0081D011CBSMsg.KIJIRAN
		, ETU0081D011CBSMsg.KEISAI_INFO_GIJ_DSP_YH
		, ETU0081D011CBSMsg.DNWACHO_DSP_KISN_SKBT_CD
		, ETU0081D011CBSMsg.FREE_TEIGI_KMK
	};
	
	
	
	/**
	 * 電話帳申込内容内容変更時条件必須
	 * @param inCBSMsg
	 * @param inContext
	 * @return boolean
	 */
	public static boolean isExistsChkWithRuleForUp(CAANMsg inCBSMsg, AgentDispatchContext inContext) 
	{
			return isExistsChkWithRule(inCBSMsg, CHKKOMOKU_UPD, NULLKOMOKU_UPD);
	}
	
	/**
	 * 電話帳申込内容登録時条件必須
	 * (未使用)
	 * @param inCBSMsg
	 * @param inContext
	 * @return boolean
	 */
	public static boolean isExistsChkWithRuleForIs(CAANMsg inCBSMsg, AgentDispatchContext inContext) 
	{
		return isExistsChkWithRule(inCBSMsg, CHKKOMOKU_INS, NULLKOMOKU_INS);
	}
	
	/**
	 * 電話帳申込内容登録時条件必須(新旧フラグ)
	 * @param inCBSMsg
	 * @param inContext
	 * @param no_flg
	 * @return boolean
	 */
	public static boolean isExistsChkWithRuleForIs(CAANMsg inCBSMsg, AgentDispatchContext inContext, Object no_flg) 
	{
		return isExistsChkWithRule(inCBSMsg, CHKKOMOKU_INS, NULLKOMOKU_INS, (String)no_flg);
	}


	/**
	 * 電話帳申込内容条件必須
	 * @param inCBSMsg
	 * @param chkKomoku
	 * @param nullKomoku
	 * @return boolean
	 */
	private static boolean isExistsChkWithRule(CAANMsg inCBSMsg, String[] chkKomoku, String[] nullKomoku)
	{
		//処理パターン(@：true、A：false)
		boolean patern = true;
		
		//電話帳申込異動内容コード
		String naiyoCd = inCBSMsg.getString(ETU0091C010CBSMsg.DNWACHOMSK_IDO_NAIYO_CD);
		
		//電話帳申込内容新旧フラグ
		String noFlg = inCBSMsg.getString(ETU0091C010CBSMsg.DNWACHOMSK_NEW_OLD_FLG);
		
		if(!JTUStrConst.NEW_DATA.equals(noFlg) && !JTUStrConst.OLD_DATA.equals(noFlg))
		{
			return false;
		}
		
		if(!JTUStrConst.RQNY_ADD.equals(naiyoCd) && !JTUStrConst.RQNY_CHG.equals(naiyoCd) 
				&& !JTUStrConst.RQNY_DEL.equals(naiyoCd))
		{
			return false;
		}
		
		//「1：登録」かつ「1：旧」の場合、「3：削除」かつ「0：新」の場合は各項目がnullの場合、
		//処理パターンをfalseにする
		
		if(JTUStrConst.RQNY_ADD.equals(naiyoCd) && JTUStrConst.OLD_DATA.equals(noFlg))
		{
			patern = false;
		}
		else if(JTUStrConst.RQNY_DEL.equals(naiyoCd) && JTUStrConst.NEW_DATA.equals(noFlg))
		{
			patern = false;
		}
		
		if(patern)
		{
			for(String komoku : chkKomoku)
			{
				//NULLチェックの結果と一致するものが一つでもあればエラー
				if(JTUModelCommon.isNull(inCBSMsg.getString(komoku)) == patern)
				{
					return false;
				}
			}
		}
		else
		{
			for(String komoku : nullKomoku)
			{
				//NULLチェックの結果と一致するものが一つでもあればエラー
				if(JTUModelCommon.isNull(inCBSMsg.getString(komoku)) == patern)
				{
					return false;
				}
			}
		}
		return true;
	}
	
	/**
	 * 電話帳申込内容条件必須
	 * @param inCBSMsg
	 * @param chkKomoku
	 * @param nullKomoku
	 * @param noFlg
	 * @return boolean
	 */
	private static boolean isExistsChkWithRule(CAANMsg inCBSMsg, String[] chkKomoku, String[] nullKomoku, String noFlg)
	{
		//処理パターン(@：true、A：false)
		boolean patern = true;
		
		//電話帳申込異動内容コード
		String naiyoCd = inCBSMsg.getString(ETU0081D011CBSMsg.DNWACHOMSK_IDO_NAIYO_CD);
		
		if(!JTUStrConst.NEW_DATA.equals(noFlg) && !JTUStrConst.OLD_DATA.equals(noFlg))
		{
			return false;
		}
		
		if(!JTUStrConst.RQNY_ADD.equals(naiyoCd) && !JTUStrConst.RQNY_CHG.equals(naiyoCd) 
				&& !JTUStrConst.RQNY_DEL.equals(naiyoCd))
		{
			return false;
		}
		
		//「1：登録」かつ「1：旧」の場合、「3：削除」かつ「0：新」の場合は各項目がnullの場合、
		//処理パターンをfalseにする
		
		if(JTUStrConst.RQNY_ADD.equals(naiyoCd) && JTUStrConst.OLD_DATA.equals(noFlg))
		{
			patern = false;
		}
		else if(JTUStrConst.RQNY_DEL.equals(naiyoCd) && JTUStrConst.NEW_DATA.equals(noFlg))
		{
			patern = false;
		}
		
		if(patern)
		{
			for(String komoku : chkKomoku)
			{
				//NULLチェックの結果と一致するものが一つでもあればエラー
				if(JTUModelCommon.isNull(inCBSMsg.getString(komoku)) == patern)
				{
					return false;
				}
			}
		}
		else
		{
			for(String komoku : nullKomoku)
			{
				//NULLチェックの結果と一致するものが一つでもあればエラー
				if(JTUModelCommon.isNull(inCBSMsg.getString(komoku)) == patern)
				{
					return false;
				}
			}
		}
		return true;
	}
}
