/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JECK0011C200ETDA
*	ソースファイル名：JECK0011C200ETDA.java
*	作成者			：富士通
*	日付			：2013年12月11日
*＜機能概要＞
*	お客様情報更新(MVNO用)時の副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v8.00.00	2013/12/11	富士通		新規作成
*	v8.00.01	2014/02/07	FJ）宇野	ST-2014-0000045
*	v8.00.02	2014/02/12	FJ）宇野	ST-2014-0000045(お客様スキーマ登録年月日時分秒から無効フラグを修正)
*	v8.00.03	2014/02/13	FJ）宇野	IT1-2014-0000072
*	v8.00.04	2014/02/28	FJ）宇野	ST-2014-0000065(法人連絡先、連絡先スキーマの世代登録年月日修正)	
*	v17.00.00	2015/08/07	FJ）宇野	【ANK-2417-00-00】関電GCRMに伴う既存会員対応
*	v37.00.00	2018/06/28	FJ) 河邊	【ANK-3424-00-00】IBUKI→eoお客様情報更新IFの改修
*
**********************************************************************/

package eo.ejb.common.db;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.CK0021ETMsg;
import eo.ejb.cbm.entity.CK0031ETMsg;
import eo.ejb.cbm.entity.CK0041ETMsg;
import eo.ejb.cbm.entity.CK0041LE;
import eo.ejb.cbm.entity.CK0201ETMsg;
import eo.ejb.cbm.entity.CK0201LE;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C200CBSMsg;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.JSYejbSysDate;

/**
 * <p>
 * お客様情報更新(MVNO用)の副次処理を行う部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECK0011C200ETDA implements TemplateMainHandler
{
// ANK-3424-00-00 2018/06/28 ADD START
	/** 日付形式(日時) */
	private static final String TYPE_DTM = "YYYYMMDDHHMMSSSSS";
