/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム構築
*	モジュール名	：JKKAuthoriRsltEinmConv
*	ソースファイル名：JKKAuthoriRsltEinmConv.java
*	作成者			：GDC)j.lawsin
*	日付			：2022年03月16日
*＜機能概要＞
*	オーソリ結果英名変換を行う。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v58.00.00   2022/03/16  GDC)j.lawsin 【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*	v58.00.01   2022/06/06  FJ)謝        【ANK-3846-15-00】【クレカ】クリアパス→ペイジェント移行／【仕変15】HOUSEカードの登録対応
**********************************************************************/
package eo.common.util;

import eo.common.constant.JKKStrConst;

/**
 * オーソリ結果英名変換部品クラスです。<p>
 * <BR>
 * @author GDC)j.lawsin
 */
public class JKKAuthoriRsltEinmConv 
{
	/**
	 * 変更区分が1(カードブランド) / カードブランド配列
	 * 項目1:JCB
	 * 項目2:VISA
	 * 項目3:MASTER
	 * 項目4:HOUSE
	 * 項目5:DINERS
	 * 項目6:AMEX
	 */
	private static final String[][] CARD_BRAND_ARR = new String[][] {
		{"JCB", "00001"},
		{"VISA", "00002"},
		{"MASTER", "00003"},
// ANK-3846-15-00 ADD START
		{"HOUSE", "00006"},
// ANK-3846-15-00 ADD END
		{"DINERS", "00012"},
		{"AMEX", "00013"}
	};
	
	/**
	 * 変更区分が2(デビット・プリペイド判定結果) / カードタイプ配列
	 * 項目1:other
	 * 項目2:debit
	 * 項目3:prepaid
	 */
	private static final String[][] CARD_TYPE_ARR = new String[][] {
		{"other", "0"},
		{"debit", "1"},
		{"prepaid", "2"}
	};

	/**
	 * オーソリ結果英名変換処理
	 * @param chgeDiv 変更区分
	 * @param trgtStr 対象文字列
	 * @return 変換後コード値
	 */
	public static String doAuthoriRsltEinmConv(String chgeDiv, String trgtStr)
	{
		// 入力パラメータチェックを行う
		// 入力パラメータの対象文字列が設定されない場合
		if (JKKStringUtil.isNullBlank(trgtStr))
		{
			return null;
		}
		
		String codeValue = null;
		
		// 変更区分が1(カードブランド)の場合
		if (JKKStrConst.CARD_BRAND.equals(chgeDiv))
		{
			codeValue = getCodeValue(CARD_BRAND_ARR, trgtStr);
		}
		// 変更区分が2(デビット・プリペイド判定結果)の場合
		else if (JKKStrConst.DEBIT_PREPAID_JDGMT_RSLT.equals(chgeDiv))
		{
			codeValue = getCodeValue(CARD_TYPE_ARR, trgtStr);
		}
		
		return codeValue;
	}
	
	/**
	 * ターゲット文字列の対応するコード値を返します
	 * @param arr 2次元配列
	 * @param trgtStr 割賦プランコード
	 * @return カードタイプ/ブランドコード値
	 */
	private static String getCodeValue(String[][] arr, String trgtStr)
	{
		for (int i = 0; i < arr.length; i++)
		{
			if (trgtStr.equals(arr[i][0])) {
				return arr[i][1];
			}
		}
		
		// 取得できない場合、NULLを返却する
		return null;
	}
}
