クラス ResourceManager
- java.lang.Object
-
- org.opengion.hayabusa.resource.ResourceManager
-
public final class ResourceManager extends Object
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つめの、あらかじめ、すべてをキャッシュしておく方法を 採用しています。- 機能分類
- リソース管理
- バージョン
- 4.0
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK5.0,
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 ResourceManager(String systemId, String lg, boolean initLoad)
コンストラクター システムIDと言語コードを指定して,生成します。
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 void
clear()
リソースマネージャーをクリア(初期化)します。void
clear(String key)
リソースマネージャーをキーに基づいて部分クリアします。CodeData
getCodeData(String key)
コードキーに対応する、CodeDataオブジェクトを返します。CodeData
getCodeData(String key, String query)
コードリソースから,コード文字列を返します。DBColumn
getDBColumn(String key)
DBColumn オブジェクトを取得します。String
getDescription(String key, String... args)
ラベルリソースから,概要説明を返します。String
getDescription(ErrMsg errMsgObj)
ErrMsgオブジェクトの内容を元に、ラベルリソースから,概要説明を返します。String
getLabel(String key, String... args)
メッセージリソースから,キーで指定されたメッセージに, 引数で指定された変数値をセットしたメッセージを返します。String
getLabel(ErrMsg errMsgObj)
メッセージリソースから,ErrMsgオブジェクトで指定されたメッセージを返します。LabelData
getLabelData(String key)
ラベルキーに対応する、LabelDataオブジェクトを返します。Map<String,LabelData>
getLabelMap(String query, String dbid)
指定されたクエリを発行し、ラベルマップを作成します。String
getLang()
設定されている言語を返します。String
getLongLabel(String key)
ラベルリソースから,ラベル(長)を返します。String
getRawLongLabel(String key)
ラベルリソースから,ラベル(長)ををそのままの形で返します。String
getRawShortLabel(String key, boolean useKey)
ラベルオブジェクトの名称(短)をspanタグを付けない状態で返します。String
getShortErrorMsg(ErrMsg errMsgObj)
メッセージリソースから,ErrMsgオブジェクトで指定されたショートメッセージを返します。String
getShortLabel(String key)
ラベルリソースから,ラベル(短)を返します。void
guiClear()
GUI情報をクリアします。DBColumn
makeDBColumn(String key)
DBColumn オブジェクトを作成します。DBColumn
makeDBColumn(String key, String lbl)
DBColumn オブジェクトを作成します。void
makeGUIInfos(UserInfo user)
ログインユーザーで使用する画面オブジェクトを、UserInfoにセットします。
-
-
-
メソッドの詳細
-
getLang
public String getLang()
設定されている言語を返します。- 戻り値:
- 言語
-
getDBColumn
public DBColumn getDBColumn(String key)
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
public DBColumn makeDBColumn(String key)
DBColumn オブジェクトを作成します。 内部にプールに存在すればそれを、なければ新規に作成します。 それでも存在しない場合は、DBColumnConfig より、ラベルと言語を指定して 新規に作成します。- パラメータ:
key
- カラムID(not null)- 戻り値:
- DBColumnオブジェクト
- 関連項目:
getDBColumn( String )
- 変更履歴:
- 7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
-
makeDBColumn
public DBColumn makeDBColumn(String key, String lbl)
DBColumn オブジェクトを作成します。 内部にプールに存在すればそれを、なければ新規に作成します。 それでも存在しない場合は、DBColumnConfig より、ラベルと言語を指定して 新規に作成します。 lbl引数が、nullか、ゼロ文字列の場合は、#makeDBColumn(String) と同じです。- パラメータ:
key
- カラムID(not null)lbl
- ラベル(nullか、ゼロ文字列の場合は、設定しません)- 戻り値:
- DBColumnオブジェクト
- 関連項目:
getDBColumn( String )
- 変更履歴:
- 6.9.1.0 (2018/02/26) unionLbls追加, 7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
-
getLabel
public String getLabel(String key, String... args)
メッセージリソースから,キーで指定されたメッセージに, 引数で指定された変数値をセットしたメッセージを返します。 このメッセージは,リソースで選ばれたロケール毎のメッセージに, 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
public String getShortLabel(String key)
ラベルリソースから,ラベル(短)を返します。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル文字列(無ければ ラベルキー)
- 変更履歴:
- 4.3.3.0 (2008/10/01) 新規作成, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
-
getLongLabel
public String getLongLabel(String key)
ラベルリソースから,ラベル(長)を返します。 概要説明が存在する場合は、ツールチップに概要説明が 表示されます。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル(長)文字列(無ければ ラベルキー)
- 変更履歴:
- 6.3.8.4 (2015/10/09) #XXXX %S などの対応。getLabel(String) は汎用過ぎるので、少し分ける。, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
-
getRawLongLabel
public String getRawLongLabel(String key)
ラベルリソースから,ラベル(長)ををそのままの形で返します。 (discription等を付けない) 表示されます。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。- パラメータ:
key
- ラベルキー- 戻り値:
- リソースに応じたラベル(長)そのままの文字列(無ければ ラベルキー)
- 変更履歴:
- 7.2.9.0 (2020/10/12) 新規追加
- このメソッドは、nullを返しません
-
getRawShortLabel
public String getRawShortLabel(String key, boolean useKey)
ラベルオブジェクトの名称(短)を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
public String getDescription(String key, String... args)
ラベルリソースから,概要説明を返します。 {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
public String getLabel(ErrMsg errMsgObj)
メッセージリソースから,ErrMsgオブジェクトで指定されたメッセージを返します。 このエラーメッセージは,リソースで選ばれたロケール毎のメッセージに, MessageFormat#format でフォーマットする事により,作成されます。 エラーメッセージがリソースに存在しない場合は,エラーコードを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(無ければ ErrMsgオブジェクトの toString() )
- 変更履歴:
- 4.0.0.0 (2004/12/31) 新規追加, 4.0.0.0 (2007/10/18) メッセージリソースとの統合化
-
getShortErrorMsg
public String getShortErrorMsg(ErrMsg errMsgObj)
メッセージリソースから,ErrMsgオブジェクトで指定されたショートメッセージを返します。 このエラーメッセージは,リソースで選ばれたロケール毎のメッセージに, MessageFormat#format でフォーマットする事により,作成されます。 エラーメッセージがリソースに存在しない場合は,エラーコードを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(無ければ ErrMsgオブジェクトの toString() )
- 変更履歴:
- 7.0.7.0 (2019/12/13) 新規追加, 7.2.9.0 (2020/10/12) 引数を分解して、直接処理します。…ついでにメソッド名変更
-
getDescription
public String getDescription(ErrMsg errMsgObj)
ErrMsgオブジェクトの内容を元に、ラベルリソースから,概要説明を返します。 キーのデータが存在しない場合はnullを返します。- パラメータ:
errMsgObj
- ErrMsgオブジェクト- 戻り値:
- エラーメッセージ(キーが無ければnull)
- 変更履歴:
- 4.3.7.6 (2009/07/15) 新規作成
-
getLabelData
public LabelData getLabelData(String key)
ラベルキーに対応する、LabelDataオブジェクトを返します。- パラメータ:
key
- ラベルキー- 戻り値:
- LabelDataオブジェクト
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規作成, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
- このメソッドは、nullを返しません
-
getCodeData
public CodeData getCodeData(String key)
コードキーに対応する、CodeDataオブジェクトを返します。- パラメータ:
key
- コードキー- 戻り値:
- CodeDataオブジェクト(無ければ null)
-
getCodeData
public CodeData getCodeData(String key, String query)
コードリソースから,コード文字列を返します。 引数にQUERYを渡すことで、DBから、動的にコードリソースを作成できます。- パラメータ:
key
- コードキーquery
- 検索SQL(引数に、? を一つ持つ)- 戻り値:
- コードデータオブジェクト(無ければ null)
- 変更履歴:
- 5.4.2.2 (2011/12/14) 新規追加。
-
makeGUIInfos
public void makeGUIInfos(UserInfo user)
ログインユーザーで使用する画面オブジェクトを、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
public Map<String,LabelData> getLabelMap(String query, String dbid)
指定されたクエリを発行し、ラベルマップを作成します。- パラメータ:
query
- ラベルマップを作成するクエリdbid
- 接続先ID- 戻り値:
- ラベルマップ
- 関連項目:
LabelDataLoader.getLabelMap( String,String )
- 変更履歴:
- 4.3.4.0 (2008/12/01) 新規作成, 6.4.0.5 (2016/01/09) useLabelMap="true" 時のSQL文の実行は、dbid を使用して行う。
-
clear
public void clear(String key)
リソースマネージャーをキーに基づいて部分クリアします。 ここでは、部分クリアなため、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
public void guiClear()
GUI情報をクリアします。 ここでは、関連するラベル、コードリソースの部分クリアも行います。 GUI情報は、シーケンスに管理しているため、この処理1回ごとに、 GUIData を全件再読み込みを行いますので、ご注意ください。
-
clear
public void clear()
リソースマネージャーをクリア(初期化)します。- 変更履歴:
- 5.4.3.4 (2012/01/12) labelPool の削除追加
-
-