// ANK-3424-00-00 2018/06/28 ADD END
	
	/**
	 * <p>
	 * お客様情報更新(MVNO用)の副次処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void execDBAccess(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		String sysId = inCBSMsg.getString(ECK0011C200CBSMsg.SYSID);
		
		// お客様のカレントレコードを取得
		JCKejbCK0011DBABase ck0011Dba = new JCKejbCK0011DBABase();
		CAANMsg retCK0011Msg = ck0011Dba.getCK0011Current(sysId, JCKModelCommon.getOpeDate(inCBSMsg));
		
		// 世代を退避
		String geneAddDtmOld = retCK0011Msg.getString(CK0011ETMsg.GENE_ADD_DTM);
		
		// 契約者タイプコードが個人、または法人の場合のみ登録する
		if (JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.KEISHA_TYPE_CD))
				|| JKKModelConst.KEISHA_TYPE_CD_HOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.KEISHA_TYPE_CD)))
		{
			// お客様登録
			createCK0011(inCBSMsg, inContext, retCK0011Msg);
			
			// サブタイプ登録
			if (JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.KEISHA_TYPE_CD)))
			{
				// お客様<個人>登録
				createCK0021(inCBSMsg, inContext, geneAddDtmOld);
			}
			else if (JKKModelConst.KEISHA_TYPE_CD_HOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.KEISHA_TYPE_CD)))
			{
				// お客様<法人>登録
				createCK0031(inCBSMsg, inContext, geneAddDtmOld);
				// 法人連絡先登録
				createCK0041(inCBSMsg, inContext);
			}
			// 連絡先登録
			createCK0201(inCBSMsg, inContext);
		}
	}

	/**
	 * <p>
	 * お客様登録処理のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	private void createCK0011(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retCK0011Msg)
	{
		// SYSID
		retCK0011Msg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		// 世代登録年月日時分秒
// ANK-3424-00-00 2018/06/28 MOD START
//		retCK0011Msg.set(CK0011ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		String geneAddDtmOld = retCK0011Msg.getString(CK0011ETMsg.GENE_ADD_DTM);
		retCK0011Msg.set(CK0011ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext, geneAddDtmOld));
// ANK-3424-00-00 2018/06/28 MOD END
		// お客様名
		retCK0011Msg.set(CK0011ETMsg.CUST_NM, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_NM));
		// お客様カナ名
		retCK0011Msg.set(CK0011ETMsg.CUST_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_KANA));
		// お客様性別コード
		retCK0011Msg.set(CK0011ETMsg.CUST_SEX_CD, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_SEX_CD));
		// お客様生年月日
		retCK0011Msg.set(CK0011ETMsg.CUST_BIRTHD, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_BIRTHD));
		// 契約者住所コード
		retCK0011Msg.set(CK0011ETMsg.KEISHA_AD_CD, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_AD_CD));
		// 契約者郵便番号
		retCK0011Msg.set(CK0011ETMsg.KEISHA_PCD, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_PCD));
		// 契約者都道府県名
		retCK0011Msg.set(CK0011ETMsg.KEISHA_STATE_NM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_STATE_NM));
		// 契約者市区町村名
		retCK0011Msg.set(CK0011ETMsg.KEISHA_CITY_NM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_CITY_NM));
		// 契約者大字通称名
		retCK0011Msg.set(CK0011ETMsg.KEISHA_OAZTSU_NM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_OAZTSU_NM));
		// 契約者字丁目名
		retCK0011Msg.set(CK0011ETMsg.KEISHA_AZCHO_NM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_AZCHO_NM));
		// 契約者番地号
		retCK0011Msg.set(CK0011ETMsg.KEISHA_BNCHIGO, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_BNCHIGO));
		// 契約者住所補記・建物名
		retCK0011Msg.set(CK0011ETMsg.KEISHA_ADRTTM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_ADRTTM));
		// 契約者住所補記・部屋番号
		retCK0011Msg.set(CK0011ETMsg.KEISHA_ADRRM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_ADRRM));
		// 契約者住所手動入力フラグ
		retCK0011Msg.set(CK0011ETMsg.KEISHA_AD_MAN_INPUT_FLG, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_AD_MAN_INPUT_FLG));
		// 契約者電話番号
		retCK0011Msg.set(CK0011ETMsg.KEISHA_TELNO, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_TELNO));
		
		// 会員種別がマスター会員（個人)の場合
		// (※会員種別がマスター会員（個人)以外の場合はカレント引継)
		if (JKKModelConst.MEMBER_SBT_CD_MASTER_KOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.MEMBER_SBT_CD)))
		{
			// 同一SYSIDのサービス契約スキーマの料金プランコード「標準コンテンツ用」のレコードが存在するか判定
			if (isExistTargetPPlan(inCBSMsg, inContext))
			{
				// コンテンツお客様名
				retCK0011Msg.set(CK0011ETMsg.CONT_CUST_NM, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_NM));
				// コンテンツお客様カナ名
				retCK0011Msg.set(CK0011ETMsg.CONT_CUST_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_KANA));
				// コンテンツお客様性別コード
				retCK0011Msg.set(CK0011ETMsg.CONT_CUST_SEX_CD, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_SEX_CD));
				// コンテンツお客様生年月日
				retCK0011Msg.set(CK0011ETMsg.CONT_CUST_BIRTHD, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_BIRTHD));
				// コンテンツ郵便番号
				retCK0011Msg.set(CK0011ETMsg.CONT_PCD, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_PCD));
				
				// コンテンツ番地号
				// 契約者都道府県名 + 契約者市区町村名 + 契約者大字通称名 + 契約者字丁目名 + 契約者番地号
				// ※null文字が存在した場合、""に置き換える
				String keisyaStateNm = this.blankConv(inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_STATE_NM));
				String keisyaCityNm = this.blankConv(inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_CITY_NM));
				String keisyaOaztsuNm = this.blankConv(inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_OAZTSU_NM));
				String keisyaAzchoNm = this.blankConv(inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_AZCHO_NM));
				String keisyaBnchigo = this.blankConv(inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_BNCHIGO));
				retCK0011Msg.set(CK0011ETMsg.CONT_BNCHIGO, keisyaStateNm + keisyaCityNm + keisyaOaztsuNm + keisyaAzchoNm + keisyaBnchigo);
				
				// コンテンツ住所補記・建物名
				retCK0011Msg.set(CK0011ETMsg.CONT_ADRTTM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_ADRTTM));
				
				// コンテンツ住所補記・部屋番号
				retCK0011Msg.set(CK0011ETMsg.CONT_ADRRM, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_ADRRM));
				
				// コンテンツ住所分割開始位置
				// 契約者都道府県名、契約者市区町村名の文字数＋1
				String contAdBnktStaPst = keisyaStateNm + keisyaCityNm;
				
				retCK0011Msg.set(CK0011ETMsg.CONT_AD_BNKT_STA_PST, Integer.toString(contAdBnktStaPst.length() + 1));
			}
			
		}
		
// v17.00.00 2015/08/07 Add Start
		// 会員種別がオープン会員またはファミリー会員の場合
		if (JKKModelConst.MEMBER_SBT_CD_OPEN.equals(retCK0011Msg.getString(CK0011ETMsg.MEMBER_SBT_CD)) 
			|| JKKModelConst.MEMBER_SBT_CD_FAMILY_KOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.MEMBER_SBT_CD)) 
			|| JKKModelConst.MEMBER_SBT_CD_FAMILY_HOJIN.equals(retCK0011Msg.getString(CK0011ETMsg.MEMBER_SBT_CD)))
		{
			// 関電G個人情報取扱同意有無がNULL（未聴取）の場合
			if (retCK0011Msg.getString(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_UM) == null 
				|| "".equals(retCK0011Msg.getString(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_UM)))
			{
				// 関電G個人情報取扱同意有無 ← 1:有
				retCK0011Msg.set(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_UM, "1");
				// 関電G個人情報取扱同意年月日 ← 
				retCK0011Msg.set(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
				// 関電G個人情報提供不可フラグ ← 0:可
				retCK0011Msg.set(CK0011ETMsg.KEPG_KJNIFT_FFG, "0");
				// 関電G個人情報提供不可フラグ変更年月日 ← 運用日
				retCK0011Msg.set(CK0011ETMsg.KEPG_KJNIFT_FFG_CHG_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
				// 関電G個人情報提供不可フラグ変更受付方法コード ← NULL
				retCK0011Msg.setNull(CK0011ETMsg.KEPG_KJNIFT_FFG_CHG_UWY_CD);
			}
		}
// v17.00.00 2015/08/07 Add End
		
		// 予約適用年月日
		retCK0011Msg.set(CK0011ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
		// 予約適用コード
		retCK0011Msg.set(CK0011ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);
		// 登録年月日時分秒	ADD_DTM
		retCK0011Msg.set(CK0011ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント	ADD_OPEACNT
		retCK0011Msg.set(CK0011ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
// ANK-3424-00-00 2018/06/28 ADD START
		// オペレーション時間
		String opeTime = inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY);
		String upDtmBf = retCK0011Msg.getString(CK0011ETMsg.UPD_DTM);
		
		int waitTime;
		
		try{
			waitTime = Integer.parseInt(JCCModelCommon.getApplicationConst("MVNO_WAIT_TIME"));
		}
		catch (NumberFormatException e){
			waitTime = 0;
		}
		
		while (true)
		{
			if (opeTime.compareTo(upDtmBf) > 0)
			{
				// オペレーション時間が更新前の更新年月日時分秒より未来の場合
				break;
			}
			
			try
			{
				// １秒待機
				Thread.sleep(waitTime);
			}
			catch (InterruptedException e)
			{
				throw new RuntimeException(e);
			}
			
			// オペレーション時間を再設定する
			opeTime = JSYejbSysDate.getDate(TYPE_DTM);
		}
		inCBSMsg.set(JCMConstants.OPERATE_DATETIME_KEY, opeTime);
// ANK-3424-00-00 2018/06/28 ADD END
		// 更新年月日時分秒	UPD_DTM
		retCK0011Msg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント	UPD_OPEACNT
		retCK0011Msg.set(CK0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 削除年月日時分秒
		retCK0011Msg.setNull(CK0011ETMsg.DEL_DTM);
		// 削除オペレータアカウント
		retCK0011Msg.setNull(CK0011ETMsg.DEL_OPEACNT);
		// 無効フラグ	MK_FLG
		retCK0011Msg.set(CK0011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		
		// お客様登録
		JKKejbDBAUtil dba = new JKKejbDBAUtil(inCBSMsg);
		dba.create(retCK0011Msg);
	}

	/**
	 * <p>
	 * お客様<個人>登録処理のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param geneAddDtmOld 世代登録年月日時分秒
	 */
	private void createCK0021(CAANMsg inCBSMsg, AgentDispatchContext inContext, String geneAddDtmOld)
	{
		// お客様<個人>をプライマリキーで検索
		CAANMsg priMsgCK0021 = new CAANMsg(CK0021ETMsg.class.getName());
		priMsgCK0021.set(CK0021ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		priMsgCK0021.set(CK0021ETMsg.GENE_ADD_DTM, geneAddDtmOld);
		CAANMsg retCK0021Msg = new JCKejbCK0021DBABase().findByPrimaryKey(priMsgCK0021);

		// SYSID
		retCK0021Msg.set(CK0021ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		// 世代登録年月日時分秒
		retCK0021Msg.set(CK0021ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		// 親権者名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_NM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_NM));
		// 親権者カナ名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_KANA));
		// 親権者生年月日
		retCK0021Msg.set(CK0021ETMsg.SKSHA_BIRTHD, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_BIRTHD));
		// 親権者続柄コード
		retCK0021Msg.set(CK0021ETMsg.SKSHA_ZOKUGARA_CD, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_ZOKUGARA_CD));
		// 続柄その他
		retCK0021Msg.set(CK0021ETMsg.ZOKUGARA_OTHER, inCBSMsg.getString(ECK0011C200CBSMsg.ZOKUGARA_OTHER));
		// 親権者住所コード
		retCK0021Msg.set(CK0021ETMsg.SKSHA_AD_CD, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_AD_CD));
		// 親権者郵便番号
		retCK0021Msg.set(CK0021ETMsg.SKSHA_PCD, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_PCD));
		// 親権者都道府県名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_STATE_NM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_STATE_NM));
		// 親権者市区町村名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_CITY_NM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_CITY_NM));
		// 親権者大字通称名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_OAZTSU_NM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_OAZTSU_NM));
		// 親権者字丁目名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_AZCHO_NM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_AZCHO_NM));
		// 親権者住所番地号
		retCK0021Msg.set(CK0021ETMsg.SKSHA_AD_BNCHIGO, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_AD_BNCHIGO));
		// 親権者住所補記・建物名
		retCK0021Msg.set(CK0021ETMsg.SKSHA_ADRTTM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_ADRTTM));
		// 親権者住所補記・部屋番号
		retCK0021Msg.set(CK0021ETMsg.SKSHA_ADRRM, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_ADRRM));
		// 親権者住所手動入力フラグ
		retCK0021Msg.set(CK0021ETMsg.SKSHA_AD_MAN_INPUT_FLG, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_AD_MAN_INPUT_FLG));
		// 親権者電話番号
		retCK0021Msg.set(CK0021ETMsg.SKSHA_TELNO, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_TELNO));
		// 予約適用コード
		retCK0021Msg.set(CK0021ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);

		// 登録年月日時分秒	ADD_DTM
		retCK0021Msg.set(CK0021ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント	ADD_OPEACNT
		retCK0021Msg.set(CK0021ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 更新年月日時分秒	UPD_DTM
		retCK0021Msg.set(CK0021ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント	UPD_OPEACNT
		retCK0021Msg.set(CK0021ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 削除年月日時分秒
		retCK0021Msg.setNull(CK0021ETMsg.DEL_DTM);
		// 削除オペレータアカウント
		retCK0021Msg.setNull(CK0021ETMsg.DEL_OPEACNT);
		// 無効フラグ	MK_FLG
		retCK0021Msg.set(CK0021ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		
		// お客様<個人>登録
		JKKejbDBAUtil dba = new JKKejbDBAUtil(inCBSMsg);
		dba.create(retCK0021Msg);
	}

	/**
	 * <p>
	 * お客様<法人>登録処理のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param geneAddDtmOld 世代登録年月日時分秒
	 */
	private void createCK0031(CAANMsg inCBSMsg, AgentDispatchContext inContext, String geneAddDtmOld)
	{

		// 名寄せ元のお客様<法人>を名寄せ元のお客様のプライマリキーで検索
		CAANMsg priMsgCK0031 = new CAANMsg(CK0031ETMsg.class.getName());
		priMsgCK0031.set(CK0031ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		priMsgCK0031.set(CK0031ETMsg.GENE_ADD_DTM, geneAddDtmOld);
		CAANMsg retCK0031Msg = new JCKejbCK0031DBABase().findByPrimaryKey(priMsgCK0031);

		// SYSID
		retCK0031Msg.set(CK0031ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		// 世代登録年月日時分秒
		retCK0031Msg.set(CK0031ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		// 法人格種別コード
		retCK0031Msg.set(CK0031ETMsg.HOJIN_SBT_CD, inCBSMsg.getString(ECK0011C200CBSMsg.HOJIN_SBT_CD));
		// 法人格前後指定コード
		retCK0031Msg.set(CK0031ETMsg.HOJIN_ZENGO_SHITEI_CD, inCBSMsg.getString(ECK0011C200CBSMsg.HOJIN_ZENGO_SHITEI_CD));
		// 会社名
		retCK0031Msg.set(CK0031ETMsg.COMP_NM, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_NM));
		// 会社カナ名
		retCK0031Msg.set(CK0031ETMsg.COMP_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.CUST_KANA));
		// 代表者名
		retCK0031Msg.set(CK0031ETMsg.DIHYSHA_NM, inCBSMsg.getString(ECK0011C200CBSMsg.DIHYSHA_NM));
		// 代表者カナ名
		retCK0031Msg.set(CK0031ETMsg.DIHYSHA_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.DIHYSHA_KANA));
		// 予約適用コード
		retCK0031Msg.set(CK0031ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);
		// 業種コード
		retCK0031Msg.set(CK0031ETMsg.GSHU_CD, inCBSMsg.getString(ECK0011C200CBSMsg.GSHU_CD));

		// 登録年月日時分秒	ADD_DTM
		retCK0031Msg.set(CK0031ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント	ADD_OPEACNT
		retCK0031Msg.set(CK0031ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 更新年月日時分秒	UPD_DTM
		retCK0031Msg.set(CK0031ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント	UPD_OPEACNT
		retCK0031Msg.set(CK0031ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 削除年月日時分秒	DEL_DTM
		retCK0031Msg.setNull(CK0031ETMsg.DEL_DTM);
		// 削除オペレータアカウント	DEL_OPEACNT
		retCK0031Msg.setNull(CK0031ETMsg.DEL_OPEACNT);
		// 無効フラグ	MK_FLG
		retCK0031Msg.set(CK0031ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		
		// お客様<法人>登録
		JKKejbDBAUtil dba = new JKKejbDBAUtil(inCBSMsg);
		dba.create(retCK0031Msg);
	}

	/**
	 * <p>
	 * 法人連絡先登録処理のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	private void createCK0041(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgCK0041 = new CAANMsg(CK0041ETMsg.class.getName());
		condMsgCK0041.set(CK0041ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		condMsgCK0041.set(CK0041ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		CAANMsg[] retConMsg = null;
		try
		{
			retConMsg = new CK0041LE().findByCondition(condMsgCK0041);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		String primaryKey = null;
		HashMap<String, String> escapeMap = new HashMap<String, String>();

		// 連絡先コード毎に登録
		for (int i = 0; i < retConMsg.length; i++)
		{
			// プライマリキーを取得
			primaryKey = retConMsg[i].getString(CK0041ETMsg.RRKS_CD);

			if (!escapeMap.containsKey(primaryKey))
			{
				// 初検索の場合
				escapeMap.put(primaryKey, null);

				CAANMsg curMsgCK0041 = new CAANMsg(CK0041ETMsg.class.getName());
				curMsgCK0041.set(CK0041ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
				curMsgCK0041.set(CK0041ETMsg.RRKS_CD, primaryKey);
				CAANMsg retCK0041Msg = new JCKejbCK0041DBABase().findByCurrent(curMsgCK0041);
				if (null != retCK0041Msg)
				{
					// SYSID
					retCK0041Msg.set(CK0041ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
					// 世代登録年月日時分秒
					retCK0041Msg.set(CK0041ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
					// 法人連絡先担当者名
					retCK0041Msg.set(CK0041ETMsg.HJRRKS_TNTSHA_NM, inCBSMsg.getString(ECK0011C200CBSMsg.HJRRKS_TNTSHA_NM));
					// 法人連絡先担当者カナ名
					retCK0041Msg.set(CK0041ETMsg.HJRRKS_TNTSHA_KANA, inCBSMsg.getString(ECK0011C200CBSMsg.HJRRKS_TNTSHA_KANA));
					// 法人連絡先担当者所属部署名
					retCK0041Msg.set(CK0041ETMsg.HJRRKS_TNTSHA_SHOZKBSHO_NM, inCBSMsg.getString(ECK0011C200CBSMsg.HJRRKS_TNTSHA_SHOZKBSHO_NM));

					// 登録年月日時分秒
					retCK0041Msg.set(CK0041ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					// 登録オペレータアカウント
					retCK0041Msg.set(CK0041ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					// 更新年月日時分秒
					retCK0041Msg.set(CK0041ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					// 更新オペレータアカウント
					retCK0041Msg.set(CK0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					// 削除年月日時分秒
					retCK0041Msg.setNull(CK0041ETMsg.DEL_DTM);
					// 削除オペレータアカウント
					retCK0041Msg.setNull(CK0041ETMsg.DEL_OPEACNT);
					// 無効フラグ
					retCK0041Msg.set(CK0041ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

					// 法人連絡先登録
					JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
					dbaUtil.create(retCK0041Msg);
				}
			}
		}
	}

	/**
	 * <p>
	 * 連絡先登録処理のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	private void createCK0201(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgCK0201 = new CAANMsg(CK0201ETMsg.class.getName());
		condMsgCK0201.set(CK0201ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
		condMsgCK0201.set(CK0201ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		CAANMsg[] retConMsg = null;
		try
		{
			retConMsg = new CK0201LE().findByCondition(condMsgCK0201);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		String primaryKey = null;
		HashMap<String, String> escapeMap = new HashMap<String, String>();
		
		// 登録用
		ArrayList<HashMap<String, String>> createlist = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> inMap = null;
		
		// サービスIF項目
		String keishaRrksMlad = inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_RRKS_MLAD);
		String keishaRrksKtaiTelno = inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_RRKS_KTAI_TELNO);
		String keishaRrksTelno = inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_RRKS_TELNO);
		String keishaRrksNisnno = inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_RRKS_NISNNO);
		
		boolean update_flg    = false;
		boolean updmlad_flg   = false;
		boolean updtel2_flg   = false;
		boolean updtel5_flg   = false;
		boolean updnisnno_flg = false;

		// 連絡先番号毎に登録
		for (int i = 0; i < retConMsg.length; i++)
		{
			// プライマリキーを取得
			primaryKey = retConMsg[i].getString(CK0201ETMsg.RRKS_NO);
			
			if (!escapeMap.containsKey(primaryKey))
			{
				// 初検索の場合
				escapeMap.put(primaryKey, null);
				
				CAANMsg curMsgCK0201 = new CAANMsg(CK0201ETMsg.class.getName());
				curMsgCK0201.set(CK0201ETMsg.RRKS_NO, primaryKey);
				curMsgCK0201.set(CK0201ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
				CAANMsg retCK0201Msg = new JCKejbCK0201DBABase().findByCurrent(curMsgCK0201);
				if (null != retCK0201Msg)
				{
					
					// データ更新フラグを初期化する
					update_flg = false;
					
					// 連絡方法コード
					String rrkWayCd = retCK0201Msg.getString(CK0201ETMsg.RRK_WAY_CD);
					// 連絡先種別コード
					String rrksSbtCd = retCK0201Msg.getString(CK0201ETMsg.RRKS_SBT_CD);
					
					// @「契約者連絡先メールアドレス」更新時：連絡方法コード"メールアドレス"、連絡先種別コード"その他"のレコードを更新
					if (JKKModelConst.RRK_WAY_CD_MLAD.equals(rrkWayCd) && JKKModelConst.RRKS_SBT_CD_OTHER.equals(rrksSbtCd))
					{
						if (keishaRrksMlad != null)
						{
							if (!keishaRrksMlad.equals(retCK0201Msg.getString(CK0201ETMsg.MLAD)))
							{
								retCK0201Msg.set(CK0201ETMsg.MLAD, keishaRrksMlad);
								update_flg = true;
							}
						}
						else
						{
							if (retCK0201Msg.getString(CK0201ETMsg.MLAD) != null)
							{
								retCK0201Msg.setNull(CK0201ETMsg.MLAD);
								update_flg = true;
							}
						}
						updmlad_flg = true;
					}
					
					// A「契約者連絡先携帯電話番号」更新時：連絡方法コード"電話番号"、連絡先種別コード"携帯"のレコードを更新
					else if (JKKModelConst.RRK_WAY_CD_TELNO.equals(rrkWayCd) && JKKModelConst.RRKS_SBT_CD_KTAI.equals(rrksSbtCd))
					{
						if (keishaRrksKtaiTelno != null)
						{
							if (!keishaRrksKtaiTelno.equals(retCK0201Msg.getString(CK0201ETMsg.TELNO)))
							{
								retCK0201Msg.set(CK0201ETMsg.TELNO, keishaRrksKtaiTelno);
								update_flg = true;
							}
						}
						else
						{
							if (retCK0201Msg.getString(CK0201ETMsg.TELNO) != null)
							{
								retCK0201Msg.setNull(CK0201ETMsg.TELNO);
								update_flg = true;
							}
						}
						updtel2_flg = true;

					}
					// B「契約者連絡先電話番号」更新時：連絡方法コード"電話番号"、連絡先種別コード"その他"のレコードを更新
					else if (JKKModelConst.RRK_WAY_CD_TELNO.equals(rrkWayCd) && JKKModelConst.RRKS_SBT_CD_OTHER.equals(rrksSbtCd))
					{
						if (keishaRrksTelno != null)
						{
							if (!keishaRrksTelno.equals(retCK0201Msg.getString(CK0201ETMsg.TELNO)))
							{
								retCK0201Msg.set(CK0201ETMsg.TELNO, keishaRrksTelno);
								update_flg = true;
							}
						}
						else
						{
							if (retCK0201Msg.getString(CK0201ETMsg.TELNO) != null)
							{
								retCK0201Msg.setNull(CK0201ETMsg.TELNO);
								update_flg = true;
							}
						}
						updtel5_flg = true;
					}
					// C「契約者連絡先内線番号更新時：連絡方法コード"内線番号"、連絡先種別コード"勤務先"のレコードを更新
					else if (JKKModelConst.RRK_WAY_CD_NISNNO.equals(rrkWayCd) && JKKModelConst.RRKS_SBT_CD_OFFC.equals(rrksSbtCd))
					{
						if (keishaRrksNisnno != null)
						{
							if (!keishaRrksNisnno.equals(retCK0201Msg.getString(CK0201ETMsg.NISNNO)))
							{
								retCK0201Msg.set(CK0201ETMsg.NISNNO, keishaRrksNisnno);
								update_flg = true;
							}
						}
						else
						{
							if (retCK0201Msg.getString(CK0201ETMsg.NISNNO) != null)
							{
								retCK0201Msg.setNull(CK0201ETMsg.NISNNO);
								update_flg = true;
							}
						}
						updnisnno_flg = true;

					}
					// 更新対象外の場合
					else
					{
						continue;
					}
					
					// 更新対象でない場合
					if (!update_flg)
					{
						continue;
					}
					
					// 世代登録年月日時分秒
					retCK0201Msg.set(CK0201ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
					// SYSID
					retCK0201Msg.set(CK0201ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
					// 予約適用年月日
					retCK0201Msg.set(CK0201ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
					// 予約適用コード
					retCK0201Msg.set(CK0201ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);

					// 登録年月日時分秒
					retCK0201Msg.set(CK0201ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					// 登録オペレータアカウント
					retCK0201Msg.set(CK0201ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					// 更新年月日時分秒
					retCK0201Msg.set(CK0201ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					// 更新オペレータアカウント
					retCK0201Msg.set(CK0201ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					// 削除年月日時分秒
					retCK0201Msg.setNull(CK0201ETMsg.DEL_DTM);
					// 削除オペレータアカウント
					retCK0201Msg.setNull(CK0201ETMsg.DEL_OPEACNT);
					// 無効フラグ
					retCK0201Msg.set(CK0201ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
					
					// 連絡先登録
					JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
					dbaUtil.create(retCK0201Msg);
				}
			}
		}
		
		// 新規登録リストを作成する
		if (keishaRrksMlad != null && updmlad_flg == false)
		{
			inMap = new HashMap<String, String>();
			inMap.put("mlad", keishaRrksMlad);
			createlist.add(inMap);
		}
		if (keishaRrksKtaiTelno != null && updtel2_flg == false)
		{
			inMap = new HashMap<String, String>();
			inMap.put("telno_2", keishaRrksKtaiTelno);
			createlist.add(inMap);
		}
		if (keishaRrksTelno != null && updtel5_flg == false)
		{
			inMap = new HashMap<String, String>();
			inMap.put("telno_5", keishaRrksTelno);
			createlist.add(inMap);
		}
		if (keishaRrksNisnno != null && updnisnno_flg == false)
		{
			inMap = new HashMap<String, String>();
			inMap.put("nisnno", keishaRrksNisnno);
			createlist.add(inMap);
		}
		
		// 新規登録リストがある場合、連絡先スキーマの新規登録を行う
		if (createlist.size() > 0)
		{
			for (HashMap<String, String> creatMap : createlist)
			{
				CAANMsg retCK0201Msg = new CAANMsg(CK0201ETMsg.class.getName());
				// 連絡先番号
				retCK0201Msg.set(CK0201ETMsg.RRKS_NO, JCCModelCommon.getFormatedNextSeq("SEQ_RRKS_NO", "", 12));
				// 世代登録年月日時分秒
				retCK0201Msg.set(CK0201ETMsg.GENE_ADD_DTM, JCKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
				// SYSID
				retCK0201Msg.set(CK0201ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
				// RRKS_CD
				retCK0201Msg.setNull(CK0201ETMsg.RRKS_CD);

				if (creatMap.get("mlad") != null)
				{
					retCK0201Msg.set(CK0201ETMsg.RRK_WAY_CD, JKKModelConst.RRK_WAY_CD_MLAD);
					retCK0201Msg.set(CK0201ETMsg.RRKS_SBT_CD, JKKModelConst.RRKS_SBT_CD_OTHER);
					retCK0201Msg.set(CK0201ETMsg.MLAD, (String)creatMap.get("mlad"));
					retCK0201Msg.setNull(CK0201ETMsg.TELNO);
					retCK0201Msg.setNull(CK0201ETMsg.NISNNO);
				}
				else if (creatMap.get("telno_2") != null)
				{
					retCK0201Msg.set(CK0201ETMsg.RRK_WAY_CD, JKKModelConst.RRK_WAY_CD_TELNO);
					retCK0201Msg.set(CK0201ETMsg.RRKS_SBT_CD, JKKModelConst.RRKS_SBT_CD_KTAI);
					retCK0201Msg.setNull(CK0201ETMsg.MLAD);
					retCK0201Msg.set(CK0201ETMsg.TELNO, (String)creatMap.get("telno_2"));
					retCK0201Msg.setNull(CK0201ETMsg.NISNNO);
				}
				else if (creatMap.get("telno_5") != null)
				{
					retCK0201Msg.set(CK0201ETMsg.RRK_WAY_CD, JKKModelConst.RRK_WAY_CD_TELNO);
					retCK0201Msg.set(CK0201ETMsg.RRKS_SBT_CD, JKKModelConst.RRKS_SBT_CD_OTHER);
					retCK0201Msg.setNull(CK0201ETMsg.MLAD);
					retCK0201Msg.set(CK0201ETMsg.TELNO, (String)creatMap.get("telno_5"));
					retCK0201Msg.setNull(CK0201ETMsg.NISNNO);
				}
				else
				{
					retCK0201Msg.set(CK0201ETMsg.RRK_WAY_CD, JKKModelConst.RRK_WAY_CD_NISNNO);
					retCK0201Msg.set(CK0201ETMsg.RRKS_SBT_CD, JKKModelConst.RRKS_SBT_CD_OFFC);
					retCK0201Msg.setNull(CK0201ETMsg.MLAD);
					retCK0201Msg.setNull(CK0201ETMsg.TELNO);
					retCK0201Msg.set(CK0201ETMsg.NISNNO, (String)creatMap.get("nisnno"));
				}
				// 連絡先分類コード
				retCK0201Msg.set(CK0201ETMsg.RRKS_BUNRUI_CD, "0");
				// FAX_NO
				retCK0201Msg.setNull(CK0201ETMsg.FAX_NO);
				// 予約適用年月日
				retCK0201Msg.set(CK0201ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
				// 予約適用コード
				retCK0201Msg.set(CK0201ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);

				// 登録年月日時分秒
				retCK0201Msg.set(CK0201ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				// 登録オペレータアカウント
				retCK0201Msg.set(CK0201ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				// 更新年月日時分秒
				retCK0201Msg.set(CK0201ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				// 更新オペレータアカウント
				retCK0201Msg.set(CK0201ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				// 削除年月日時分秒
				retCK0201Msg.setNull(CK0201ETMsg.DEL_DTM);
				// 削除オペレータアカウント
				retCK0201Msg.setNull(CK0201ETMsg.DEL_OPEACNT);
				// 無効フラグ
				retCK0201Msg.set(CK0201ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
				
				// 連絡先登録
				JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
				dbaUtil.create(retCK0201Msg);				
			}
		}
	}
	
	/**
	 * <p>
	 * 同一SYSIDのサービス契約スキーマの料金プランコード「標準コンテンツ用」のレコードが存在するか判定を行う。
	 * </p>
	 * 
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 「標準コンテンツ用」のレコードが存在する：true、存在しない場合：false
	 */
	private boolean isExistTargetPPlan(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		// 同一SYSIDのサービス契約スキーマの料金プランコード「標準コンテンツ用」のレコードが存在する場合
		String sysid = inCBSMsg.getString(ECK0011C200CBSMsg.SYSID);
		String opeDate = JCKModelCommon.getOpeDate(inCBSMsg);
		HashMap<String, String[]> searchJknMap = new HashMap<String, String[]>();
		searchJknMap.put(KK0081ETMsg.PPLAN_CD, new String[] {JKKModelConst.PPLAN_CD_STD_CONTENTS});
		
		JKKejbKK0081DBABase kk0081Dba = new JKKejbKK0081DBABase();
		CAANMsg[] kk0081RetMsgList = kk0081Dba.getKK0081bySysid(sysid, searchJknMap, opeDate);
		
		if (kk0081RetMsgList != null && kk0081RetMsgList.length > 0)
		{
			// 解約済み、キャンセル済みを除外
			kk0081RetMsgList = kk0081Dba.getKK0081OutDsLCl(kk0081RetMsgList);
			if (kk0081RetMsgList != null && kk0081RetMsgList.length > 0)
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 引数がnullの場合、""(空白)に置き換えて返却する。
	 * @param str 文字列
	 * @return 引数がnullの場合、""(空白)に置き換えて返却する。それ以外の場合、引数をそのまま返却する。
	 */
	private String blankConv(String str)
	{
		if (str == null)
		{
			return "";
		}
		return str;
	}
}
