/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKBaseCC
*   ソースファイル名：JKKBaseCC.java
*   作成者          ：富士通
*   日付            ：2013年01月15日
*＜機能概要＞
*   顧客契約基底コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2013/01/15   FJ          新規作成 ANK-1276-00-00
*   
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.HashMap;
import java.util.List;

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.model.base.CAANMsg;

/**
 * 顧客契約基底コモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public abstract class JKKBaseCC extends AbstractCommonComponent
{
	/** テンポラリテンプレート領域キー識別子 */
	protected static final String TEMP_TEMPLATE_PRIFIX = "TEMP_TEMPLATE_";
	/** テンポラリテンプレート領域キー識別子区切文字 */
	protected static final String TEMP_TEMPLATE_PRIFIX_SEP = "_";
	/** 空文字 */
	protected static final String BLANK = "";
	/** リターンコード(正常)  */
	protected static final int RETURN_CODE_NORMAL = 0;
	/** SC呼出制御キー(検索エラーなし) */
	protected static final String IGNORE_SEARCH_ERR = "ignore_search_err";
	/** 検索処理パターン(一括) */
	protected static final String SEARCH_TYPE_IKT = "1";

	/**
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ管理クラス
	 * @throws RequestParameterException
	 */
	public final IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
			throws RequestParameterException
	{
		return JKKBPActCommon.editErrorInfo(param, templates, returnCode);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public abstract HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception;

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param templateId テンプレートID
	 * @param templateIdDetail テンプレートID(明細)
	 * @param inColumnList IN項目リスト
	 * @return チェック処理用マップ
	 * @throws Exception 
	 */
	protected HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String templateId,
			String templateIdDetail, List<String> inColumnList) throws Exception
	{
		return JKKBPActCommon.getInvokeCBS(handle, param, fixedText, templateId, templateIdDetail, inColumnList);
	}

	/**
	 * サービスIF実行
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param templateId テンプレートID
	 * @param templateIdDetail テンプレートID(明細)
	 * @param inColumnList IN項目リスト
	 * @param errorColumn エラー項目
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	protected IRequestParameterReadWrite executeSC(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String templateId,
			String templateIdDetail, List<String> inColumnList, String errorColumn) throws Exception
	{
		return JKKBPActCommon.executeSC(handle, param, fixedText, templateId, templateIdDetail, inColumnList, errorColumn);
	}

	/**
	 * サービスIF実行
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param templateId テンプレートID
	 * @param templateIdDetailList テンプレートID(明細)リスト
	 * @param inColumnList
	 * @param errorColumn エラー項目
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	protected IRequestParameterReadWrite executeSC(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String templateId,
			List<String> templateIdDetailList, List<String> inColumnList, String errorColumn) throws Exception
	{
		return JKKBPActCommon.executeSC(handle, param, fixedText, templateId, templateIdDetailList, inColumnList, errorColumn);
	}

	/**
	 * 機能コード設定
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCode 機能コード
	 * @throws RequestParameterException
	 */
	protected void setFuncCode(IRequestParameterReadWrite param, String fixedText, String funcCode) throws RequestParameterException
	{
		// ユーザデータに機能コードを設定
		JKKBPActCommon.setFuncCode(param, fixedText, funcCode);
	}

	/**
	 * 機能コード取得
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return 機能コード
	 * @throws RequestParameterException
	 */
	protected String getFuncCode(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// 機能コード
		return JKKBPActCommon.getFuncCode(param, fixedText);
	}

	/**
	 * 一時領域のテンプレート値取得
	 * 
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentKey テンプレート取得キー
	 * @param columnKey 項目キー
	 * @return 一時領域のテンプレート値
	 */
	protected String getTemplateValue(HashMap dataMap, String parentKey, String columnKey)
	{
		// 機能コード
		return JKKBPActCommon.getTemplateValue(dataMap, parentKey, columnKey);
	}

	/**
	 * 一時領域のテンプレート値取得(明細部)
	 * 
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentKey テンプレート取得キー
	 * @param listKey  テンプレート取得キー(明細部)
	 * @param columnKey 項目キー
	 * @param index 配列番号
	 * @return 一時領域のテンプレート値(明細部)
	 */
	protected String getTemplateListValue(HashMap dataMap, String parentKey, String listKey, String columnKey, int index)
	{
		return JKKBPActCommon.getTemplateListValue(dataMap, parentKey, listKey, columnKey, index);
	}

	/**
	 * 一時領域のテンプレートマップ取得(明細部)
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentKey テンプレート取得キー
	 * @param listKey  テンプレート取得キー(明細部)
	 * @param index 配列番号
	 * @return 一時領域のテンプレートマップ
	 */
	protected HashMap getTemplateListMap(HashMap dataMap, String parentKey, String listKey, int index)
	{
		return JKKBPActCommon.getTemplateListMap(dataMap, parentKey, listKey, index);
	}

	/**
	 * 一時領域のテンプレート明細リスト取得
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentKey テンプレート取得キー
	 * @param listKey  テンプレート取得キー(明細部)
	 * @return 一時領域のテンプレート明細リスト
	 */
	protected List<HashMap> getTemplateList(HashMap dataMap, String parentKey, String listKey)
	{
		return JKKBPActCommon.getTemplateList(dataMap, parentKey, listKey);
	}

	/**
	 * 最大のSC実行結果取得キー取得
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentBaseKey テンプレート取得キー(通番なし)
	 * @return 最大のSC実行結果取得キー
	 */
	protected String getMaxTempTempleteKey(HashMap dataMap, String parentBaseKey)
	{
		return JKKBPActCommon.getMaxTempTempleteKey(dataMap, parentBaseKey);
	}

	/**
	 * 一時領域のテンプレート明細存在チェック
	 * <br>
	 * @param dataMap ユーザデータ
	 * @param parentKey テンプレート取得キー
	 * @param listKey  テンプレート取得キー(明細部)
	 * @return true:存在 false:未存在
	 */
	protected boolean isExistsTemplateDetail(HashMap dataMap, String parentKey, String listKey)
	{
		return JKKBPActCommon.isExistsTemplateDetail(dataMap, parentKey, listKey);
	}

	/**
	 * 一時領域の一括削除
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	protected void deleteTempArea(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		JKKBPActCommon.deleteTempArea(param, fixedText);
	}

	/**
	 * ユーザーデータの初期化
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param columnList 項目リスト
	 * @throws RequestParameterException
	 */
	protected void initData(IRequestParameterReadWrite param, String fixedText, List<String> columnList) throws RequestParameterException
	{
		JKKBPActCommon.initData(param, fixedText, columnList);
	}

	/**
	 * 検索エラーなし設定
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	protected void ignoreSearchError(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		JKKBPActCommon.ignoreSearchError(param, fixedText);
	}

	/**
	 * 関連チェックエラー情報設定
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param templateId テンプレートID
	 * @param errColumn エラー項目
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException 
	 */
	protected void setRelationErrorInfo(IRequestParameterReadWrite param, String templateId, String errColumn, String fixedText)
			throws RequestParameterException
	{
		JKKBPActCommon.setRelationErrorInfo(param, templateId, errColumn, fixedText);
	}

	/**
	 * マップのコピー
	 * 
	 * <br>
	 * @param dest 先のマップ
	 * @param org 元のマップ
	 */
	protected void copyProperties(HashMap dest, HashMap org)
	{
		JKKBPActCommon.copyProperties(dest, org);
	}
}
