/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKStringUtil
*   ソースファイル名：JKKStringUtil.java
*   作成者          ：富士通
*   日付            ：2012年07月19日
*＜機能概要＞
*   顧客契約共通文字列関連部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v3.00.00    2012/07/19  富士通      新規作成
*   v4.00.00    2012/08/27  富士通      日付誤記修正、lot2へ持ち上げ
*
**********************************************************************/
package eo.common.util;

import java.util.ArrayList;


/**
 * 顧客契約共通文字列関連部品<p>
 * <br>
 * @author 富士通
 */
public class JKKStringUtil
{
	/**
	 * null又は空文字の場合、trueを返却する
	 * 
	 * @param str 検査対象文字列
	 * @return true:null、又は空文字／false:左記以外
	 */
	public static boolean isNullBlank(String str)
	{
		if (str == null || "".equals(str))
		{
			return true;
		}
		return false;
	}
	
	/**
	 * null又は半角スペースの場合、trueを返却する
	 * 
	 * @param str 検査対象文字列
	 * @return true:null、又は半角スペース／false:左記以外
	 */
	public static boolean isNullSpace(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return true;
		}
		return false;
	}
	
	/**
	 * nullを空文字に置き換え
	 * 
	 * @param str 置き換え対象文字列
	 * @return
	 */
	public static String nullToBlank(String str)
	{
		if (str == null)
		{
			return "";
		}
		return str;
	}
	
	/**
	 * nullをスペースに置き換え
	 * 
	 * @param str 置き換え対象文字列
	 * @return
	 */
	public static String nullToSpace(String str)
	{
		if (str == null)
		{
			return " ";
		}
		return str;
	}
	
	/**
	 * null又は空文字の場合、スペースに置き換え
	 * 
	 * @param str 置き換え対象文字列
	 * @return
	 */
	public static String nullBlankToSpace(String str)
	{
		if (isNullBlank(str))
		{
			return " ";
		}
		return str;
	}
	
	/**
	 * 指定した長さ（バイト長）で文字列を切り出す。
	 * 指定長＞文字列長の場合は文字列をそのまま返却する。
	 * 
	 * @param str 対象文字列
	 * @param len 切り出し指定バイト長
	 * @return 切り出し文字列
	 */
	public static String subStringByte(String str, int len)
	{
		int dstlen = 0;
		for (int i = 0; i < str.length(); i++)
		{
			char c = str.charAt(i);
			if (c <= '\u007e'							// 英数字
				|| c == '\u00a5'						// \
				|| c == '\u203e'						// ~
				|| (c >= '\uff61' && c <= '\uff9f')) 	// 半角カナ
			{
				dstlen += 1;
			}
			else
			{
				dstlen += 2;
			}
			if (dstlen > len)
			{
				return str.substring(0, i);
			}
		}
		return str;
	}
	
	/**
	 * null値、又は空文字の場合はtrue、文字列が設定されている場合はfalse
	 * 
	 * @param str
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static boolean isNullEmpty(Object target)
	{
		if (target == null)
		{
			return true;
		}
		
		if (target instanceof String)
		{
			if (target.equals(""))
			{
				return true;
			}
		}
		
		if (target instanceof ArrayList)
		{
			if (((ArrayList) target).isEmpty())
			{
				return true;
			}
		}
		return false;
	}
}
