package jp.terasoluna.batch.functionsample.b003;

import java.sql.Date;
import java.sql.Timestamp;

/**
 * 共通のDBアクセスBean
 * 
 */
public interface CommonBean {

    /**
     * シーケンスコードの払い出し処理。<br>
     * 引数で指定されたシーケンスオブジェクトの値を返却します。<br>
     * 引数で指定されたシーケンスオブジェクトが不正の場合、nullが返却されます。
     * 
     * @param seqName シーケンス名
     * @return String 最大のシーケンス数
     */
    String executeGetSeqCode(String seqName);

    /**
     * シーケンスコードの払い出し処理（可変桁数）。<br>
     * 引数で指定されたシーケンスオブジェクトの値を指定の桁数で返却します。<br>
     * 引数で指定されたシーケンスオブジェクトが不正の場合、nullが返却されます。
     * 
     * @param seqName シーケンス名
     * @param accuracy 桁数
     * @return String 最大のシーケンス数
     */
    String executeGetSeqCodeVariablePrecision(String seqName, int accuracy);
    
    /**
     * システムコードの取得処理。<br>
     * 
     * @param tblName テーブル名
     * @return String 最大のシーケンス数
     */
    String executeGetSysCode(String tblName);

    /**
     * システムコードの取得処理（可変桁数）。<br>
     * 
     * @param tblName テーブル名
     * @param accuracy 桁数
     * @return String 最大のシーケンス数
     */
    String executeGetSysCodeVariablePrecision(String tblName, int accuracy);
    
    /**
     * 運用時刻取得処理。<br>
     * 各テーブルの日時に該当するカラムへの更新は本メソッドにより取得した日時を使用します。<br>
     * 日時に含まれる日付の更新は日時バッチにて更新されます。<br>
     * 日時バッチのスケジューリングにより、0時またがりでも日付が変わらないようにすることが可能です。
     * 
     * @return Timestamp システム時刻
     */
    Timestamp executeGetCurrentTime();

    /**
     * 運用日付取得処理。<br>
     * 各テーブルの日付に該当するカラムへの更新は本メソッドにより取得した日付を使用します。<br>
     * 日付の更新は日時バッチにて更新されます。<br>
     * 日時バッチのスケジューリングにより、0時またがりでも日付が変わらないようにすることが可能です。
     * 
     * @return Date システム日付
     */
    Date executeGetCurrentDate();

}
