/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCRUtilCommon
*   ソースファイル名：JCRUtilCommon.java
*   作成者          ：富士通
*   日付            ：2011年04月27日
*＜機能概要＞
*   対応履歴共通部品アクセッサークラス
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/27   FJ) 富士通  新規作成
*	v6.00.00	2013/08/30	FJ)斉藤諭	OM-2013-0001243対応 改行コード付加処理追加
*
**********************************************************************/
package eo.common.util;

import java.io.File;
import java.util.List;

/**
 * 対応履歴共通部品のアクセッサークラスです。<p>
 * <br>
 * @author 富士通
 */
public class JCRUtilCommon extends JPCUtilCommon
{

	/**
	 * 文字列のバイト数を取得する。
	 * @param str 対象文字列
	 * @return バイト数
	 * @throws Exception 例外
	 */
	public static int getByteLength(String str) throws Exception
	{
		return JCRStringUtil.getByteLength(str);
	}

	/**
	 * 引数で指定されたCSVファイル名からファイルの内容を一行ずつ読取り、カンマ区切りの文字を
	 * List格納する。格納した行データのListをList配列に順番に格納し返す。
	 * 引数で指定されたファイルパスを取得し返す。
	 * @param fileName ファイル名(パスを含む)
	 * @return List ファイル内データを格納したリスト配列(一行一List)
	 * @throws Exception 例外
	 */
	public static List<List<String>> convCsvFiletoList(String fileName) throws Exception
	{
		return JCRCsvFileShori.convCsvFiletoList(fileName);
	}

	/**
	 * 引数で指定されたバイトデータから一行ずつデータを読取り、文字列リスト変換処理に渡す
	 * 処理結果をList型に格納し、全ての行の読取りが完了したら、格納したListを呼出し元に返す。
	 * 引数で指定されたファイルパスを取得し、返却する。
	 * @param byteData バイトデータ
	 * @return List<List<String>> ファイル内データを格納したリスト
	 * @throws Exception 例外
	 */
	public static List<List<String>> convCsvFiletoList(byte[] byteData) throws Exception
	{
		return JCRCsvFileShori.convCsvFiletoList(byteData);
	}

	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとにArrayList格納する。
	 * @param lineData 一行分のCSVデータ
	 * @return ArrayList 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 **/
	public static List<String> convStringToList(String lineData) throws Exception
	{
		return JCRCsvFileShori.convStringToList(lineData);
	}

	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとに分割し、
	 * 引数の囲い文字を除外した状態でList格納する。
	 * @param  line 一行分のCSVデータ
	 * @param  kakoiMoji 囲み文字
	 * @return List 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 */
	public static List<String> convEscapeStringToList(String line, String kakoiMoji) throws Exception
	{
		return JCRCsvFileShori.convEscapeStringToList(line, kakoiMoji);
	}

	/**
	 * 引数で指定されたファイルを削除する
	 * @param  filePath 削除を行うファイルパス
	 * @return 正常に完了した場合true
	 * @throws Exception 例外
	 */
	
	public static boolean deleteTempFile(String filePath) throws Exception
	{
		return JCRCsvFileShori.deleteTempFile(filePath);
	}

	/**
	 * 引数で指定されたディレクトリを削除する（ファイルやサブフォルダが含まれていても削除します）
	 * @param  path 削除を行うパス
	 * @return 正常に完了した場合true
	 * @throws Exception 例外
	 */
	
	public static boolean deleteDir(String path) throws Exception
	{
		return JCRCsvFileShori.deleteDir(path);
	}

	/**
	 * ファイルを移動する
	 * @param targetFile 対象ファイル
	 * @param idousakiPath 移動先パス
	 * @return 正常に完了した場合true
	 * @throws Exception 例外
	 */
	public static boolean moveFile(File targetFile, File idousakiPath) throws Exception
	{
		return JCRFileUtil.moveFile(targetFile, idousakiPath);
	}

	/**
	 * ファイルを複写する
	 * @param targetFile 対象ファイル
	 * @param toDirPath 複写先パス
	 * @return 正常に完了した場合true
	 */
	public static boolean copyFile(File targetFile, File toDirPath)
	{
		return JCRFileUtil.copyFile(targetFile, toDirPath);
	}

	/**
	 * ディレクトリー存在チェック
	 * @param path パス
	 * @throws Exception 例外
	 * @return ファイルオブジェクト(ディレクトリーでない場合はnullを返す)
	 */
	public static File checkDirExist(String path) throws Exception
	{
		return JCRFileUtil.checkDirExist(path);
	}

	/**
	 * ファイル移動・削除
	 * @param moveFiles 移動ファイルの配列
	 * @param deleteFiles 削除ファイルの配列
	 * @param outputPath 出力先パス
	 * @throws Exception 例外
	 */
	public static void moveAndDeleteFile(File[] moveFiles, File[] deleteFiles, File outputPath) throws Exception
	{
		JCRFileUtil.moveAndDeleteFile(moveFiles, deleteFiles, outputPath);
	}

