/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCKWebCommon
*   ソースファイル名：JCKWebCommon.java
*   作成者          ：富士通
*   日付            ：2011年07月01日
*＜機能概要＞
*   Ｗｅｂ共通アクセッサー部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/07/01   富士通      新規作成
*   v17.00.00   2015/07/15   FJ) 三原    【ANK-2557-00-00】PMP再構築対応
*   v58.00.00   2022/06/22   FJ) 上村    【ANK-3846-17-00】【クレカ】クリアパス→ペイジェント移行／【仕変17】CMP、CCMGに対するカード番号マスク・編集仕様の変更
*
**********************************************************************/
package eo.web.webview.common;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.common.JSYLogBase;
import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.model.base.jcc.util.JCCCalendarException;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.util.JCKLcsCommonUtil;
import eo.common.util.JCKLcsDataConverter;
import eo.common.util.JZMFormatForMask;

public class JCKWebCommon
{
	/**
	 * 入力ストリームからXML取得しMapに変換する。(PMP連携用)
	 * @param inputStream ストリーム
	 * @param encoding 文字コード
	 * @return マップオブジェクト
	 * @throws IOException
	 */
	@SuppressWarnings("unchecked")
	public static Map parseXmlToMapForPmp(InputStream inputStream, String encoding) throws IOException
	{
		return JCKLcsDataConverter.parseXml(inputStream, encoding);
	}

	/**
	 * XML文字列をMapに変換する。(PMP連携用)
	 * @param xml XML文字列
	 * @param encoding 文字コード
	 * @return マップオブジェクト
	 * @throws IOException
	 */
	@SuppressWarnings("unchecked")
	public static Map parseXmlToMapForPmp(String xml, String encoding) throws IOException
	{
		return JCKLcsDataConverter.parseXml(xml, encoding);
	}

	/**
	 * XML文字列をMapオブジェクトに変換する。(PMP連携用)
	 * @param map マップオブジェクト
	 * @return XML文字列
	 */
	@SuppressWarnings("unchecked")
	public static String parseMapToXmlForPmp(Map map)
	{
		return JCKLcsDataConverter.parseMapToXml(map);
	}

	/**
	 * XML文字列をMapオブジェクトに変換する。(PMP連携用)
	 * @param map マップオブジェクト
	 * @param lv 初期インデントレベル
	 * @return XML文字列
	 */
	@SuppressWarnings("unchecked")
	public static String parseMapToXmlForPmp(Map map, int lv)
	{
// ANK-2557-00-00 MOD START
//		return JCKLcsDataConverter.parseMapToXml(map, lv);
		String xml = JCKLcsDataConverter.parseMapToXml(map, lv);
		JSYwebLog.println(JSYLogBase.EXECUTION, JCKLcsApiCommonUtil.class, null, "BPCON0I002", new String[]{"----- PMP連携送信データ START -----"}, null);
		JSYwebLog.println(JSYLogBase.EXECUTION, JCKLcsApiCommonUtil.class, null, "BPCON0I002", new String[]{xml}, null);
		JSYwebLog.println(JSYLogBase.EXECUTION, JCKLcsApiCommonUtil.class, null, "BPCON0I002", new String[]{"----- PMP連携送信データ END -----"}, null);
		return xml;
// ANK-2557-00-00 MOD END
	}

	/**
	 * Bean項目を文字列結合します。
	 * <br />
	 * @param bean データBean
	 * @param strAll 項目名(複数可)
	 * @return 結合後の文字列
	 */
	public static String concatBeanString(X31SDataBeanAccess bean, String...strAll)
	{
		return JCKLcsWebStringUtil.concatBeanString(bean, strAll);
	}

	/**
	 * マップから指定されたキーの値を取得する。
	 * (使用例）<br />
	 *     getObjectFromMap(mapObj, "MAP1.dataList1[0].TEST_COL");<br />
	 * @param mapObj マップ
	 * @param columnNames キー名
	 * @return 値
	 */
	@SuppressWarnings("unchecked")
	public static Object getObjFromMap(Map mapObj, String columnName)
	{
		return JCKLcsDataConverter.getObjFromMap(mapObj, columnName);
	}

