/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKCommonActUtil
*	ソースファイル名：JKKCommonActUtil.java
*	作成者			：富士通
*	日付			：2013年01月15日
*＜機能概要＞
*	顧客契約ファミリーパック用共通部品です。
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2013/01/15  FJ          新規作成 ANK-1276-00-00
*
**********************************************************************/
package eo.common.util;

import java.text.ParseException;
import java.util.Map;

import eo.common.constant.JKKFamiilyPackConst;

/**
 * フロント受付用共通部品
 * <br>
 * @author 富士通
 */
public class JKKCommonActUtil extends JPCUtilCommon
{

	/**
	 * null値変換処理
	 * <br>
	 * @param arg1 引数１
	 * @param arg2 引数２
	 * @return 引数１がnullの場合は引数２、null以外の場合は引数１を返却する。
	 */
	public static String nvl(String arg1, String arg2)
	{
		return null == arg1 ? arg2 : arg1;
	}

	/**
	 * Map項目値取得処理
	 * <br>
	 * @param parmMap Mapオブジェクト
	 * @param key 取得対象の項目名
	 * @param value 指定値
	 * @return 取得値がnullの場合は指定値、null以外の場合は取得値を返却する。
	 */
	public static String getMapValueString(Map<Object, Object> parmMap, String key, String value)
	{
		Object obj = null;
		if (null != parmMap)
		{
			obj = parmMap.get(key);
		}
		return null == obj ? value : obj.toString();
	}

	/**
	 * 指定日付(翌月月初)取得処理
	 * 指定した年月の翌月月初の年月日を返却します。
	 * <br>
	 * @param arg 年月(yyyyMM) or 年月日(yyyyMMdd)
	 * @return String 翌月月初日付(yyyyMMdd)
	 * @throws ParseException 
	 */
	@SuppressWarnings("static-access")
	public static String getBeginOfNextMonthDate(String arg) throws ParseException
	{
		if (arg == null)
		{
			return null;
		}
		
		return JKKCommonActUtil.addMonth(arg.substring(0, 6) + "01", 1);
	}

	/**
	 * 指定日付(月末)取得処理
	 * 指定した年月の月末日の年月日を返却します。
	 * <br>
	 * @param arg 年月(yyyyMM) or 年月日(yyyyMMdd)
	 * @return String 月末日付(yyyyMMdd)
	 */
	@SuppressWarnings("static-access")
	public static String getEndOfMonthDate(String arg)
	{
		if (arg == null)
		{
			return null;
		}
		
		return arg.substring(0, 6) + JKKCommonActUtil.getEndOfMonth(arg);
	}
	
	/**
	 * 指定日付(月末加減算)取得処理
	 * 指定した年月の月末日を加減算した年月日を返却します。
	 * <br>
	 * @param arg 年月(yyyyMM) or 年月日(yyyyMMdd)
	 * @return String 月末(加減算)日付(yyyyMMdd)
	 */
	@SuppressWarnings("static-access")
	public static String getEndOfMonthAddDate(String arg0, int arg1)
	{
		if (arg0 == null)
		{
			return null;
		}
		
		return JKKCommonActUtil.addDay(arg0.substring(0, 6) + JKKCommonActUtil.getEndOfMonth(arg0), arg1);
	}

	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	public static boolean isNull(Object arg0)
	{
		return JPCCommonUtil.isNull(arg0);
	}
	
	/**
	 * 文字列を「"」で囲みます。
	 * <br> 
	 * @param arg0 対象文字列
	 * @return "対象文字列"
	 */
	public static String getStringToDblQuote(String arg0)
	{
		StringBuffer sb = new StringBuffer();

		sb.append(JKKFamiilyPackConst.S_DUBLLEQ);
		sb.append(arg0);
		sb.append(JKKFamiilyPackConst.S_DUBLLEQ);

		return sb.toString();
	}
}
