/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKTmcpCodeCnvUtil
*	ソースファイル名：JKKTmcpCodeCnvUtil.java
*	作成者			：富士通
*	日付			：2018年10月04日
*＜機能概要＞
*	端末補償システムコード変換部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2018/10/04	FJ)黒田(耕)	【ANK-3484-00-00】端末補償サービス導入対応
*	v39.00.01	2018/10/12	FJ)植木		【ANK-3484-00-00】端末補償サービス導入対応
**********************************************************************/
package eo.common.util;

/**
* 端末補償システムコードの変換を行うクラスです。<p>
* <BR>
* @author 富士通
*/
public class JKKTmcpCodeCnvUtil
{
	/**
	 * 変換コード配列
	 */
	/** プランコード
	 * 項目1 : プランコード
	 * 項目2 : オプションサービスコード
	 * 項目3 : サブオプションコード
	 */
	private static final String[][] PLAN_CD_ARRAY =
	{{	"001"	,"B133"	, ""	}	// PCプラン
	, {	"011"	,"B133"	, "D12"	}	// PCワイドプラン
	, {	"002"	,"B134"	, ""	}};	// TVプラン
	
	/**
	 * 単体変換配列要素番号指定
	 */
	/** 変換前コード */
	private static final int PLAN_CD = 0;
	/** 変換後コード1 */
	private static final int OP_SVC_CD = 1;
	/** 変換後コード2 */
	private static final int SBOP_SVC_CD = 2;
	
	/**
	 * プランコード変換(オプションサービスコード→プランコード)
	 * @param opSvcCd オプションサービスコード
	 * @param sbopSvcCd サブオプションサービスコード
	 * @return プランコード
	 */
	public static String convPlanCd(String opSvcCd, String sbopSvcCd)
	{
		// 変換するコードに対応する2次元配列の取得
		String[][] convArray2D = PLAN_CD_ARRAY;
		
		// オプションサービスコードに紐付く配列取得
		String[] convArray = getConvArray(convArray2D, opSvcCd, sbopSvcCd);
		
		// プランコード取得
		return getPlanCd(convArray);
	}

// ANK-3484-00-00 ADD START
	/**
	 * プランコード変換(プランコード→オプションサービスコード)
	 * @param planCd プランコード
	 * @return 0:オプションサービスコード, 1:サブオプションサービスコードの配列
	 */
	public static String[] convOpSvcCd(String planCd)
	{
		// 変換するコードに対応する2次元配列の取得
		String[][] convArray2D = PLAN_CD_ARRAY;
		
		// プランコードに紐付く配列取得
		String[] convArray = getConvArray(convArray2D, planCd);
		
		// オプションサービスコード、サブオプションサービスコードが格納されている配列を取得
		return getOpSvcCd(convArray);
	}
// ANK-3484-00-00 ADD END
// ANK-3484-00-00 MOD START	
	/**
	 * プランコードに紐付く配列取得
	 * @param convArray2D 変換コード配列
	 * @param planCd	プランコード
	 * @return
	 */
	private static String[] getConvArray(String[][] convArray2D, String planCd)
	{
		String[] retArray = null;
		if (null == convArray2D || null == planCd)
		{
			return null;
		}
		for (int i = 0; i < convArray2D.length; ++i)
		{
			if (planCd.equals(convArray2D[i][PLAN_CD]))
			{
				retArray = convArray2D[i];
				break;
			}
		}
		return retArray;
	}
// ANK-3484-00-00 MOD END
	
	/**
	 * オプションサービスコードに紐付く配列取得
	 * @param convArray2D 変換コード配列
	 * @param opSvcCd オプションサービスコード
	 * @param sbopSvcCd サブオプションサービスコード
	 * @return オプションサービスコードに紐付く配列
	 */
	private static String[] getConvArray(String[][] convArray2D, String opSvcCd, String sbopSvcCd)
	{
		String[] retArray = null;
		if (null == convArray2D || null == opSvcCd)
		{
			return null;
		}
		for (int i = 0; i < convArray2D.length; ++i)
		{
			if (opSvcCd.equals(convArray2D[i][OP_SVC_CD]))
			{
				if (sbopSvcCd.equals(convArray2D[i][SBOP_SVC_CD]))
				{
					retArray = convArray2D[i];
					break;
				}
			}
		}
		return retArray;
	}
	
	/**
	 * オプションサービスコード取得
	 * @param convArray	 プランコードに紐付く配列
	 * @return
	 */
	private static String[] getOpSvcCd(String[] convArray)
	{
// ANK-3484-00-00 MOD START
		if (null == convArray)
		{
			return null;
		}
		String[] retStr = new String[2];
		retStr[0] = convArray[OP_SVC_CD];
		retStr[1] = convArray[SBOP_SVC_CD];
		
		return retStr;
// ANK-3484-00-00 MOD END
	}
	
	/**
	 * プランコード取得
	 * @param convArray	 オプションサービスコードに紐付く配列
	 * @return	プランコード
	 */
	private static String getPlanCd(String[] convArray)
	{
		String retStr = null;
		
		if (null == convArray)
		{
			return null;
		}
		
		retStr = convArray[PLAN_CD];
		
		return retStr;
	}
}