	/**
	 * 入力文字列に「..」が含まれていないことを検査します。
	 * @param filePath チェック対象パス情報
	 * @return 「..」が含まれていない場合はパス情報
	 * @throws IllegalArgumentException パスに「..」が含まれている場合
	 */
	public static File inspection(File filePath) throws IllegalArgumentException
	{
		return JCRFileUtil.inspection(filePath);
	}

	/**
	 * 入力文字列に「..」が含まれていないことを検査します。
	 * @param filePath チェック対象文字列
	 * @return 「..」が含まれていない場合は入力文字列
	 * @throws IllegalArgumentException 入力文字列に「..」が含まれている場合
	 */
	public static String inspection(String filePath) throws IllegalArgumentException
	{
		return JCRFileUtil.inspection(filePath);
	}

	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	public static boolean isNull(Object arg0) 
	{
		return JPCCommonUtil.isNull(arg0);
	}

	/**
	 * 有効なパラメータか判定します。
	 * 文字列に値が設定されていない場合はエラーとします。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return パラメータが不正な場合はfalse
	 */
	protected static boolean isValidParameter(Object arg0) 
	{
		return JPCCommonUtil.isValidParameter(arg0);
	}

	/**
	 * 有効なパラメータか判定します。
	 * 文字列に値が設定されていない場合、及び指定された桁数と
	 * 一致しない場合はエラーとします。
	 * <br>
	 * @param arg0 判定する文字列
	 * @param arg1 文字列として有効な桁数
	 * @return パラメータが不正な場合はfalse
	 */
	protected static boolean isValidParameter(String arg0, int arg1) 
	{
		return JPCCommonUtil.isValidParameter(arg0, arg1);
	}
	
	/**
	 * 日付オブジェクトを指定された形式の文字列に編集します。
	 * <br>
	 * @param date 編集する日付オブジェクト
	 * @param parseformat java.util.Date型の日付書式
	 * @param dateformat 編集する文字列の日付書式
	 * @return String 指定された形式に編集された文字列
	 */
	public static String formatDate(String date, String parseformat, String dateformat)
	{
		return JCRStringUtil.formatDate(date, parseformat, dateformat);
	}

	/**
	 * <p>
	 * 年(yyyy)、月(MM)、日(dd)、時(HH)、分(mm)の文字列を結合します。
	 * </p>
	 * @param year 年(yyyy)
	 * @param month 月(MM)
	 * @param day 日(dd)
	 * @param hour 時(HH)
	 * @param minute 分(mm)
	 * @param second 分(mm)
	 * @return 年(yyyy)、月(MM)、日(dd)、時(HH)、分(mm)、秒(ss)を結合した文字列
	 */
	public static String concatYmdhms(String year, String month, String day, String hour, String minute, String second)
	{
		return JCRStringUtil.concatYmdhms(year, month, day, hour, minute, second);
	}

	/**
	 * <p>
	 * 時(HH)、分(mm)の文字列を結合します。
	 * </p>
	 * @param hour 時(HH)
	 * @param minute 分(mm)
	 * @return 時(HH)、分(mm)を結合した文字列
	 */
	public static String concatHm(String hour, String minute)
	{
		return JCRStringUtil.concatHm(hour, minute);
	}

	/**
	 * 文字列を指定されたサイズに調整します。
	 * <br>
	 * @param text 調整前の文字列
	 * @param byteSize 指定サイズ（バイト数）
	 * @param fillLeft 半角スペースを埋める位置 true:左埋め
	 * @return String 調整後の文字列
	 * @throws Exception 例外
	 */
	public static String adjustCharSize(String text, int byteSize, boolean fillLeft) throws Exception
	{
		return JCRStringUtil.adjustCharSize(text, byteSize, fillLeft);
	}

	/**
	 * メールヘッダー内の日付をYYYYMMDDHHMMSS形式に変換する。
	 * @param mailDate メールヘッダー内の日付
	 * @return yyyyMMddHHmmss形式の日付文字
	 */
	public static String convMailDateToDtmString(String mailDate)
	{
		return JCRStringUtil.convMailDateToDtmString(mailDate);
	}

	/**
	 * ダブルクォーテーション付加処理<br>
	 * @param targetData 対象文字列
	 * @return String 付加済み文字列
	 * @throws Exception 例外
	 */
	public static String addDblQut(String targetData) throws Exception
	{
		return JCRStringUtil.addDblQut(targetData);
	}

	/**
	 * 改行コード「CRLF」付加処理<br>
	 * 文字列の終端が「CRLF」で無い場合「CRLF」を付加する。
	 * 但し、終端が「CR」もしくは「LF」であった場合は「CRLF」に変換する。
	 * ※ 対応記録履歴に追記する場合の判断に使用する想定
	 * @param targetData 対象文字列
	 * @return String 付加済み文字列
	 * @throws Exception 例外
	 */
	public static String addCRLF(String targetData) throws Exception
	{
		return JCRStringUtil.addCRLF(targetData);
	}

}
