public class BasicBusinessDateProvider extends java.lang.Object implements BusinessDateProvider, Initializable
cacheEnabledプロパティを使用して業務日付のキャッシュ有無を設定でき、
データベースアクセスを最小限に抑えることが可能となっている。
cacheEnabledにtrueを設定するとキャッシュが有効になり、
初回アクセス時にテーブルの情報がThreadContextにキャッシュされる。
キャッシュされた値の生存期間は、ThreadContextがクリアされるか、
スレッドが破棄されるかのどちらかである。
例えば、画面オンライン処理の場合は、リクエスト受付時にThreadContextの情報がクリアされるため、
業務日付のキャッシュ有効期間はクライアントからの1リクエストを処理する間となる。
業務日付を管理するテーブルのレイアウトを以下に示す。
| カラム名 | 説明 |
|---|---|
| 区分 |
業務日付を特定するための区分 例えば、画面処理とバッチ処理で日付の更新タイミングが異なる場合は、 画面処理用とバッチ処理用の区分を設けて日付を管理すれば良い。 |
| 日付 | 区分に対応する業務日付 |
SystemRepository)
に登録した日付で上書きする機能を提供する。
この機能は、バッチアプリケーションなどで指定した日付で業務処理を実行したい場合に使用する。RuntimeExceptionを送出する。
リポジトリには、下記形式で上書きを行いたい日付を登録すること。
| キー | 値 |
|---|---|
| BasicBusinessDateProvider.区分値 | 上書く日付 |
区分値:00の日付を20110101に上書きする場合
システムプロパティに「BasicBusinessDateProvider.00=20110101」を設定しプロセスを起動する。
java -DBasicBusinessDateProvider.00=20110101 Main
| コンストラクタと説明 |
|---|
BasicBusinessDateProvider() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
java.util.Map<java.lang.String,java.lang.String> |
getAllDate()
全ての業務日付を取得する。
|
java.lang.String |
getDate()
デフォルトの区分を使用して業務日付を取得する。
|
java.lang.String |
getDate(java.lang.String segment)
区分を指定して業務日付を取得する。
|
void |
initialize()
初期化処理を行う。
|
void |
setCacheEnabled(boolean cache)
キャッシュ有無を設定する。
|
void |
setDate(java.lang.String segment,
java.lang.String date)
区分を指定して業務日付を設定する。
|
void |
setDateColumnName(java.lang.String dateColumnName)
業務日付テーブルの日付カラム物理名を設定する。
|
void |
setDbTransactionManager(SimpleDbTransactionManager transactionManager)
トランザクションマネージャを設定する。 |
void |
setDbTransactionName(java.lang.String dbTransactionName)
トランザクション名称を設定する。
|
void |
setDefaultSegment(java.lang.String defaultSegment)
区分省略時のデフォルト値を設定する。
|
void |
setSegmentColumnName(java.lang.String segmentColumnName)
業務日付テーブルの区分カラム物理名を設定する。
|
void |
setTableName(java.lang.String tableName)
業務日付テーブル物理名を設定する。
|
public void setTableName(java.lang.String tableName)
tableName - 業務日付テーブル物理名public void setSegmentColumnName(java.lang.String segmentColumnName)
segmentColumnName - 業務日付テーブルの区分カラム物理名public void setDateColumnName(java.lang.String dateColumnName)
dateColumnName - 業務日付テーブルの日付カラム物理名public void setDefaultSegment(java.lang.String defaultSegment)
defaultSegment - 区分省略時のデフォルト値public void setCacheEnabled(boolean cache)
cache - キャッシュをするか否か。(キャッシュを行う場合は、true)public void setDbTransactionName(java.lang.String dbTransactionName)
TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY)
以外のトランザクション名を使用する場合に設定を行えば良い。
なお、本プロパティに設定したトランザクション名称に紐付くAppDbConnectionが存在しない場合は、
setDbTransactionManager(nablarch.core.db.transaction.SimpleDbTransactionManager)で設定された
トランザクションマネージャを使用して、短期的なトランザクションを用いて日付の取得処理を行う。dbTransactionName - トランザクション名称。public void setDbTransactionManager(SimpleDbTransactionManager transactionManager)
トランザクションマネージャを設定する。
データベースから日付を取得する際に使用するトランザクションを設定すること。transactionManager - トランザクションマネージャpublic java.lang.String getDate()
getDate インタフェース内 BusinessDateProviderpublic java.lang.String getDate(java.lang.String segment)
getDate インタフェース内 BusinessDateProvidersegment - 区分値public java.util.Map<java.lang.String,java.lang.String> getAllDate()
getAllDate インタフェース内 BusinessDateProviderpublic void setDate(java.lang.String segment,
java.lang.String date)
throws java.lang.IllegalArgumentException
setDate インタフェース内 BusinessDateProvidersegment - 区分値date - 業務日付(yyyyMMdd形式)java.lang.IllegalArgumentException - 区分または、業務日付がnullまたは空文字列の場合。
または、指定された業務日付が'yyyyMMdd'形式でない場合。public void initialize()
initialize インタフェース内 Initializable