	/**
	 * マップから指定されたキーの値を取得する。
	 * (使用例）<br />
	 *     getObjectFromMap(mapObj, "MAP1.dataList1[0].TEST_COL");<br />
	 * @param mapObj マップ
	 * @param columnNames キー名
	 * @return 値
	 */
	@SuppressWarnings("unchecked")
	public static Object getObjFromMap(Map mapObj, String...columnNames)
	{
		return JCKLcsDataConverter.getObjFromMap(mapObj, columnNames);
	}

	/**
	 * マップから指定されたキーの値を取得する。
	 * (使用例）<br />
	 *     getObjectFromMap(mapObj, "MAP1.dataList1[0].TEST_COL");<br />
	 * @param mapObj マップ
	 * @param columnNames キー名
	 * @return 値
	 */
	@SuppressWarnings("unchecked")
	public static List getListFromMap(Map mapObj, String...columnNames)
	{
		return JCKLcsDataConverter.getListFromMap(mapObj, columnNames);
	}

	/**
	 * 西暦を和暦に変換し、元号、年、月、日に分割されたものを配列で返却します。
	 * <pre>
	 * ≪返却される文字列配列の例≫
	 *     [ "平成", "23", "12" , "8" ]
	 * </pre>
	 * @param date 年月日(8桁)
	 * @return 和暦の文字列配列
	 * @throws JCCCalendarException
	 */
	public static String[] toJapaneseYmdArray(String date) throws JCCCalendarException
	{
		return JCKLcsDataConverter.toJapaneseYmdArray(date);
	}

	/**
	 * カード番号マスク処理(PMP連携用)<br />
	 * <pre>金融機関情報などにマスク処理を行います。
	 * @param target 対象文字列
	 * @return マスク後の文字列
	 */
	public static String maskCrecaNoForPmp(String target)
	{
		return JZMFormatForMask.crecardExcBL1(target);
	}

	/**
	 * 姓の取得(PMP連携用)。<br />
	 * <pre>お客様名を姓、名に分割し姓を返却します。
	 * ※PMP連携時にはFirstNameは名ではなく姓となる為、要注意。<pre>
	 * @param fullName 姓名
	 * @return 姓
	 */
	public static String getFirstNameForPmp(String fullName)
	{
		return JCKLcsCommonUtil.getFirstNameForPmp(fullName);
	}

	/**
	 * 名の取得(PMP連携用)。<br />
	 * <pre>お客様名を姓、名に分割し姓を返却します。
	 * ※PMP連携時にはSecondNameは姓ではなく名となる為、要注意。</pre>
	 * @param fullName 姓名
	 * @return 名
	 */
	public static String getSecondNameForPmp(String fullName)
	{
		return JCKLcsCommonUtil.getSecondNameForPmp(fullName);
	}


	/**
	 * オブジェクトがNULL、または空文字か判定します。
	 * <br>
	 * @param val 判定するオブジェクト
	 * @return NULL または空文字の場合はtrue
	 */
	public static boolean isNullOrBlank(Object obj){
		return JCKLcsCommonUtil.isNullOrBlank(obj);
	}

	/**
	 * リストがNULL、または０件か判定します。
	 * <br>
	 * @param list 判定するリストオブジェクト
	 * @return NULL または０件のリストの場合はtrue
	 */
	@SuppressWarnings("unchecked")
	public static boolean isNullOrEmpty(List list){
		return JCKLcsCommonUtil.isNullOrEmpty(list);
	}

	/**
	 * メール受信設定項番をPMP用に変換します。
	 * <br>
	 * @param columnNumber 項番
	 * @return String PMP用項番
	 */
	public static String convOptinmNoForPmp(String columnNumber){
		return JCKLcsCommonUtil.convOptinmNoForPmp(columnNumber);
	}

	/**
	 * メール受信設定項番をeo用に変換します。
	 * <br>
	 * @param columnNumber 項番
	 * @return String eo用項番
	 */
	public static String convOptinmNoForEo(String columnNumber){
		return JCKLcsCommonUtil.convOptinmNoForEo(columnNumber);
	}

// ANK-3846-17-00 ADD START
	/**
	 * カード番号マスク処理(PMP連携用)<br />
	 * <pre>カード番号をペイジェント仕様にマスク処理を行います。
	 * @param target 対象文字列
	 * @return マスク後の文字列
	 */
	public static String maskCrecaNoForPmp1(String target)
	{
		return JZMFormatForMask.crecardExcLeft6Right4(target);
	}
// ANK-3846-17-00 ADD END
	
	
}
