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
Constructors -
Method Summary
Modifier and TypeMethodDescription全ての業務日付を取得する。getDate()デフォルトの区分を使用して業務日付を取得する。区分を指定して業務日付を取得する。void初期化処理を行う。
SQLを組み立てるvoidsetCacheEnabled(boolean cache) キャッシュ有無を設定する。
本設定を省略した場合のデフォルト動作は、キャッシュ有りとなる。void区分を指定して業務日付を設定する。voidsetDateColumnName(String dateColumnName) 業務日付テーブルの日付カラム物理名を設定する。voidsetDbTransactionManager(SimpleDbTransactionManager transactionManager) トランザクションマネージャを設定する。voidsetDbTransactionName(String dbTransactionName) トランザクション名称を設定する。voidsetDefaultSegment(String defaultSegment) 区分省略時のデフォルト値を設定する。voidsetSegmentColumnName(String segmentColumnName) 業務日付テーブルの区分カラム物理名を設定する。voidsetTableName(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:
getDatein interfaceBusinessDateProvider- Returns:
- 業務日付(yyyyMMdd形式)
-
getDate
区分を指定して業務日付を取得する。 リポジトリに日付が設定されている場合は、その日付を返却する。- Specified by:
getDatein interfaceBusinessDateProvider- Parameters:
segment- 区分値- Returns:
- 業務日付(yyyyMMdd形式)
-
getAllDate
全ての業務日付を取得する。- Specified by:
getAllDatein interfaceBusinessDateProvider- Returns:
- 区分をキー、対応する業務日付(yyyyMMdd形式)を値としたMap
-
setDate
区分を指定して業務日付を設定する。 指定された区分に対応する業務日付を更新する。- Specified by:
setDatein interfaceBusinessDateProvider- Parameters:
segment- 区分値date- 業務日付(yyyyMMdd形式)- Throws:
IllegalArgumentException- 区分または、業務日付がnullまたは空文字列の場合。 または、指定された業務日付が'yyyyMMdd'形式でない場合。
-
initialize
public void initialize()初期化処理を行う。
SQLを組み立てる- Specified by:
initializein interfaceInitializable
-