Package nablarch.core.date
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
- Author:
- Miki Habu
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription全ての業務日付を取得する。getDate()
デフォルトの区分を使用して業務日付を取得する。区分を指定して業務日付を取得する。void
初期化処理を行う。
SQLを組み立てるvoid
setCacheEnabled
(boolean cache) キャッシュ有無を設定する。
本設定を省略した場合のデフォルト動作は、キャッシュ有りとなる。void
区分を指定して業務日付を設定する。void
setDateColumnName
(String dateColumnName) 業務日付テーブルの日付カラム物理名を設定する。void
setDbTransactionManager
(SimpleDbTransactionManager transactionManager) トランザクションマネージャ
を設定する。void
setDbTransactionName
(String dbTransactionName) トランザクション名称を設定する。void
setDefaultSegment
(String defaultSegment) 区分省略時のデフォルト値を設定する。void
setSegmentColumnName
(String segmentColumnName) 業務日付テーブルの区分カラム物理名を設定する。void
setTableName
(String tableName) 業務日付テーブル物理名を設定する。
-
Constructor Details
-
BasicBusinessDateProvider
public BasicBusinessDateProvider()
-
-
Method Details
-
setTableName
業務日付テーブル物理名を設定する。- Parameters:
tableName
- 業務日付テーブル物理名
-
setSegmentColumnName
業務日付テーブルの区分カラム物理名を設定する。- Parameters:
segmentColumnName
- 業務日付テーブルの区分カラム物理名
-
setDateColumnName
業務日付テーブルの日付カラム物理名を設定する。- Parameters:
dateColumnName
- 業務日付テーブルの日付カラム物理名
-
setDefaultSegment
区分省略時のデフォルト値を設定する。- Parameters:
defaultSegment
- 区分省略時のデフォルト値
-
setCacheEnabled
public void setCacheEnabled(boolean cache) キャッシュ有無を設定する。
本設定を省略した場合のデフォルト動作は、キャッシュ有りとなる。- Parameters:
cache
- キャッシュをするか否か。(キャッシュを行う場合は、true)
-
setDbTransactionName
トランザクション名称を設定する。 本設定は、デフォルトのトランザクション名(TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY
) 以外のトランザクション名を使用する場合に設定を行えば良い。 なお、本プロパティに設定したトランザクション名称に紐付くAppDbConnection
が存在しない場合は、setDbTransactionManager(nablarch.core.db.transaction.SimpleDbTransactionManager)
で設定された トランザクションマネージャを使用して、短期的なトランザクションを用いて日付の取得処理を行う。- Parameters:
dbTransactionName
- トランザクション名称。
-
setDbTransactionManager
トランザクションマネージャ
を設定する。 データベースから日付を取得する際に使用するトランザクションを設定すること。- Parameters:
transactionManager
-トランザクションマネージャ
-
getDate
デフォルトの区分を使用して業務日付を取得する。 リポジトリに日付が設定されている場合は、その日付を返却する。- Specified by:
getDate
in interfaceBusinessDateProvider
- Returns:
- 業務日付(yyyyMMdd形式)
-
getDate
区分を指定して業務日付を取得する。 リポジトリに日付が設定されている場合は、その日付を返却する。- Specified by:
getDate
in interfaceBusinessDateProvider
- Parameters:
segment
- 区分値- Returns:
- 業務日付(yyyyMMdd形式)
-
getAllDate
全ての業務日付を取得する。- Specified by:
getAllDate
in interfaceBusinessDateProvider
- Returns:
- 区分をキー、対応する業務日付(yyyyMMdd形式)を値としたMap
-
setDate
区分を指定して業務日付を設定する。 指定された区分に対応する業務日付を更新する。- Specified by:
setDate
in interfaceBusinessDateProvider
- Parameters:
segment
- 区分値date
- 業務日付(yyyyMMdd形式)- Throws:
IllegalArgumentException
- 区分または、業務日付がnullまたは空文字列の場合。 または、指定された業務日付が'yyyyMMdd'形式でない場合。
-
initialize
public void initialize()初期化処理を行う。
SQLを組み立てる- Specified by:
initialize
in interfaceInitializable
-