クラス ResourceManager


  • public final class ResourceManager
    extends java.lang.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​(java.lang.String systemId, java.lang.String lg, boolean initLoad)
      コンストラクター システムIDと言語コードを指定して,生成します。
    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      void clear()
      リソースマネージャーをクリア(初期化)します。
      void clear​(java.lang.String key)
      リソースマネージャーをキーに基づいて部分クリアします。
      CodeData getCodeData​(java.lang.String key)
      コードキーに対応する、CodeDataオブジェクトを返します。
      CodeData getCodeData​(java.lang.String key, java.lang.String query)
      コードリソースから,コード文字列を返します。
      DBColumn getDBColumn​(java.lang.String key)
      DBColumn オブジェクトを取得します。
      java.lang.String getDescription​(java.lang.String key, java.lang.String... args)
      ラベルリソースから,概要説明を返します。
      java.lang.String getDescription​(ErrMsg errMsgObj)
      ErrMsgオブジェクトの内容を元に、ラベルリソースから,概要説明を返します。
      java.lang.String getLabel​(java.lang.String key, java.lang.String... args)
      メッセージリソースから,キーで指定されたメッセージに, 引数で指定された変数値をセットしたメッセージを返します。
      java.lang.String getLabel​(ErrMsg errMsgObj)
      メッセージリソースから,ErrMsgオブジェクトで指定されたメッセージを返します。
      LabelData getLabelData​(java.lang.String key)
      ラベルキーに対応する、LabelDataオブジェクトを返します。
      java.util.Map<java.lang.String,​LabelData> getLabelMap​(java.lang.String query, java.lang.String dbid)
      指定されたクエリを発行し、ラベルマップを作成します。
      java.lang.String getLang()
      設定されている言語を返します。
      java.lang.String getLongLabel​(java.lang.String key)
      ラベルリソースから,ラベル(長)を返します。
      java.lang.String getRawShortLabel​(java.lang.String key, java.lang.String... args)
      ラベルオブジェクトの名称(短)をspanタグを付けない状態で返します。
      java.lang.String getRawShortLabel​(ErrMsg errMsgObj)
      メッセージリソースから,ErrMsgオブジェクトで指定されたショートメッセージを返します。
      java.lang.String getShortLabel​(java.lang.String key)
      ラベルリソースから,ラベル(短)を返します。
      void guiClear()
      GUI情報をクリアします。
      DBColumn makeDBColumn​(java.lang.String key)
      DBColumn オブジェクトを作成します。
      DBColumn makeDBColumn​(java.lang.String key, java.lang.String lbl)
      DBColumn オブジェクトを作成します。
      void makeGUIInfos​(UserInfo user)
      ログインユーザーで使用する画面オブジェクトを、UserInfoにセットします。
      • クラスから継承されたメソッド java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクタの詳細

      • ResourceManager

        public ResourceManager​(java.lang.String systemId,
                               java.lang.String lg,
                               boolean initLoad)
        コンストラクター システムIDと言語コードを指定して,生成します。
        パラメータ:
        systemId - システムID
        lg - 言語コード
        initLoad - リソースデータの先読み可否(true:先読みする)
    • メソッドの詳細

      • getLang

        public java.lang.String getLang()
        設定されている言語を返します。
        戻り値:
        言語
      • getDBColumn

        public DBColumn getDBColumn​(java.lang.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​(java.lang.String key)
        DBColumn オブジェクトを作成します。 内部にプールに存在すればそれを、なければ新規に作成します。 それでも存在しない場合は、DBColumnConfig より、ラベルと言語を指定して 新規に作成します。
        パラメータ:
        key - カラムID(not null)
        戻り値:
        DBColumnオブジェクト
        関連項目:
        getDBColumn( String )
        変更履歴:
        7.1.0.0 (2020/01/27) LabelDataを直接呼び出します。
      • makeDBColumn

        public DBColumn makeDBColumn​(java.lang.String key,
                                     java.lang.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 java.lang.String getLabel​(java.lang.String key,
                                         java.lang.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 java.lang.String getShortLabel​(java.lang.String key)
        ラベルリソースから,ラベル(短)を返します。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。
        パラメータ:
        key - ラベルキー
        戻り値:
        リソースに応じたラベル文字列(無ければ ラベルキー)
        変更履歴:
        4.3.3.0 (2008/10/01) 新規作成, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
      • getLongLabel

        public java.lang.String getLongLabel​(java.lang.String key)
        ラベルリソースから,ラベル(長)を返します。 概要説明が存在する場合は、ツールチップに概要説明が 表示されます。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。
        パラメータ:
        key - ラベルキー
        戻り値:
        リソースに応じたラベル(長)文字列(無ければ ラベルキー)
        変更履歴:
        6.3.8.4 (2015/10/09) #XXXX %S などの対応。getLabel(String) は汎用過ぎるので、少し分ける。, 6.3.9.0 (2015/11/06) labelLoader.getLabelDataは、nullを返しません。
      • getRawShortLabel

        public java.lang.String getRawShortLabel​(java.lang.String key,
                                                 java.lang.String... args)
        ラベルオブジェクトの名称(短)をspanタグを付けない状態で返します。 SNAMEが未設定の場合は、LNAME が返されます。 引数の言語コードに応じたリソースが登録されていない場合は, 引数のラベルキーそのまま返します。
        パラメータ:
        key - ラベルキー
        args - パラメータ配列(可変長引数)
        戻り値:
        リソースに応じたラベル(長)文字列(無ければ ラベルキー)
        変更履歴:
        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 パラメータ配列(可変長引数)を追加します。
      • getDescription

        public java.lang.String getDescription​(java.lang.String key,
                                               java.lang.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 java.lang.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) メッセージリソースとの統合化
      • getRawShortLabel

        public java.lang.String getRawShortLabel​(ErrMsg errMsgObj)
        メッセージリソースから,ErrMsgオブジェクトで指定されたショートメッセージを返します。 このエラーメッセージは,リソースで選ばれたロケール毎のメッセージに, MessageFormat#format でフォーマットする事により,作成されます。 エラーメッセージがリソースに存在しない場合は,エラーコードを返します。
        パラメータ:
        errMsgObj - ErrMsgオブジェクト
        戻り値:
        エラーメッセージ(無ければ ErrMsgオブジェクトの toString() )
        変更履歴:
        7.0.7.0 (2019/12/13) 新規追加
      • getDescription

        public java.lang.String getDescription​(ErrMsg errMsgObj)
        ErrMsgオブジェクトの内容を元に、ラベルリソースから,概要説明を返します。 キーのデータが存在しない場合はnullを返します。
        パラメータ:
        errMsgObj - ErrMsgオブジェクト
        戻り値:
        エラーメッセージ(キーが無ければnull)
        変更履歴:
        4.3.7.6 (2009/07/15) 新規作成
      • getLabelData

        public LabelData getLabelData​(java.lang.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​(java.lang.String key)
        コードキーに対応する、CodeDataオブジェクトを返します。
        パラメータ:
        key - コードキー
        戻り値:
        CodeDataオブジェクト(無ければ null)
      • getCodeData

        public CodeData getCodeData​(java.lang.String key,
                                    java.lang.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 java.util.Map<java.lang.String,​LabelData> getLabelMap​(java.lang.String query,
                                                                           java.lang.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​(java.lang.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 の削除追加