Class BasicBusinessDateProvider

java.lang.Object
nablarch.core.date.BasicBusinessDateProvider
All Implemented Interfaces:
BusinessDateProvider, Initializable

public class BasicBusinessDateProvider extends Object implements BusinessDateProvider, Initializable
業務日付を提供するクラス。

本クラスでは、テーブルで管理されている業務日付を取得する機能を提供する。

業務日付の取得要求の都度データベースアクセスを行うとパフォーマンス上問題となる場合がある。 このため、cacheEnabledプロパティを使用して業務日付のキャッシュ有無を設定でき、 データベースアクセスを最小限に抑えることが可能となっている。

cacheEnabledにtrueを設定するとキャッシュが有効になり、 初回アクセス時にテーブルの情報がThreadContextにキャッシュされる。 キャッシュされた値の生存期間は、ThreadContextがクリアされるか、 スレッドが破棄されるかのどちらかである。

例えば、画面オンライン処理の場合は、リクエスト受付時にThreadContextの情報がクリアされるため、 業務日付のキャッシュ有効期間はクライアントからの1リクエストを処理する間となる。

業務日付を管理するテーブルのレイアウトを以下に示す。

カラム名 説明
区分 業務日付を特定するための区分
例えば、画面処理とバッチ処理で日付の更新タイミングが異なる場合は、
画面処理用とバッチ処理用の区分を設けて日付を管理すれば良い。
日付 区分に対応する業務日付

なお、本クラスでは特定の区分の業務日付をリポジトリ(SystemRepository) に登録した日付で上書きする機能を提供する。 この機能は、バッチアプリケーションなどで指定した日付で業務処理を実行したい場合に使用する。
リポジトリに登録された日付の形式が不正な場合、初回アクセス時にRuntimeExceptionを送出する。

リポジトリには、下記形式で上書きを行いたい日付を登録すること。

キー
BasicBusinessDateProvider.区分値 上書く日付
以下に例を示す。:
 
 区分値:00の日付を20110101に上書きする場合

 システムプロパティに「BasicBusinessDateProvider.00=20110101」を設定しプロセスを起動する。
 java -DBasicBusinessDateProvider.00=20110101 Main
 
 
  • Constructor Details

    • BasicBusinessDateProvider

      public BasicBusinessDateProvider()
  • Method Details

    • setTableName

      public void setTableName(String tableName)
      業務日付テーブル物理名を設定する。
      Parameters:
      tableName - 業務日付テーブル物理名
    • setSegmentColumnName

      public void setSegmentColumnName(String segmentColumnName)
      業務日付テーブルの区分カラム物理名を設定する。
      Parameters:
      segmentColumnName - 業務日付テーブルの区分カラム物理名
    • setDateColumnName

      public void setDateColumnName(String dateColumnName)
      業務日付テーブルの日付カラム物理名を設定する。
      Parameters:
      dateColumnName - 業務日付テーブルの日付カラム物理名
    • setDefaultSegment

      public void setDefaultSegment(String defaultSegment)
      区分省略時のデフォルト値を設定する。
      Parameters:
      defaultSegment - 区分省略時のデフォルト値
    • setCacheEnabled

      public void setCacheEnabled(boolean cache)
      キャッシュ有無を設定する。
      本設定を省略した場合のデフォルト動作は、キャッシュ有りとなる。
      Parameters:
      cache - キャッシュをするか否か。(キャッシュを行う場合は、true)
    • setDbTransactionName

      public void setDbTransactionName(String dbTransactionName)
      トランザクション名称を設定する。

      本設定は、デフォルトのトランザクション名(TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY) 以外のトランザクション名を使用する場合に設定を行えば良い。

      なお、本プロパティに設定したトランザクション名称に紐付くAppDbConnectionが存在しない場合は、 setDbTransactionManager(nablarch.core.db.transaction.SimpleDbTransactionManager)で設定された トランザクションマネージャを使用して、短期的なトランザクションを用いて日付の取得処理を行う。

      Parameters:
      dbTransactionName - トランザクション名称。
    • setDbTransactionManager

      public void setDbTransactionManager(SimpleDbTransactionManager transactionManager)
      トランザクションマネージャを設定する。

      データベースから日付を取得する際に使用するトランザクションを設定すること。

      Parameters:
      transactionManager - トランザクションマネージャ
    • getDate

      public String getDate()
      デフォルトの区分を使用して業務日付を取得する。 リポジトリに日付が設定されている場合は、その日付を返却する。
      Specified by:
      getDate in interface BusinessDateProvider
      Returns:
      業務日付(yyyyMMdd形式)
    • getDate

      public String getDate(String segment)
      区分を指定して業務日付を取得する。 リポジトリに日付が設定されている場合は、その日付を返却する。
      Specified by:
      getDate in interface BusinessDateProvider
      Parameters:
      segment - 区分値
      Returns:
      業務日付(yyyyMMdd形式)
    • getAllDate

      public Map<String,String> getAllDate()
      全ての業務日付を取得する。
      Specified by:
      getAllDate in interface BusinessDateProvider
      Returns:
      区分をキー、対応する業務日付(yyyyMMdd形式)を値としたMap
    • setDate

      public void setDate(String segment, String date) throws IllegalArgumentException
      区分を指定して業務日付を設定する。

      指定された区分に対応する業務日付を更新する。

      Specified by:
      setDate in interface BusinessDateProvider
      Parameters:
      segment - 区分値
      date - 業務日付(yyyyMMdd形式)
      Throws:
      IllegalArgumentException - 区分または、業務日付がnullまたは空文字列の場合。 または、指定された業務日付が'yyyyMMdd'形式でない場合。
    • initialize

      public void initialize()
      初期化処理を行う。
      SQLを組み立てる
      Specified by:
      initialize in interface Initializable