/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCNStringUtil
*	ソースファイル名：JCNStringUtil.java
*	作成者			：富士通
*	日付			：2011年05月19日
*＜機能概要＞
*	文字列編集を行う共通機能を提供する。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/19	富士通		新規作成
*
**********************************************************************/
package eo.business.common;

import java.util.ArrayList;

import eo.common.constant.JCNStrConst;

/**
 * 文字列編集を行うコンテンツ決済用共通処理を行うクラスです。<p>
 * <br>
 * @author 富士通
 */
public class JCNBatStringUtil 
{
	
	/**
	 * 先頭からゼロパディングします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でゼロパディング対象文字列、桁数を設定します。<br>
	 *
	 * 2.引数を元に指定桁数にてゼロパディングを行います。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param  strInData    変換対象金額。
	 * @param  iCnt    ゼロパディング桁数。
	 * @return strOutData   変換後金額。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static String strZeroPad(String strInData, int iCnt) throws Exception
	{
		// 指定桁数までゼロパディング
		StringBuffer strBufRe = new StringBuffer();
		int j = iCnt - strInData.length();
		for(int i = 0; i < j ; i++)
		{
			strBufRe.append(JCNStrConst.S_ZERO);
		}

		return strBufRe.toString() + strInData;
	}
	
	/**
	 * 文字列の末尾から半角空白パディングします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でパディング対象文字列、桁数を設定します。<br>
	 *
	 * 2.引数を元に指定桁数にて半角空白パディングを行います。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param  strInData    変換対象文字列。
	 * @param  iCnt         パディング桁数。
	 * @return strOutData   変換後文字列。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static String strHankakuSpacePad(String strInData, int iCnt) throws Exception
	{
		// 指定桁数まで半角スペースパディング
		StringBuffer strBufRe = new StringBuffer(strInData);
		int j = iCnt - strInData.length();
		for(int i = 0; i < j ; i++)
		{
			strBufRe.append(" ");
		}

		return strBufRe.toString();
	}
	
	/**
	 * 指定バイト数単位に分割しリストを作成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で分割対象文字列、分割桁数を設定します。<br>
	 *
	 * 2.引数を元に指定桁数にて分割しリスト作成を行います。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param  strInData    分割対象文字列。
	 * @param  iByte        分割桁数。
	 * @return resultList   分割文字列リスト。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static ArrayList<String> createList(String strInData, int iByte) throws Exception
	{
		ArrayList<String> resultList = new  ArrayList<String>();
//		int j = 0;
		for(int i = 0; i < strInData.length();)
		{
			resultList.add(strInData.substring(i, i + iByte));
//			System.out.println(resultList.get(j));
//			j++;
			i = i + iByte;
		}
		
		return resultList;
	}
	
	/**
	 * CSV形式に文字列編集を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で連結文字列、""括り有無を設定します。<br>
	 *
	 * 2.引数を元に文字列を連結します。
	 *   連結文字列最後尾には改行コードを設定します。<br>
	 *   返却文字列内のnullは""へ置換します。
	 * </pre>
	 * <p>
	 * @param strData       出力対象データ。
	 * @param bDqFlg        ""括りあり(true),括りなし(false)。
	 * @return strRec       文字列連結結果を返却します。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static String createCSV(String[] strData, boolean bDqFlg) throws Exception
	{

		StringBuffer sBufRec = new StringBuffer();

		for (int i = 0; i < strData.length; i++)
		{
			if(!bDqFlg)
			{
				sBufRec.append(strData[i]);
			}
			else
			{
				sBufRec.append(JCNStrConst.S_SEP_DQ);
				sBufRec.append(strData[i]);
				sBufRec.append(JCNStrConst.S_SEP_DQ);
			}
				
			if(i < strData.length - 1)
			{
					sBufRec.append(JCNStrConst.S_SEP_CAM);
			}
		}
		
		sBufRec.append(System.getProperty("line.separator"));
		
		return sBufRec.toString().replace(JCNStrConst.S_IS_NULL, "");
	}
}
