クラス ResourceManager
java.lang.Object
org.opengion.hayabusa.resource.ResourceManager
java.util.ResourceBundle クラスを複数管理するリソースクラスです。
ResourceManager は、
LabelResource.properties ラベルリソース(テーブル定義やカラム名などの画面に表示するリソース)
CodeResource.properties コードリソース(選択データなどプルダウンメニューで選択するリソース)
MessageResource.properties メッセージリソース(エラーコードやメッセージなどを表示するリソース)
の3つのプロパティーファイルを内部に持っており、それぞれのメソッドにより、
リソースの返す値を決めています。
ResourceManagerは、単独でも生成できますが、各ユーザー毎に作成するよりも
ResourceFactory#newInstance( lang )メソッドより生成した方が、プーリングされるので
効率的です。
リソース作成時に指定するロケールは、ISO 言語コード(ISO-639 で定義される 2 桁の小文字)
http://www.ics.uci.edu/pub/ietf/http/related/iso639.txtを使用して下さい。
ただし、内部的に Locale を構築していますが、その正しさは、チェックされていませんので、
指定するロケールに応じた properties ファイルを用意しておいて下さい。
日本語の場合は、言語コードは "jp" なので、
LabelResource_jp.properties ラベルリソース(日本語)
CodeResource_jp.properties コードリソース(日本語)
MessageResource_jp.properties メッセージリソース(日本語)
を用意して下さい。
CodeResource については、リソースファイルから CodeSelectionオブジェクトを
作成して利用します。この、CodeSelectionオブジェクトの作成方法として、
3通り考えられます。
1つ目は、毎回 要求が発生する毎に CodeSelection を作成し、プールしていきます。こうすることで、
初めて使用されたときだけオブジェクト化されますので、メモリの節約が可能です。ただし、
プールにヒットしなかった場合は、やはりリソースから検索しますので、元々ヒットしない
キーに対しては、毎回リソースを検索するため、非効率です。
2つめは、元々ヒットしないキーに対して、NullCodeSelectionオブジェクトを登録しておくことで、
プールにため込んで行くと言う方法です。この場合は、シングルトーンにしてメモリを節約しますが、
それでもプール自体の容量は、確保しておく必要があります。
3つめは、この ResourceManager がインスタンス化されるときに、すべての CodeSelectionオブジェクトを
あらかじめ プールしておく方法です。使わない CodeSelection もインスタンス化する変わりに、
キャッシュにヒットしない場合は、即 CodeSelection が存在しないと判断できるため、
もっともパフォーマンスが高くなります。
本 ResourceManager の実装は、3つめの、あらかじめ、すべてをキャッシュしておく方法を
採用しています。
- 機能分類
- リソース管理
- 導入されたバージョン:
- JDK5.0,
-
コンストラクタの概要
コンストラクタコンストラクタ説明ResourceManager
(String systemId, String lang, boolean initLoad) コンストラクター システムIDと言語コードを指定して、生成します。 -
メソッドの概要
修飾子とタイプメソッド説明void
clear()
リソースマネージャーをクリア(初期化)します。void
リソースマネージャーをキーに基づいて部分クリアします。getCodeData
(String key) コードキーに対応する、CodeDataオブジェクトを返します。getCodeData
(String key, String query) コードリソースからコード文字列を返します。getDBColumn
(String key) DBColumn オブジェクトを取得します。getDescription
(String key, String... args) ラベルリソースから、概要説明を返します。getDescription
(ErrMsg errMsgObj) ErrMsgオブジェクトの内容を元に、ラベルリソースから概要説明を返します。メッセージリソースからキーで指定されたメッセージに、 引数で指定された変数値をセットしたメッセージを返します。メッセージリソースからErrMsgオブジェクトで指定されたメッセージを返します。getLabelData
(String key) ラベルキーに対応する、LabelDataオブジェクトを返します。getLabelMap
(String query, String dbid) 指定されたクエリを発行し、ラベルマップを作成します。getLang()
設定されている言語を返します。getLongLabel
(String key) ラベルリソースから、ラベル(長)を返します。getRawLongLabel
(String key) ラベルリソースから、ラベル(長)ををそのままの形で返します。getRawShortLabel
(String key, boolean useKey) ラベルオブジェクトの名称(短)をspanタグを付けない状態で返します。getShortErrorMsg
(ErrMsg errMsgObj) メッセージリソースからErrMsgオブジェクトで指定されたショートメッセージを返します。getShortLabel
(String key) ラベルリソースから、ラベル(短)を返します。void
guiClear()
GUI情報をクリアします。makeDBColumn
(String key) DBColumn オブジェクトを作成します。makeDBColumn
(String key, String lbl) DBColumn オブジェクトを作成します。void
makeGUIInfos
(UserInfo user) ログインユーザーで使用する画面オブジェクトを、UserInfoにセットします。
-
コンストラクタの詳細
-
ResourceManager
コンストラクター システムIDと言語コードを指定して、生成します。- パラメータ:
systemId
- システムIDlang
- 言語コードinitLoad
- リソースデータの先読み可否(true:先読みする)- 変更履歴:
- 7.2.9.2 (2020/10/30) ベースとなるSYSTEM_ID(RESOURCE_BASE_SYSTEM_ID)の取得, 8.0.0.0 (2021/10/01) RESOURCE_BASE_SYSTEM_ID は、CSV形式で複数指定できる(先頭優先)。
-
-
メソッドの詳細
-
getLang
設定されている言語を返します。- 戻り値:
- 言語
-
getDBColumn
DBColumn オブジェクトを取得します。 作成したDBColumnオブジェクトは、内部にプールしておき、同じオブジェクト要求が あったときは、プールのオブジェクトを利用して、DBColumnを返します。- パラメータ:
key
- カラムID(not null)- 戻り値:
- DBColumnオブジェクト
- 変更履歴:
- 3.4.0.0 (2003/09/01) ラベルカラム、コードカラム、表示パラメータ、編集パラメータ、文字パラメータの追加。, 3.5.6.4 (2004/07/16) 追加パラメータ取り込み時に、"_" は、null 扱いとする。, 3.6.0.7 (2004/11/06) DBColumn の official属性追加, 6.4.3.3 (2016/03/04) ConcurrentHashMap の not null制限のチェック追加
-
makeDBColumn
DBColumn オブジェクトを作成します。 内部にプールに存在すればそれを、なければ新規に作成します。 それでも存在しない場合は、DBColumnConfig より、ラベルと言語を指定して 新規に作成します。- パラメータ:
key
- カラムID(not null)- 戻り値:
- DBColumnオブジェクト
- 関連項目:
- 変更履歴:
- 7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
-
makeDBColumn
DBColumn オブジェクトを作成します。 内部にプールに存在すればそれを、なければ新規に作成します。 それでも存在しない場合は、DBColumnConfig より、ラベルと言語を指定して 新規に作成します。 lbl引数が、nullか、ゼロ文字列の場合は、#makeDBColumn(String) と同じです。- パラメータ:
key
- カラムID(not null)lbl
- ラベル(nullか、ゼロ文字列の場合は、設定しません)- 戻り値:
- DBColumnオブジェクト
- 関連項目:
- 変更履歴:
- 6.9.1.0 (2018/02/26) unionLbls追加, 7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
-
getLabel
メッセージリソースからキーで指定されたメッセージに、 引数で指定された変数値をセットしたメッセージを返します。 このメッセージは、リソースで選ばれたロケール毎のメッセージに、 MessageFormat#format でフォーマットする事により作成されます。 メッセージがリソースに存在しない場合はキーを返します。- パラメータ:
key
- キーargs
- メッセージの配列- 戻り値:
- メッセージ(無ければ キー)
- 変更履歴:
- 4.0.0.0 (2005/01/31) オラクルとWindowsとの間の "~"の文字化け対策, 4.0.0.0 (2007/10/17) メッセージリソース統合に伴いラベルローダーを使用する, 4.0.0.0 (2007/10/18) 名称変更 getMessage ⇒ getLabel, 5.1.1.0 (2009/12/01) #XXXXの変換で、カラム名が複数指定されている場合の対応, 6.1.0.0 (2014/12/26) LabelData が存在しなかった場合の処理, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。, 6.6.0.0 (2016/12/01) 引数の配列を可変長配列に変更します。, 7.0.7.0 (2019/12/13) #getLabel( String ) と統合します。
-
getShortLabel
ラベルリソースから、ラベル(短)を返します。 引数の言語コードに応じたリソースが登録されていない場合は、 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル文字列(無ければ ラベルキー)
- 変更履歴:
- 4.3.3.0 (2008/10/01) 新規作成, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
-
getLongLabel
ラベルリソースから、ラベル(長)を返します。 概要説明が存在する場合は、ツールチップに概要説明が 表示されます。 引数の言語コードに応じたリソースが登録されていない場合は、 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル(長)文字列(無ければ ラベルキー)
- 変更履歴:
- 6.3.8.4 (2015/10/09) #XXXX %S などの対応。getLabel(String) は汎用過ぎるので、少し分ける。, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
-
getRawLongLabel
ラベルリソースから、ラベル(長)ををそのままの形で返します。 (discription等を付けない) 表示されます。 引数の言語コードに応じたリソースが登録されていない場合は、 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル(長)そのままの文字列(無ければ ラベルキー)
- 変更履歴:
- 7.2.9.0 (2020/10/12) 新規追加
- このメソッドは、nullを返しません
-
getRawShortLabel
ラベルオブジェクトの名称(短)をspanタグを付けない状態で返します。 SNAMEが未設定の場合は、LNAME が返されます。 引数の言語コードに応じたリソースが登録されていない場合は、 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキーuseKey
- null時にキーを返す場合は、true , 空文字を返す場合は、false- 戻り値:
- リソースに応じたラベル(短)文字列(無ければ ラベルキー)
- 変更履歴:
- 6.3.8.4 (2015/10/09) #XXXX %S などの対応。getLabel(String) は汎用過ぎるので、少し分ける。, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。, 7.0.7.0 (2019/12/13) args パラメータ配列(可変長引数)を追加します。, 7.2.9.0 (2020/10/12) args パラメータ配列(可変長引数)廃止(旧メソッド復活)
-
getDescription
ラベルリソースから、概要説明を返します。 {0},{1}...の置換えを行います。 キーのデータが存在しない場合はnullを返します。 ただし、パラメータのデータがあれば、それを返します。- パラメータ:
key
- ラベルキーargs
- パラメータ配列(可変長引数)- 戻り値:
- リソースに応じた概要説明(無ければ null)
- 変更履歴:
- 4.3.7.6 (2009/07/15) 新規作成, 6.1.0.0 (2014/12/26) #XXXXの変換で、カラム名が複数指定されている場合の対応, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。, 7.0.7.0 (2019/12/13) #getDescription( String ) と統合します。
-
getLabel
メッセージリソースからErrMsgオブジェクトで指定されたメッセージを返します。 このエラーメッセージは、リソースで選ばれたロケール毎のメッセージに、 MessageFormat#format でフォーマットする事により作成されます。 エラーメッセージがリソースに存在しない場合はエラーコードを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(無ければ ErrMsgオブジェクトの toString() )
- 変更履歴:
- 4.0.0.0 (2004/12/31) 新規追加, 4.0.0.0 (2007/10/18) メッセージリソースとの統合化
-
getShortErrorMsg
メッセージリソースからErrMsgオブジェクトで指定されたショートメッセージを返します。 このエラーメッセージは、リソースで選ばれたロケール毎のメッセージに、 MessageFormat#format でフォーマットする事により作成されます。 エラーメッセージがリソースに存在しない場合はエラーコードを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(無ければ ErrMsgオブジェクトの toString() )
- 変更履歴:
- 7.0.7.0 (2019/12/13) 新規追加, 7.2.9.0 (2020/10/12) 引数を分解して、直接処理します。…ついでにメソッド名変更
-
getDescription
ErrMsgオブジェクトの内容を元に、ラベルリソースから概要説明を返します。 キーのデータが存在しない場合はnullを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(キーが無ければnull)
- 変更履歴:
- 4.3.7.6 (2009/07/15) 新規作成
-
getLabelData
ラベルキーに対応する、LabelDataオブジェクトを返します。- パラメータ:
key
- ラベルキー- 戻り値:
- LabelDataオブジェクト
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規作成, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
- このメソッドは、nullを返しません
-
getCodeData
コードキーに対応する、CodeDataオブジェクトを返します。- パラメータ:
key
- コードキー- 戻り値:
- CodeDataオブジェクト(無ければ null)
-
getCodeData
コードリソースからコード文字列を返します。 引数にQUERYを渡すことで、DBから、動的にコードリソースを作成できます。- パラメータ:
key
- コードキーquery
- 検索SQL(引数に、? を一つ持つ)- 戻り値:
- コードデータオブジェクト(無ければ null)
- 変更履歴:
- 5.4.2.2 (2011/12/14) 新規追加。
-
makeGUIInfos
ログインユーザーで使用する画面オブジェクトを、UserInfoにセットします。 各、UserInfo は、自分自身が使用する 画面オブジェクトのみを管理することで、 画面アクセス有無を、すばやく検索することが可能になります。- パラメータ:
user
- 指定のユーザーロールに対応する画面だけをMapにセットする。- 変更履歴:
- 3.1.0.1 (2003/03/26) GUIInfo のキー順サポートの為に、引数追加。, 4.0.0.0 (2005/01/31) 使用画面のMap を UserInfo にセットします。, 4.3.0.0 (2008/07/04) ロールモードマルチ対応, 5.2.0.0 (2010/09/01) アクセス禁止アドレスによる不正アクセス防止機能追加, 6.4.3.4 (2016/03/11) forループを、removeAll メソッドに置き換えます。, 6.4.4.2 (2016/04/01) guiMap.values() では、GUIInfo だが、remove するのは、gui.getAddress() の値。, 7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
-
getLabelMap
指定されたクエリを発行し、ラベルマップを作成します。- パラメータ:
query
- ラベルマップを作成するクエリdbid
- 接続先ID- 戻り値:
- ラベルマップ
- 関連項目:
- 変更履歴:
- 4.3.4.0 (2008/12/01) 新規作成, 6.4.0.5 (2016/01/09) useLabelMap="true" 時のSQL文の実行は、dbid を使用して行う。
-
clear
リソースマネージャーをキーに基づいて部分クリアします。 ここでは、部分クリアなため、GUIData に関しては、処理されません。 また、存在しないキーを指定されたリソースは、何も処理されません。- パラメータ:
key
- カラムのキー- 変更履歴:
- 5.4.3.4 (2012/01/12) labelPool の削除追加, 6.4.3.3 (2016/03/04) ConcurrentHashMap の not null制限のチェック追加, 6.9.0.1 (2018/02/05) どのシステムIDのリソースがクリアされたかを表示します。
-
guiClear
GUI情報をクリアします。 ここでは、関連するラベル、コードリソースの部分クリアも行います。 GUI情報は、シーケンスに管理しているため、この処理1回ごとに、 GUIData を全件再読み込みを行いますので、ご注意ください。 -
clear
リソースマネージャーをクリア(初期化)します。- 変更履歴:
- 5.4.3.4 (2012/01/12) labelPool の削除追加
-