/*********************************************************************
*	All Right reserved,Copyright (c) Fujitsu, 2010
**********************************************************************
*＜プログラム内容＞
*	システム名		：Futurity
*	モジュール名	：JBSbatInterface
*	ソースファイル名：JBSbatInterface.java
*	作成者			：富士通
*	日付			：2011年02月28日
*＜機能概要＞
*	業務共通部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/02/28	富士通		新規作成
*
**********************************************************************/

package eo.business.common;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.model.common.util.JBSInterface;

//import eo.business.util.JBSbatBusinessFileUtil;
//import eo.business.util.JBSbatRknBusinessUtil;
//import eo.business.util.JBSbatSKStatusControlUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.log.JBSbatLogPrintControl;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
 * 業務共通部品です。
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JBSbatInterface extends JBSInterface
{
	/**
	 * 共通電文
	 */
	protected static JBSbatCommonItem commonItem = null;

	/**
	 * システムパラメータＤＢアクセスクラス
	 */
	private static JBSbatSQLAccess sysParaAcss = null;


	
	/**
	 * メッセージ定義ファイル（MessageList.def）からメッセージ本文を取得する。
	 * 引数で指定されたメッセージＩＤに対応したメッセージ本文を取得し、返却する。
	 * 置換文字列が指定された場合は、メッセージ本文に置換文字列を埋め込んだメッセージ本文を取得する。
	 * @param msgid メッセージＩＤ
	 * @param repChar 置換文字列
	 * @return String メッセージ内容
	 */
	public static String getMessage(String msgid,String[] repChar) {
		return JBSbatLogPrintControl.getMessage(msgid,repChar);
	}

	/**
	 * メッセージ定義ファイル（MessageList.def）からメッセージ本文を取得する。
	 * 引数で指定されたメッセージＩＤに対応したメッセージ本文を取得し、返却する。
	 * @param msgid メッセージＩＤ
	 * @return String メッセージ内容
	 */
	public static String getMessage(String msgid) {
		return JBSbatLogPrintControl.getMessage(msgid);
	}
	
	
    /**
     * 指定されたパラメータＩＤに対応するパラメータマスタの設定値（VALUE）を文字列で取得します。
	 * @param key システムパラメータマスタのパラメータＩＤ
	 * @return String パラメータＩＤに対応する設定値
	 * @throws Exception
	 */
	public static String getSystemParameter(String key) throws Exception{
		// システムパラメータ定義テーブルアクセスを生成する
		if(sysParaAcss == null){
			sysParaAcss = new JBSbatSQLAccess(commonItem,"M_SYS_PARAM");
		}
		
		// 検索キーを設定する
		JBSbatCommonDBInterface paramMap = new JBSbatCommonDBInterface();
		paramMap.setValue("PARAM_ID", key); //パラメータIDを設定する。
		
		//SQL実行
		JBSbatCommonDBInterface retMap = sysParaAcss.selectByPrimaryKeys(paramMap);
		
		//検索結果が0件以外の場合はnullを返却
		if(retMap == null){
			return null;
		}
		
		return retMap.getString("VALUE");
	}
	
	
	/**
	 * （業務サービスでは呼び出さず、フレームワークで呼び出すメソッド。）
	 * システムパラメータアクセスクラスをクローズする。
	 */
	public static void closeSystemParameter() throws Exception{
		if(sysParaAcss != null){
			sysParaAcss.close();
		}
		sysParaAcss = null;
	}

	/**
	 * 必須チェックを実施する。
	 * @param obj String型かLong型のデータ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkNULL(Object obj){
		return JBSbatCheckUtil.invoke(obj ,new String[]{"null"});
	}

	/**
	 * バイト数１チェックを実施する。
	 * @param obj チェックする文字列のデータ
	 * @param keta 桁数（バイト数）
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkKETASUU1(String obj, String keta){
		return JBSbatCheckUtil.invoke(obj ,new String[]{"ketasuu1", keta});
	}

	/**
	 * バイト数２チェックを実施する。
	 * @param obj チェックする文字列データ
	 * @param minKeta 最小桁数（バイト数）
	 * @param maxKeta 最大桁数（バイト数）
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkKETASUU2(String obj, String minKeta, String maxKeta){
		return JBSbatCheckUtil.invoke(obj ,new String[]{"ketasuu2", minKeta, maxKeta});
	}

	/**
	 * Ｌｏｎｇ型チェックを実施する。
	 * @param suu Long型のデータ
	 * @param keta Long型データの最大桁数（バイト数）
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkLONG(Long suu, String keta){
		return JBSbatCheckUtil.invoke(suu ,new String[]{"long_chk", keta});
	}


	/**
	 * 年月日１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkYEAR_MONTH_DAY1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"year_month_day1"});
	}

	/**
	 * 年月１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkYEAR_MONTH1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"year_month1"});
	}

	/**
	 * 日時１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkDAY_HOUR1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"day_hour1"});
	}

	/**
	 * 半角数字１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkHANNKAKU_SUUJI1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"hannkakusuuji1"});
	}

	/**
	 * 半角数字２チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkHANNKAKU_SUUJI2(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"hannkakusuuji2"});
	}

	/**
	 * 半角英数字１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkHANNKAKU_E_SUUJI1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"hannkakuesuuji1"});
	}

	/**
	 * 半角英数字２チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkHANNKAKU_E_SUUJI2(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"hannkakuesuuji2"});
	}

	/**
	 * 全角カナチェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkZENKAKU_KANA(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"zenkakukana"});
	}

	/**
	 * 全角チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkZENKAKU(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"zenkaku"});
	}

	/**
	 * Ｅ−ｍａｉｌチェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkE_MAIL(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"e-mail"});
	}

	/**
	 * 電話番号１チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkTEL1(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"tel1"});
	}

	/**
	 * 電話番号２チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkTEL2(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"tel2"});
	}

	/**
	 * 禁止文字チェックを実施する。
	 * @param moji チェックする文字列データ
	 * @return boolean チェック結果（OK：true／NG：false） 
	 */
	public static boolean checkUNUSED(String moji){
		return JBSbatCheckUtil.invoke(moji ,new String[]{"no_check"});
	}

//	/**
//	 * ファイル出力制御クラスのインスタンスを生成して返却する。
//	 * @param file　出力先ファイル（フルパス）
//	 * @param encode　文字コード（ＯＳ準拠の場合は""（空）を指定）
//	 * @param linefeed　改行コード（ＯＳ準拠の場合は""（空）を指定）
//	 * @param quote　区切り文字（固定長の場合は""（空）を指定）
//	 * @throws Exception
//	 */
//	public static JBSbatBusinessFileUtil createBusinessFileUtil(String file, String encode, String linefeed, String quote) throws Exception {
//		return new JBSbatBusinessFileUtil(file, encode, linefeed, quote);
//	}
//
//	/**
//	 * ファイル出力処理を行う（固定長）。
//	 * @param obj	ファイル出力制御クラスインスタンス	
//	 * @param data	ファイルに出力する内容（１レコード）
//	 * @throws Exception
//	 */
//	public static void printBusinessFileUtil(JBSbatBusinessFileUtil obj, String data) throws Exception {
//		obj.print(data);
//	}
//	
//	/**
//	 * ファイル出力処理を行う（可変長）。
//	 * @param obj	ファイル出力制御クラスインスタンス	
//	 * @param list	ファイルに出力する内容（１レコード）
//	 * @throws Exception
//	 */
//	public static void printBusinessFileUtil(JBSbatBusinessFileUtil obj, ArrayList list) throws Exception {
//		obj.print(list);
//	}
//	
//	/**
//	 * ファイル出力制御クラスのファイル書込みオブジェクトをクローズする。
//	 * @param obj	ファイル出力制御クラスインスタンス
//	 * @throws Exception
//	 */
//	public static void closeBusinessFileUtil(JBSbatBusinessFileUtil obj) throws Exception{
//		obj.close();
//	}
	
	/** Unicode変換テーブル(EUC/Shift-JIS⇒MS932) */
	private static final char[][] UNI_CONV_1 = {
		{ 0x2014, 0x2015 },
		{ 0x2016, 0x2225 },
		{ 0x2212, 0xff0d },
		{ 0x301c, 0xff5e },
		{ 0x00a2, 0xffe0 },
		{ 0x00a3, 0xffe1 },
		{ 0x00ac, 0xffe2 },
	};

	/** Unicode変換テーブル(MS932⇒EUC/Shift-JIS)*/
	private static final char[][] UNI_CONV_2 = {
		{ 0x2015, 0x2014 },
		{ 0x2225, 0x2016 },
		{ 0xff0d, 0x2212 },
		{ 0xff5e, 0x301c },
		{ 0xffe0, 0x00a2 },
		{ 0xffe1, 0x00a3 },
		{ 0xffe2, 0x00ac },
	};

	/**
	 * Unicodeの強制変換を行います。
	 * <br>
	 * @param arg0 変換対象の文字列
	 * @param convList Unicode変換定義
	 * @return 変換後文字列
	 */
	private static String changeUnicode(String arg0,char[][] convList)
	{
		if (isNull(arg0))
		{
			return arg0;
		}

		char[] chars = arg0.toCharArray();

		for (int i = 0; i < chars.length; i++)
		{
			chars[i] = transUnicode(chars[i], convList);
		}

		return new String(chars);
	}

	/**
	 * 指定された変換定義に従ってUnicodeの強制変換を行います。
	 * <br>
	 * @param c Unicode変換する文字
	 * @param convList Unicode変換定義
	 * @return Unicode変換された文字
	 */
	private static char transUnicode(char c, char[][] convList)
	{
		for (int i = 0; i < convList.length; i++)
		{
			char[] chars = convList[i];

			if (chars[0] == c)
			{
				return chars[1];
			}
		}

		return c;
	}

	/**
	 * <PRE>
	 * 文字コードの変換を行います。
	 * Unicodeコードポイントの強制変換を行います。
	 * @param value コード変換対象の文字列
	 * @return 変換後の文字列
	 * </PRE>
	 */
	public static String charConverter(String value){
		return changeUnicode(value,UNI_CONV_1);
		//return changeUnicode(value,UNI_CONV_2);
	}

	/**
	 * <PRE>
	 * 文字コードの変換を行います。
	 * Unicodeコードポイントの強制変換します。
	 * @param value コード変換対象の文字列
	 * @param charCode 出力する文字コードを「UTF-8」「Shift-JIS」「EUC-JP」「DEFAULT」で指定する。
	 * 　　　　　　　　 ※「DEFAULT」はOSに準拠した文字コード
	 * @return 変換後の文字列
	 * </PRE>
	 */
	public static String charConverter(String value, String charCode){
//2012/10/04 文字コード変換はShift-JIS、EUC-JP指定時のみとする start
		//Shift-JIS・EUC-JPのみ変換用の変換
		if("Shift-JIS".equals(charCode) || "EUC-JP".equals(charCode))
		{
			return changeUnicode(value,UNI_CONV_2);
		}
//		//その他の変換（UTF-8）
//		else
//		{
//			return changeUnicode(value,UNI_CONV_1);
//		}
		return value;
//2012/10/04 文字コード変換はShift-JIS、EUC-JP指定時のみとする end
	}
	
//	/**
//	 * 料金業務共通クラスのインスタンスを生成して返却する。
//	 * <BR>
//	 * @return JBSbatRknBusinessUtil 料金業務共通クラス
//	 */
//	public static JBSbatRknBusinessUtil JBSbatRknBusinessUtil() {
//		return new JBSbatRknBusinessUtil();
//	}
//	
//	/**
//     * コンストラクタです。（税率マスタ参照時）<BR>
//     * 税率マスタを検索し、検索結果をthis.zerituMapに格納します。
//     * ※初期処理にて呼び出して下さい。<BR>
//     * 
//     * @param commonItem バッチ共通電文
//     * @param opeDate 運用日
//     * @throws Exception
//	 * @return JBSbatRknBusinessUtil 料金業務共通クラス
//     */
//	public static JBSbatRknBusinessUtil JBSbatRknBusinessUtil(JBSbatCommonItem commonItem, String opeDate) throws Exception{
//		return new JBSbatRknBusinessUtil(commonItem, opeDate);
//	}
//	
//	/**
//	 * 契約状態判定処理
//	 * 基準日に対する開始日、課金開始日、初回課金開始日の契約状態を判定して返却する。
//	 * @param kizyun	基準日
//	 * @param kaishi	開始日
//	 * @param kaiyaku	解約日
//	 * @param kyushi	休止日
//	 * @param nKyushi	休止解除日
//	 * @param teishi	停止日
//	 * @param nTeishi	停止解除日
//	 * @param kakin	課金開始日
//	 * @param sKakin	初回課金開始日
//	 * @return　String[3]（0:開始日の契約状態、1:課金開始日の契約状態、2:初回課金開始日の契約状態）
//	 */
//	public static String[] contStateJudge(String kizyun, String kaishi, String kaiyaku, String kyushi, String nKyushi, String teishi, String nTeishi, String kakin, String sKakin){
//		return JBSbatRknBusinessUtil.contStateJudge(kizyun, kaishi, kaiyaku, kyushi, nKyushi, teishi, nTeishi, kakin, sKakin);
//	}
//
//	/**
//     * 小数点第一位による丸め処理を行う。<BR>
//     * 負の数の場合は絶対値を丸めた数に-1を乗算する。
//     * <BR>
//     * @param roundWay 丸め方法 1:四捨五入、2:切り上げ、3:切捨て、左記以外:丸めなし
//     * @param num 丸め処理前の数値
//     * @return double 丸め処理後の数値
//     */
//	public static double round(String roundWay, double num)
//	{
//		return JBSbatRknBusinessUtil.round(roundWay, num);
//	}
//	
//
//	/**
//     * 桁有効桁数＋１による丸め処理を行う。<BR>
//     * 例)roundWay = 1(四捨五入), num = 23.456, keta = 2 の場合<BR>
//     * 戻り値：23.46<BR>
//     * 負の数の場合は絶対値を丸めた数に-1を乗算する。 
//     * <BR>
//     * @param roundWay 丸め方法 1:四捨五入、2:切り上げ、3:切捨て、左記以外:丸めなし
//     * @param num 丸め処理前の数値
//     * @param keta 有効桁数（少数点以下の桁数）
//     * @return double 丸め処理後の数値
//     */
//	public static double roundPlace(String roundWay, double num, int keta)
//	{
//		return JBSbatRknBusinessUtil.roundPlace(roundWay, num, keta);
//	}
	
	/**
     * getSystemDateTimeMs 年月日時間（yyyyMMddHHmmssSSS）でフォーマットされたシステム日付を返す。
     * <BR>
     * @return strSystemDate：フォーマット後のシステム日付
     */
	public static String getSystemDateTimeStamp()
	{
		return JBSbatDateUtil.getSystemDateTimeStamp();
	}

	/**
     * getSystemDateTime 年月日時間（yyyyMMddHHmmss）でフォーマットされたシステム日付を返す。
     * <BR>
     * @return strSystemDate：フォーマット後のシステム日付
     */
	public static String getSystemDateTime()
	{
		return JBSbatDateUtil.getSystemDateTime();
	}

	/**
     * getSystemDate 年月日（yyyyMMdd）でフォーマットされたシステム日付を返す。
     * <BR>
     * @return strSystemDate：フォーマット後のシステム日付
     */
	public static String getSystemDate()
	{
		return JBSbatDateUtil.getSystemDate();
	}

	/**
     * 日付妥当性チェック処理
     * <BR>
     * @param date yyyyMMddもしくはyyyyMM形式の日付
     * @param length チェック対象の日付の桁数
     * @return boolean
     */
	public static boolean checkDate(String date, int length)
	{
		return JBSbatDateUtil.checkDate(date, length);
	}
	
	/**
	 * 時間妥当性チェック処理
	 * @param time HHmmssSもしくはHHmmssSSS形式の時間
	 * @param length チェック対象の日付の桁数
	 * @return　boolean
	 */
	public static boolean checkTime(String time, int length)
	{
		return JBSbatDateUtil.checkTime(time, length);
	}

	/**
     * Ｎ日前(後)の日付を算出する。
     * <BR>
     * @param ymd 日付
     * @param num 調整したい日数
     * @return String 調整後の日付
     */
	public static String adjustDate(String ymd, int num)
	{
		return JBSbatDateUtil.adjustDate(ymd, num);
	}

	/**
     * Ｎヶ月前(後)の日付を算出する。
     * <BR>
     * @param ymd 日付
     * @param num 調整したい月数
     * @return String 調整後の日付
     */
	public static String adjustMonth(String ymd, int num)
	{
		return JBSbatDateUtil.adjustMonth(ymd, num);
	}

	/**
     * 月末日取得処理 指定された年月の月末日を返却する。
     * <BR>
     * @param ym 年月
     * @return String 末日
     */
	public static String getEndOfMonth(String ym)
	{
		return JBSbatDateUtil.getEndOfMonth(ym);
	}

	/**
     * 日差取得処理 日付１と日付２の日差を返却する。 ※同日指定の場合にflgに"1"、"3"を指定するとどちらも日差１日を返却する。
     * <BR>
     * @param ymd1 日付１
     * @param ymd2 日付２
     * @param flg "1"：両日付を差に含める。"2"：両日付を差に含めない。"3"：片方の日付を差に含める。それ以外：純粋な差分を求める。
     * @return int 日差
     */
	public static int dayDiff(String ymd1, String ymd2, String flg)
	{
		return JBSbatDateUtil.dayDiff(ymd1, ymd2, flg);
	}

	/**
     * 月差取得処理 年月１と年月２の月差を返却する。 ※同月指定の場合にflgに"1"、"3"を指定するとどちらも月差１日を返却する。
     * <BR>
     * @param ym1 年月１
     * @param ym2 年月２
     * @param flg "1"：両年月を差に含める。"2"：両年月を差に含めない。"3"：片方の年月を差に含める。それ以外：純粋な差分を求める。
     * @return int 月差
     */
	public static int monthDiff(String ym1, String ym2, String flg)
	{
		return JBSbatDateUtil.monthDiff(ym1, ym2, flg);
	}
	
	/**
	 * 年月日時分秒差取得処理
	 * 年月日時分秒１、年月日時分秒２間の秒差を返却する。
	 * 年月日時分秒１ - 年月日時分秒２
	 * @param ymd1 年月日１ 形式（yyyyMMdd）
	 * @param hmsS1 時分秒１ 形式（HHmmssS or HHmmssSSS）
	 * @param ymd2 年月日２ 形式（yyyyMMdd）
	 * @param hmsS2 時分秒２ 形式（HHmmssS or HHmmssSSS）
	 * @return String 秒(少数点以下はミリ秒、[形式]0.0##)
	 */
	public static String mSecDiff(String ymd1, String hmsS1, String ymd2, String hmsS2)
	{
		return JBSbatDateUtil.mSecDiff(ymd1, hmsS1, ymd2, hmsS2);
	}

	/**
     * 月差取得処理（群締め日含む） 年月日１、年月日２間と、群締め日を考慮したの月差を返却する。
     * <BR>
     * @param ymd1  年月日１
     * @param ymd2 年月日２
     * @param cycdate 群締め日
     * @return int 月差
     */
	public static int cycMonthDiff(String ymd1, String ymd2, String cycdate)
	{
		return JBSbatDateUtil.cycMonthDiff(ymd1, ymd2, cycdate);
	}

	/**
     * 年差取得処理（群締め日含む） 年月日１、年月日２間と、群締め日を考慮したの年差を返却する。
     * <BR>
     * @param ymd1 年月日１
     * @param ymd2 年月日２
     * @param cycdate 群締め日
     * @return int 年差
     */
	public static int cycYearDiff(String ymd1, String ymd2, String cycdate)
	{
		return JBSbatDateUtil.cycYearDiff(ymd1, ymd2, cycdate);
	}

	/**
     * 請求年月取得処理
     * <BR>
     * @param ymd 請求年月日
     * @param cycdate 請求締日
     * @return String 請求年月
     */
	public static String getBillDate(String ymd, String cycdate)
	{
		return JBSbatDateUtil.getBillDate(ymd, cycdate);
	}

	/**
     * 請求開始終了日取得処理
     * <BR>
     * @param ymd 請求年月日
     * @param cycdate 請求締日
     * @return String[] 請求開始終了日配列（配列[0]：請求開始日、配列[1]：請求終了日）
     */
	public static String[] getCycMonthStrEnd(String ymd, String cycdate)
	{
		return JBSbatDateUtil.getCycMonthStrEnd(ymd, cycdate);
	}

	/**
     * 対象日付の曜日を取得する
     * <BR>
     * @param ymd 対象日付
     * @return String 曜日（1:日曜日〜7:土曜日）
     */
	public static String getDayOfWeek(String ymd)
	{
		return JBSbatDateUtil.getDayOfWeek(ymd);
	}
	
	/**
	 * 半角空白文字充填処理
	 * <BR>
	 * @param para 調整する文字列
	 * @param len 調整する長さ
	 * @param flg 空白埋め左右判断フラグ。（true：右埋め、false：左埋め）
	 * @return String 空白充填後の文字列。文字列がlenより長い場合はそのまま返却する。
	 */
	public static String fillHalfSpace(String para, int len, boolean flg)
	{
		return JBSbatStringUtil.fillHalfSpace(para, len, flg);
	}
	
	/**
	 * 全角空白文字充填処理
	 * <BR>
	 * @param para 調整する文字列
	 * @param len 調整する長さ
	 * @param flg 空白埋め左右判断フラグ。（true：右埋め、false：左埋め）
	 * @return String 空白充填後の文字列。文字列がlenより長い場合はそのまま返却する。
	 */
	public static String fillSpace(String para, int len, boolean flg)
	{
		return JBSbatStringUtil.fillSpace(para, len, flg);
	}
	
	/**
	 * 前後空白文字（全角、半角）削除処理
	 * <BR>
	 * @param para 対象文字列
	 * @return String 前後の空白を削除した文字列を返却する。
	 */
	public static String trim(String para)
	{
		return JBSbatStringUtil.trim(para);
	}

	/**
	 * 前空白文字（全角、半角）削除処理
	 * <BR>
	 * @param para	対象文字列
	 * @return String 先頭の空白を削除した文字列を返却する。
	 */
	public static String Ltrim(String para)
	{
		return JBSbatStringUtil.Ltrim(para);
	}

	/**
	 * 後空白文字（全角、半角）削除処理
	 * <BR>
	 * @param para 対象文字列
	 * @return String 後ろの空白を削除した文字列を返却する。
	 */
	public static String Rtrim(String para)
	{
		return JBSbatStringUtil.Rtrim(para);
	}
	
	/**
	 * 指定した文字列が上限値と下限値の有効範囲内か判断する。（文字列比較）
	 * <BR>
	 * @param upper 上限値
	 * @param lower 下限値
	 * @param para 指定文字列
	 * @param flg 指定文字列が数値として扱われるデータか判断する。（1:数値、2:文字列（可変）、3:文字列（年月日）、4:文字列（時分秒））
	 * @return boolean true :有効範囲内
	 * 					false:有効範囲外
	 * @throws Exception
	 */
	public static boolean rangeCheck(String upper, String lower, String para, String flg) throws Exception
	{
		return JBSbatStringUtil.rangeCheck(upper, lower, para, flg);
	}
	
	/**
	 * 数値形式文字列充填処理<BR>
	 * 例）長さ　　　　　 7<BR>
	 * 　　プラス値　　 221　→　0000221<BR>
	 * 　　マイナス値　-221　→　-000221<BR>
	 * <BR>
	 * @param para 調整する文字列
	 * @param len 調整する長さ
	 * @return String 充填後の文字列。文字列がlenより長い場合はそのまま返却する。
	 */
	public static String padNumFormString(String para, int len)
	{
		return JBSbatStringUtil.padNumFormString(para, len);
	}
	
	/**
	 * 文字列を指定されたサイズに調整する。<BR>
	 * 指定サイズが文字列のサイズ以上の場合は、文字列の後ろに半角空白を補填する。<BR>
	 * 指定サイズが文字列のサイズより小さい場合は、文字列の語尾を切り捨てる。
	 * <BR>
	 * @param para 調整前の文字列
	 * @param size 指定サイズ（バイト数）
	 * @param encode 文字コード（ＯＳ準拠の場合は""（空）を指定）
	 * @return String 調整後の文字列
	 * @throws Exception
	 */
	public static String adjustCharSize(String para, int size, String encode)
			throws Exception
	{
		return JBSbatStringUtil.adjustCharSize(para, size, encode);
	}	

	/**
	 * ファイル名編集処理
	 * ファイル生成制御マスタより取得した値を基に動的にファイル名を編集する。
	 * @param fileNo		// ファイル連番
	 * @param dbMap			// ファイル生成制御マスタ情報
	 * @param fileKbnArray	// ファイル識別格納配列
	 * 							[0]：テナントコード
	 * 							[1]：サブシステムコード
	 * 							[2]：請求年月
	 * 							[3]：運用日
	 * 							[4]：代理店コード
	 * 							[5]：システム日時
	 * 							[6]：（自由設定）
	 * @return	String[]	// ファイル名生成情報(20Byte右スペースパディング)
	 * 							[0]：ファイル識別１
	 * 							[1]：ファイル識別２
	 * 							[2]：ファイル識別３
	 * 							[3]：ファイル識別４
	 * 							[3]：ファイル識別５
	 * @throws Exception
	 */
	public static String[] editFileItemName(String fileNo, JBSbatCommonDBInterface dbMap, String[] fileKbnArray) throws Exception {
		return JBSbatStringUtil.editFileItemName(fileNo, dbMap, fileKbnArray);
	}
	
	/**
	 * ファイル連番フォーマット編集処理
	 * int型で入力されたファイル連番を3桁固定のフォーマットで返却する。
	 * @param para ファイル連番
	 * @return String
	 */
	public static String editFileNoFormat(int para) {
		return JBSbatStringUtil.editFileNoFormat(para);
	}
	
	/**
	 * リストの要素をカンマ区切りの文字列に変換して返却する。
	 * @param list
	 * @return String
	 */
	public static String convListToString(ArrayList list) {
		return JBSbatStringUtil.convListToString(list);
	}
	
	/**
	 * HashMapのキー、要素をカンマ区切りの文字列に変換して返却する。
	 * 
	 * @param map ハッシュマップ
	 * @return String キー1=値1,キー2=値2,･･･
	 */
	public static String convMapToString(HashMap map)
	{
		return JBSbatStringUtil.convMapToString(map);
	}
	
	/**
	 * double→String変換処理　
	 * double型からString型へ正確な形式で変換する
	 * @param num String型に変換したいdouble値
	 * @return　String
	 */
	public static String convDoubleToString(double num) {
		return JBSbatStringUtil.convDoubleToString(num);
	}
	
	/**
	 * double→String変換処理　
	 * double型からString型へ正確な形式で変換する
	 * @param num String型に変換したいdouble値
	 * @return　String
	 */
	public static String convDoubleToString(BigDecimal num) {
		return JBSbatStringUtil.convDoubleToString(num);
	}
	
	/**
	 * 請求年月（運用日からの直近）取得処理
	 * @param ymd 請求年月日
	 * @param cycdate 請求締日
	 * @return　String 請求年月
	 */
	public static String getNextBillDate(String ymd, String cycdate) {
		return JBSbatDateUtil.getNextBillDate(ymd, cycdate);
	}
	
	/**
	 * 次回請求日付と群終了日を元に対象となる本計算月を算出します。
	 * 
	 * @param seikyuDate 次回請求日付
	 * @param groupEndDay 群終了日
	 * @param sysSeikyuYMSetKbn 請求日設定区分（システムパラメタ設定値）
	 * @return String 本計算月
	 */
	public static String getSeikyuMonth(String seikyuDate, String groupEndDay, String sysSeikyuYMSetKbn) {
		return JBSbatDateUtil.getSeikyuMonth(seikyuDate, groupEndDay, sysSeikyuYMSetKbn);
	}
	
	/**
	 * Oracleシーケンスの採番値を取得し、指定された接頭辞の付与と接頭辞と採番値の間のゼロ埋めを行う。<br>
	 * 特記事項：<br>
	 * 例１）通常の場合<br>
	 * 　　接頭辞が"D"、シーケンス定義の桁が5、Oracleシーケンスが100であった場合、"D00100"を返却する。<br>
	 * 例２）桁の指定が、実際のOracleシーケンス値より大きい場合<br>
	 * 　　接頭辞が"D"、シーケンス定義の桁が2、Oracleシーケンスが100であった場合、"D100"を返却する。<br>
	 * @param seqName シーケンス定義名
	 * @param prefix 接頭辞
	 * @param keta シーケンス定義の桁（接頭辞を含まない）
	 * @return String 接頭辞+ゼロ埋めしたOracleシーケンスの採番値（例：D00000000001等）
	 * @throws Exception 採番値の取得に失敗した場合
	 */
	public static String getFormatedNextSeq(String seqName,String prefix,int keta) throws Exception{
	
		return JBSbatOracleSeqUtil.getFormatedNextSeq(commonItem.getConnection(), seqName, prefix, keta);
	}
	
//	/**
//	 * 運用日と対象日付を元に、運用日以降の対象年月日を返却します。
//	 * 
//	 * @param opedate 運用日
//	 * @param targetDay 対象日付
//	 * @return String 次回対象年月日
//	 */
//	public static String getNextYMD(String opedate, String targetDay )
//	{	
//		return JBSbatSKStatusControlUtil.getNextYMD(opedate, targetDay);
//	}
}
