/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKA139SFLogic
*   ソースファイル名：KKA139SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年12月07日
*＜機能概要＞
*   公衆無線LAN利用者変更依頼要求(API)のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/07   FJ          新規作成
*   v3.00.00    2012/09/05   FJ) 団      業務処理名"公衆無線加入情報顧客料金更新要求"→"公衆無線LAN利用者変更依頼要求"に修正
*
**********************************************************************/
package eo.web.webview.KKA139SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SRuntimeException;

import eo.common.util.JPCEditString;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKApiCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.mapping.KKSV0344_KKSV0344OPDBMapper;

/**
 * KKA139のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKA139SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 業務処理名
	 */
	private static final String BUSINESS_LOGIC_NM = "公衆無線LAN利用者変更依頼要求";
	
	/**
	 * 排他 （返却コード）
	 */
	private static final String RESULT_CD_HAITA = "818001";
	
	/**
	 * 排他（完了コード）
	 */
	private static final String KNRYO_CD_HAITA = "20";
	
	/**
	 * 排他（詳細コード）
	 */
	private static final String SHOSI_CD_HAITA = "47801";
	
	/**
	 * 未存在（返却コード）
	 */
	private static final String RESULT_CD_MISONZAI = "819002";
	
	/**
	 * 未存在（完了コード）
	 */
	private static final String KNRYO_CD_MISONZAI = "30";
	
	/**
	 * 未存在（詳細コード）
	 */
	private static final String SHOSI_CD_MISONZAI = "47802";

	/**
	 * 有効（完了コード）
	 */
	private static final String KNRYO_CD_YK = "30";
	
	/**
	 * 有効（詳細コード）
	 */
	private static final String SHOSI_CD_YK = "47803";
	
	/**
	 * 更新（完了コード）
	 */
	private static final String KNRYO_CD_UPD = "999";

	
	/**
	 * 更新（詳細コード）
	 */
	private static final String SHOSI_CD_UPD = "47804";

	/**
	 * 発行（変更前)（詳細コード）
	 */
	private static final String SHOSI_CD_HAK_CHBF = "47806";
	
	/**
	 * 発行（変更後)（詳細コード）
	 */
	private static final String SHOSI_CD_HAK_CHAF = "47807";
	
	/**
	 * 追加（詳細コード）
	 */
	private static final String SHOSI_CD_ADD = "47809";
	
	/**
	 * アクション(SELECT)
	 */
	private static final String ACTION_SELECT = "SELECT";

	/**
	 * アクション(UPDATE)
	 */
	private static final String ACTION_UPDATE = "UPDATE";
	
	/**
	 * アクション(DELETE)
	 */
	private static final String ACTION_DELETE = "DELETE";
	
	/**
	 * アクション(CLEATE)
	 */
	private static final String ACTION_CLEATE = "CLEATE";
	
	
	/**
	 * 公衆無線LAN利用者変更依頼要求受付処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// サービス結果格納用サービスフォームBean
		X31SDataBeanAccess bean = null;
		StringBuffer rspMsg = new StringBuffer();
		
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		KKSV0344_KKSV0344OPDBMapper mapper = new KKSV0344_KKSV0344OPDBMapper();
		
		try
		{
			// サービス結果格納用サービスフォームBean取得
			bean = getServiceFormBean();
			
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			
			// ■ 業務規制チェック
			if (!JKKApiCommon.checkRequestRestriction(commonBean))
			{
				// 規制中の場合
				DEBUG_LOG.debug("■業務規制エラー");
				
				// "M" "007001"（メンテナンス中エラー）
				Exception ex = new Exception("メンテナンス中です。");
				
				// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
				String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
				
				// エラー情報をマップに設定する
				HashMap<String, Object> errMap = setErrMap("007001", line_num, BUSINESS_LOGIC_NM, "", "", "顧客サーバ");
				
				// 処理応答電文（共通セクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getCommonSector(errMap));
				
				// 返却値の設定
				bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
				return true;
			}
			
			// ■ 処理要求電文より、パラメータを取得する。
			HashMap<String, Object> reqMap = super.getRequestParams();
			
			String okyaksm_id = (String)reqMap.get("OKYAKSM_ID");			// サービス契約番号
			String before_sysid = (String)reqMap.get("BEFORE_SYSID");		// 変更前SYSID
			String after_sysid = (String)reqMap.get("AFTER_SYSID");			// 変更後SYSID
			String sksi_prgrm_id = (String)reqMap.get("SKSI_PRGRM_ID");		// 登録処理ID
			String rkd_sksi_ntz = (String)reqMap.get("RKD_SKSI_NTZ");		// レコード作成日時
			String rkd_sksi_unyu_b = (String)reqMap.get("RKD_SKSI_UNYU_B");	// レコード作成運用日
			
			// ■ 必須入力チェック
			// 各項目の必須チェックを行いエラーとなった項目を返却する
			String chkError = getErrorKmkChk(okyaksm_id, before_sysid, after_sysid, sksi_prgrm_id, rkd_sksi_ntz, rkd_sksi_unyu_b);
			
			if (!JKKApiCommon.isNull(chkError))
			{
				DEBUG_LOG.debug("■必須項目が設定されていません。");
				
				// "E" "009008"（必須項目が未設定の場合）
				Exception ex = new Exception("必須項目が設定されていません。");
				
				// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
				String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
				
				// エラー情報をマップに設定する
				HashMap<String, Object> errMap = setErrMap("009008", line_num, BUSINESS_LOGIC_NM, chkError, "", "");
				
				// 処理応答電文（共通セクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getCommonSector(errMap));
				
				// 返却値の設定
				bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
				return true;
			}
			
			// ■ 最大桁数チェック(サービス契約番号が10桁を超えた場合)
			// 各項目の必須チェックを行い最大桁数がエラーとなった項目を返却する
			ArrayList<String> array = makLengthChk(okyaksm_id, before_sysid, after_sysid, sksi_prgrm_id, rkd_sksi_ntz, rkd_sksi_unyu_b);
			if (null != array)
			{
				DEBUG_LOG.debug("■最大桁数を超えています。");
				
				// "E" "009010"（パラメータ値の最大桁数を超えた場合）
				Exception ex = new Exception("最大桁数を超えています。");
				
				// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
				String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
				
				// エラー情報をマップに設定する
				HashMap<String, Object> errMap = setErrMap("009010", line_num, BUSINESS_LOGIC_NM, array.get(0), "", array.get(1));
				
				// 処理応答電文（共通セクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getCommonSector(errMap));
				
				// 返却値の設定
				bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
				return true;
			}
			
			// オンライン運用日付取得
			String opeDate = JCCWebCommon.getOpeDate(this, null);
			
			// ■ サービス呼び出し準備
			HashMap<String, Object> paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0344");
			
			HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();

			mapper.setKKSV034401SC(reqMap, inputMap, JKKCommonConst.FUNC_CODE_1);
			mapper.setKKSV034402CC(reqMap, inputMap);
			mapper.setKKSV0344WORK01(reqMap, inputMap, JKKCommonConst.FUNC_CODE_1, opeDate);

			
			// ■ サービス呼出
			try
			{
				invokeService(paramMap, inputMap, outputMap);
			}
			catch(JCCWebServiceException jwse)
			{
				throw jwse;
			}
			
			// ■ サービス結果の転記
			HashMap<String, Object> comMap = new HashMap<String, Object>();
			
			
			mapper.getKKSV0344WORK02(comMap, outputMap);
			
			String result_cd = (String)comMap.get("WDA_COM_RESULT");
			String knryo_cd = (String)comMap.get("KNRYO_CD");
			String shosi_cd = (String)comMap.get("SHOSI_CD");
			
			HashMap<String, Object> simpleMap = new HashMap<String, Object>();
			
			simpleMap.put("KNRYO_CD", knryo_cd);
			simpleMap.put("SHOSI_CD", shosi_cd);
			
			DEBUG_LOG.debug("■返却コード：" + result_cd);
			DEBUG_LOG.debug("■完了コード：" + knryo_cd);
			DEBUG_LOG.debug("■詳細コード：" + shosi_cd);
			
			// サービス契約番号で有効な公衆無線ＬＡＮサービスが存在しない（返却コード"819002" 且つ 完了コード"30" 且つ 詳細コード"47802"）場合
			if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_MISONZAI.equals(knryo_cd) && SHOSI_CD_MISONZAI.equals(shosi_cd))
			{
				// "W" "819002"（サービス契約番号で有効な公衆無線LANサービスが存在しない）
				Exception ex = new Exception("サービス契約番号で有効な公衆無線LANサービスが存在しません。");
				
				// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
				String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
				
				// エラー情報をマップに設定する
				HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_SELECT, KNRYO_CD_MISONZAI, SHOSI_CD_MISONZAI);
				
				// 処理応答電文（共通セクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getCommonSector(errMap));
				
				// 処理応答電文（シンプルセクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
				
				// 返却値の設定
				bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
				
				return true;
			}
			
			// 正常終了（返却コード"000000"）の場合
			if ("000000".equals(result_cd))
			{
				simpleMap.put("KNRYO_CD", "0");
				simpleMap.put("SHOSI_CD", "0");
				
				
				// 処理応答電文（共通セクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getCommonSector(result_cd));
				
				// 処理応答電文（シンプルセクタ）の形式に変換
				rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
				
				// 返却値の設定
				bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
				return true;
			}
			
			// 返却コード不正
			throw new Exception("処理結果コードが取得できませんでした。");
			
		}
		catch (Exception e)
		{
			if (e instanceof X31SRuntimeException)
			{
				// ■ サービス結果の転記
				HashMap<String, Object> comMap = new HashMap<String, Object>();
				
				mapper.getKKSV0344WORK02(comMap, outputMap);
				
				String result_cd = (String)comMap.get("WDA_COM_RESULT");
				String knryo_cd = (String)comMap.get("KNRYO_CD");
				String shosi_cd = (String)comMap.get("SHOSI_CD");
				
				HashMap<String, Object> simpleMap = new HashMap<String, Object>();
				
				simpleMap.put("KNRYO_CD", knryo_cd);
				simpleMap.put("SHOSI_CD", shosi_cd);
				
				// データ更新で排他エラーが発生した（返却コード"818001"且つ完了コードが"20"且つ詳細コード"47801"）の場合
				if(RESULT_CD_HAITA.equals(result_cd) && KNRYO_CD_HAITA.equals(knryo_cd) && SHOSI_CD_HAITA.equals(shosi_cd))
				{
					// "W" "818001"（データ更新で排他エラーが発生した場合）
					Exception ex = new Exception("データ更新で排他エラーです。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_HAITA, line_num, BUSINESS_LOGIC_NM, "", KNRYO_CD_HAITA, SHOSI_CD_HAITA);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					return true;
				}
				
				// 変更後のSYSIDが有効でない（返却コード"819002" 且つ 完了コード"30" 且つ 詳細コード"47803"）場合
				if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_YK.equals(knryo_cd) && SHOSI_CD_YK.equals(shosi_cd))
				{
					// "W" "819002"（変更後SYSIDが有効でない）
					Exception ex = new Exception("変更後のSYSIDが有効ではありません。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_UPDATE, KNRYO_CD_YK, SHOSI_CD_YK);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					return true;
				}
				
				// サービス契約の更新エラー（返却コード"819002" 且つ 完了コード"999" 且つ 詳細コード"47804"）場合
				if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_UPD.equals(knryo_cd) && SHOSI_CD_UPD.equals(shosi_cd))
				{
					// "W" "819002"（サービス契約の更新エラー）
					Exception ex = new Exception("サービス契約の更新でエラーです。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_UPDATE, KNRYO_CD_UPD, SHOSI_CD_UPD);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					
					return true;
				}
				
				// 変更前ＳＹＳＩＤでのＳＯＤ発行エラー（返却コード"819002" 且つ 完了コード"999" 且つ 詳細コード"47806"）場合
				if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_UPD.equals(knryo_cd) && SHOSI_CD_HAK_CHBF.equals(shosi_cd))
				{
					// "W" "819002"（変更前ＳＹＳＩＤでのＳＯＤ発行エラー）
					Exception ex = new Exception("変更前ＳＹＳＩＤでのＳＯＤ発行エラーです。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_DELETE, KNRYO_CD_UPD, SHOSI_CD_HAK_CHBF);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					return true;
				}
				
				// 変更後ＳＹＳＩＤでのＳＯＤ発行エラー（返却コード"819002" 且つ 完了コード"999" 且つ 詳細コード"47807"）場合
				if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_UPD.equals(knryo_cd) && SHOSI_CD_HAK_CHAF.equals(shosi_cd))
				{
					// "W" "819002"（変更後ＳＹＳＩＤでのＳＯＤ発行エラー）
					Exception ex = new Exception("変更後ＳＹＳＩＤでのＳＯＤ発行エラーです。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_CLEATE, KNRYO_CD_UPD, SHOSI_CD_HAK_CHAF);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					return true;
				}
				
				// サービス契約の追加エラー（返却コード"819002" 且つ 完了コード"999" 且つ 詳細コード"47809"）場合
				if(RESULT_CD_MISONZAI.equals(result_cd) && KNRYO_CD_UPD.equals(knryo_cd) && SHOSI_CD_ADD.equals(shosi_cd))
				{
					// "W" "819002"（サービス契約の追加エラー）
					Exception ex = new Exception("サービス契約の追加エラーです。");
					
					// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
					String line_num = JPCEditString.fillZero(String.valueOf(ex.getStackTrace()[0].getLineNumber()), 5, false);
					
					// エラー情報をマップに設定する
					HashMap<String, Object> errMap = setErrMap(RESULT_CD_MISONZAI, line_num, "", ACTION_UPDATE, KNRYO_CD_UPD, SHOSI_CD_ADD);
					
					// 処理応答電文（共通セクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getCommonSector(errMap));
					
					// 処理応答電文（シンプルセクタ）の形式に変換
					rspMsg.append(JKKApiCommon.getSimpleSector(simpleMap));
					
					// 返却値の設定
					bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
					
					return true;
				}
			}
				
			// 処理で致命的なエラー（返却コード"009003"）が発生した場合
			DEBUG_LOG.debug("■致命的なエラー発生");
			
			// ■例外トレースのログ出力
			JKKApiCommon.printDebugLog(e);
			
			// 例外発生したソースコードの行番号を取得し５桁となるようにゼロ埋め
			String line_num = JPCEditString.fillZero(String.valueOf(e.getStackTrace()[0].getLineNumber()), 5, false);
			
			// エラー情報をマップに設定する
			
			HashMap<String, Object> errMap = setErrMap("009003", line_num, BUSINESS_LOGIC_NM, "", "", e.toString());
			
			// 処理応答電文（共通セクタ）の形式に変換
			rspMsg.append(JKKApiCommon.getCommonSector(errMap));
			
			// 返却値の設定
			bean.sendMessageString(KKA139SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, rspMsg.toString());
			return true;
		}
	}
	
	/**
	 * 必須項目のチェックを行います。
	 * <br>
	 * @param okyaksm_id サービス契約番号
	 * @param before_sysid 変更前SYSID
	 * @param after_sysid 変更後SYSID
	 * @param sksi_prgrm_id 登録処理ID
	 * @param rkd_sksi_ntz レコード作成日時
	 * @param rkd_sksi_unyu_b レコード作成運用日
	 * @return 必須チェックでエラーが発生した場合、エラーとなった項目を設定する、エラーでない場合は、nullを返却
	 */
	private String getErrorKmkChk(String okyaksm_id, String before_sysid, String after_sysid, 
			String sksi_prgrm_id, String rkd_sksi_ntz, String rkd_sksi_unyu_b)
	{
		// サービス契約番号の必須チェックを行う
		if(JKKApiCommon.isNull(okyaksm_id))
		{
			return "OKYAKSM_ID";
		}
		
		// 変更前SYSIDの必須チェックを行う
		if(JKKApiCommon.isNull(before_sysid))
		{
			return "BEFORE_SYSID";
		}
		
		// 変更後SYSIDの必須チェックを行う
		if(JKKApiCommon.isNull(after_sysid))
		{
			return "AFTER_SYSID";
		}
		
		// 登録処理IDの必須チェックを行う
		if(JKKApiCommon.isNull(sksi_prgrm_id))
		{
			return "SKSI_PRGRM_ID";
		}
		
		// レコード作成日時の必須チェックを行う
		if(JKKApiCommon.isNull(rkd_sksi_ntz))
		{
			return "RKD_SKSI_NTZ";
		}
		
		// レコード作成運用日の必須チェックを行う
		if(JKKApiCommon.isNull(rkd_sksi_unyu_b))
		{
			return "RKD_SKSI_UNYU_B";
		}
		
		return null;
	}
	
	/**
	 * 最大桁数のチェックを行います。
	 * <br>
	 * @param okyaksm_id サービス契約番号
	 * @param before_sysid 変更前SYSID
	 * @param after_sysid 変更後SYSID
	 * @param sksi_prgrm_id 登録処理ID
	 * @param rkd_sksi_ntz レコード作成日時
	 * @param rkd_sksi_unyu_b レコード作成運用日
	 * @return 最大桁数チェックでエラーが発生した場合、エラーとなった項目と項目の値を設定する、エラーでない場合は、nullを返却
	 */
	private ArrayList<String> makLengthChk(String okyaksm_id, String before_sysid, String after_sysid, 
			String sksi_prgrm_id, String rkd_sksi_ntz, String rkd_sksi_unyu_b)
	{
		
		ArrayList<String> array = new ArrayList<String>();
		
		// サービス契約番号の最大桁数チェックを行う
		if(10 < okyaksm_id.length())
		{
			array.add("OKYAKSM_ID");
			array.add(okyaksm_id);
			
			return array;
		}
		
		// 変更前SYSIDの最大桁数チェックを行う
		if(10 < before_sysid.length())
		{
			array.add("BEFORE_SYSID");
			array.add(before_sysid);
			
			return array;
		}

		// 変更後SYSIDの最大桁数チェックを行う
		if(10 < after_sysid.length())
		{
			array.add("AFTER_SYSID");
			array.add(after_sysid);
			
			return array;
		}
		
		// 登録処理IDの最大桁数チェックを行う
		if(8 < sksi_prgrm_id.length())
		{
			array.add("SKSI_PRGRM_ID");
			array.add(sksi_prgrm_id);
			
			return array;
		}
		
		// レコード作成日時の最大桁数チェックを行う
		if(14 < rkd_sksi_ntz.length())
		{
			array.add("RKD_SKSI_NTZ");
			array.add(rkd_sksi_ntz);
			
			return array;
		}
		
		// レコード作成運用日の最大桁数チェックを行う
		if(8 < rkd_sksi_unyu_b.length())
		{
			array.add("RKD_SKSI_UNYU_B");
			array.add(rkd_sksi_unyu_b);
			
			return array;
		}
		
		return null;
	}
	
	/**
	 * エラー情報をマップに設定します。
	 * <br>
	 * @param result 結果コードに設定する値
	 * @param detail2 詳細情報2に設定する値
	 * @param detail3 詳細情報3に設定する値
	 * @param detail4 詳細情報4に設定する値
	 * @param detail5 詳細情報5に設定する値
	 * @param detail6 詳細情報6に設定する値
	 * @return エラー情報を格納したMAP
	 */
	private HashMap<String, Object> setErrMap(String result, String detail2, String detail3, String detail4, String detail5, String detail6)
	{
		HashMap<String, Object> errMap = new HashMap<String, Object>();
		
		errMap.put("WDA_COM_RTYPE", JKKApiCommon.getRtype(result));
		errMap.put("WDA_COM_RESULT", result);
		errMap.put("WDA_COM_DETAIL1", this.getClass().getName());
		errMap.put("WDA_COM_DETAIL2", detail2);
		errMap.put("WDA_COM_DETAIL3", detail3);
		errMap.put("WDA_COM_DETAIL4", detail4);
		errMap.put("WDA_COM_DETAIL5", detail5);
		errMap.put("WDA_COM_DETAIL6", detail6);
		
		return errMap;

	}
}
