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
Constructor and Description |
---|
BasicBusinessDateProvider() |
Modifier and Type | Method and Description |
---|---|
java.util.Map<java.lang.String,java.lang.String> |
getAllDate()
全ての業務日付を取得する。
|
java.lang.String |
getDate()
デフォルトの区分を使用して業務日付を取得する。
|
java.lang.String |
getDate(java.lang.String segment)
区分を指定して業務日付を取得する。
|
void |
initialize()
初期化処理を行う。
SQLを組み立てる |
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)
トランザクション名称を設定する。
本設定は、デフォルトのトランザクション名(
TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY )
以外のトランザクション名を使用する場合に設定を行えば良い。
なお、本プロパティに設定したトランザクション名称に紐付くAppDbConnection が存在しない場合は、
setDbTransactionManager(nablarch.core.db.transaction.SimpleDbTransactionManager) で設定された
トランザクションマネージャを使用して、短期的なトランザクションを用いて日付の取得処理を行う。 |
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
in interface BusinessDateProvider
public java.lang.String getDate(java.lang.String segment)
getDate
in interface BusinessDateProvider
segment
- 区分値public java.util.Map<java.lang.String,java.lang.String> getAllDate()
getAllDate
in interface BusinessDateProvider
public void setDate(java.lang.String segment, java.lang.String date) throws java.lang.IllegalArgumentException
setDate
in interface BusinessDateProvider
segment
- 区分値date
- 業務日付(yyyyMMdd形式)java.lang.IllegalArgumentException
- 区分または、業務日付がnullまたは空文字列の場合。
または、指定された業務日付が'yyyyMMdd'形式でない場合。public void initialize()
initialize
in interface Initializable