クラス UserInfo

  • すべての実装されたインタフェース:
    Comparable<UserSummary>, Cleanable, UserSummary

    public class UserInfo
    extends Object
    implements UserSummary, Cleanable
    ユーザー情報の取得の為のインターフェースを実装したクラスです。 ログイン時のパスワードのチェックや,国名の識別ID,ポータルページのURLなど 個人情報を管理させます。 特に,画面アクセス時の権限やメールの送信,各画面にユーザー情報を表示したり, エラー時のログファイル,テンポラリディレクトリなども管理します。 {@USER.XXXX} で、XXXX 部に、UserInfo オブジェクトで定義されている 属性情報を取り出すことが出来ます。 以下の値は UserInfo オブジェクトの項目から取得します。 ・JNAME ユーザー日本語名称 ・ID ユーザーID ・INFO ユーザー情報(ユーザーID:日本語名称) ・LANG 言語 ・ROLES ロール ・IPADDRESS IPアドレス ・LOGINTIME ログイン時刻 ・LASTACCESS 最終アクセス画面ID 以下の値はあらかじめ、動的に作成されます。 ・YMD 8byte の今日のシステム日付 ・YMDH 14byte の今日のシステム日時 それ以外は,外部より設定された値です。 従来は、USER.IDNO はUSER.ID が5Byte以上の時のみ先頭1文字を除いたユーザーIDとして オブジェクト項目からの取得でしたが、現在は初期値として設定してあります。 外部より再設定可能になっています。
    導入されたバージョン:
    JDK5.0,
    • フィールドの詳細

      • USE_DB_APPLICATION_INFO

        public static final boolean USE_DB_APPLICATION_INFO
        コネクションにアプリケーション情報を追記するかどうか指定
    • コンストラクタの詳細

      • UserInfo

        public UserInfo​(String userID,
                        String lang,
                        String jname,
                        String roles,
                        String systemId,
                        String ipAddress,
                        ApplicationInfo appInfo)
        コンストラクター
        パラメータ:
        userID - ユーザー
        lang - 言語
        jname - 日本語名称
        roles - ロール
        systemId - システムID
        ipAddress - IPアドレス
        appInfo - アプリ情報オブジェクト
    • メソッドの詳細

      • getParameter

        public String getParameter​(String key)
        ユーザーパラメータを取得します。 ユーザーパラメーターは、通常、GE16 テーブルより取得します。 // * 取得するSQL文は、SystemData の USER_PARAMETER_SQL に記述しておきます。 ユーザーパラメータに、値が存在しない場合は、システムリソースより 取得します。
        パラメータ:
        key - パラメータキー
        戻り値:
        パラメータ値(ユーザーパラメータになければ、システムリソースより取得
      • getLoginTime

        public long getLoginTime()
        ユーザーログイン時刻を取得します。
        定義:
        getLoginTime インタフェース内 UserSummary
        戻り値:
        ログイン時刻
      • getLang

        public String getLang()
        ユーザー情報ロケール(言語)を取得します。
        定義:
        getLang インタフェース内 UserSummary
        戻り値:
        ロケール(言語)
      • setLang

        public void setLang​(String newLang)
        ユーザー情報ロケール(言語)をセットします。
        パラメータ:
        newLang - ロケール(言語)
      • getJname

        public String getJname()
        ユーザー情報 名称(日本語)を取得します。
        定義:
        getJname インタフェース内 UserSummary
        戻り値:
        名称(日本語)
      • getRoles

        public String getRoles()
        ユーザー情報 ロール(役割)を取得します。
        定義:
        getRoles インタフェース内 UserSummary
        戻り値:
        ロール(役割)
      • getRoleMode

        public RoleMode getRoleMode()
        ロールモード情報を取得します。
        戻り値:
        ロールモード情報
      • getInfo

        public String getInfo()
        オブジェクトの識別子として,ユーザー情報を返します。
        定義:
        getInfo インタフェース内 UserSummary
        戻り値:
        ユーザー情報
      • setAttribute

        public void setAttribute​(String key,
                                 String value,
                                 boolean save)
        UserInfoの属性文字列を登録します。 予約文字(JNAME,ID,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,YMD,YMDH,LASTGAMENNM)を 登録しようとした場合は、エラーにします。 ※ 属性文字列キーが不正の場合、HybsSystemException が、throw されます。
        パラメータ:
        key - キー
        value - 値
        save - ユーザー永続化情報(GE20)に情報を保存するか
      • getAttribute

        public String getAttribute​(String key)
        UserInfoの属性文字列を取得します。 以下の値は UserInfo オブジェクトの項目から取得します。
         ・JNAME      ユーザー日本語名称
         ・ID         ユーザーID
         ・IDNO       (初期値)USER.ID が5Byte以上の時のみ先頭1文字を除いたユーザーID
         ・INFO       ユーザー情報(ユーザーID:日本語名称)
         ・LANG       言語
         ・ROLES      ロール
         ・IPADDRESS  IPアドレス
         ・LOGINTIME  ログイン時刻
         ・LASTACCESS 最終アクセス画面ID
         ・LASTGAMENNM 最終アクセス画面名
        
         以下の値はあらかじめ、動的に作成されます。
         ・YMD       8byte の今日のシステム日付
         ・YMDH    14byte の今日のシステム日時
         
        それ以外は,外部より設定された値です。
        定義:
        getAttribute インタフェース内 UserSummary
        パラメータ:
        key - キー
        戻り値:
        UserInfoの属性文字列
        関連項目:
        getAttribute( String )
      • getEntrys

        public HybsEntry[] getEntrys()
        UserInfoの属性文字列の内部情報を返します。 この内部情報の中には、UserInfo 自身の管理情報も含めます。 独自管理キーは、JNAME,ID,IDNO,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,LASTGAMENNM です。 それ以外は,外部より設定された値です。
        戻り値:
        属性文字列のHybsEntryオブジェクト配列
      • removeAttribute

        public void removeAttribute​(String key,
                                    boolean save)
        UserInfoの属性文字列を削除します。
        パラメータ:
        key - キー
        save - ユーザー永続化情報(GE20)から情報を削除するか
      • setGUIMap

        public void setGUIMap​(Map<String,​GUIInfo> newGuiMap,
                              Set<String> newForbidAddrSet)
        ユーザー個別の画面オブジェクトのマップをセットします。
        パラメータ:
        newGuiMap - 画面オブジェクトのマップ
        newForbidAddrSet - アクセス禁止アドレスセット
      • getGUIInfo

        public GUIInfo getGUIInfo​(String gamenId)
        ユーザー個別の画面オブジェクトを取得します。 アクセスできない画面IDが指定されたときは、null が返ります。
        パラメータ:
        gamenId - 画面ID
        戻り値:
        画面オブジェクト
      • getGUIInfos

        public GUIInfo[] getGUIInfos()
        ユーザー個別の画面オブジェクトのマップを取得します。
        戻り値:
        画面オブジェクトの配列
      • isValidAddr

        public boolean isValidAddr​(String addr)
        アクセスが許可されているアドレスかどうかをチェックします。 チェックの方法は、ブラックリスト方式です。 画面リソースに登録された一覧の内、そのユーザーが許可されていないアドレスに 対してのみfalseが返ります。 画面リソースに登録されていないアドレスや、アドレスにURLの区切り文字(/)が 含まれている場合はチェックされません。(trueが返ります)
        パラメータ:
        addr - チェック対象のアドレス
        戻り値:
        アクセスが許可されているアドレスかどうか
      • getFavoriteMap

        public Map<String,​FavoriteGUIDatagetFavoriteMap()
        ユーザー個別のお気に入り画面オブジェクトのマップを取得します。
        戻り値:
        お気に入り画面オブジェクトのマップ
      • isGUIInfoSet

        public boolean isGUIInfoSet()
        画面オブジェクトのマップがセット済みかどうかを取得します。
        戻り値:
        画面オブジェクトのマップがセット済みかどうか(true:セット済み / false:未セット)
      • getAccessBitMode

        public byte getAccessBitMode​(RoleMode other)
        指定のユーザーロールに対する最終的なアクセス条件を取得します。 アクセス条件は、複数あるユーザーロールの中で、最大のアクセス条件を算出します。 例えば、AAA(-r)|BBB(-w)|CCC(mr) の3つのロール/モードが設定されている場合、 ユーザーが、AAA だけの場合は、-r ですが、AAA|BBB を持っている場合は、-w になります。 さらに、BBB|CCC と持っている場合は、(-w:書き込み許可)と(mr:メニューから読取許可)の 権限により、mw:メニューからの書き込み許可が与えられます。 モード指定がある場合は、AND演算になります。 例えば、AAA(-r)|BBB(-w)|CCC(mr) と BBB|CCC(-r) の場合、(-r)+(-w)+(mr)*(-r)=-w に なります。ロールは、OR ですが、モードは、同一ロールでのAND になります。 実際には、メニュー表示の可否は、ポップアップ系によく用いられますので、上記のような 許可が実際にあるかどうかは不明ですが、すべてのモードのOR条件での結合になります。
        パラメータ:
        other - ロールモード
        戻り値:
        アクセスビット
      • isAccess

        public boolean isAccess​(String role)
        このユーザーの権限で、指定のロールが許可されているかどうかを判定します。
        パラメータ:
        role - チェックを行うロール
        戻り値:
        アクセスできる(true)/出来ない(false)
      • clear

        public void clear()
        初期化(クリア)します(org.opengion.fukurou.util.Cleanable の実装)。 画面オブジェクトのマップをクリアし、セット済みフラグを未セットに設定します。 システムリソースの USE_ACCESS_TOKEI_TABLE が true の場合は、 画面アクセス状況を、アクセス統計テーブル(GE15)に書き込みます。 // * ユーザー単位のパラメータは、システムリソースの USER_PARAMETER_SQL で // * 定義された値を検索して、取り込みます。
        定義:
        clear インタフェース内 Cleanable
      • getEditConfig

        public DBEditConfig getEditConfig​(String guikey,
                                          String editName)
        画面ID、編集名より編集設定オブジェクトを返します。 また、ここで指定された編集名がこの画面での選択済み編集として登録されます。
        パラメータ:
        guikey - 画面ID
        editName - 編集名
        戻り値:
        編集設定オブジェクト
      • getEditConfigs

        public DBEditConfig[] getEditConfigs​(String guikey)
        編集設定オブジェクトの配列を返します。 DBEditConfigManagerを直接返していましたが、それを廃止します。
        パラメータ:
        guikey - 画面ID
        戻り値:
        編集設定オブジェクトの配列
      • addEditConfig

        public void addEditConfig​(String guikey,
                                  String editName,
                                  DBEditConfig config)
        指定の画面ID、編集名で編集設定オブジェクトを追加します。 既に登録されている場合は、既存の編集情報を更新します。 ※ 廃止予定ですが、対応が間に合わないため、暫定的に残しています。
        パラメータ:
        guikey - 画面ID
        editName - 編集名
        config - 編集設定オブジェクト
      • deleteEditConfig

        public void deleteEditConfig​(String guikey,
                                     String editName)
        指定の画面ID、編集名の編集設定を削除します。 ※ 廃止予定ですが、対応が間に合わないため、暫定的に残しています。
        パラメータ:
        guikey - 画面ID
        editName - 編集名
      • getSelectedEdit

        public String getSelectedEdit​(String guikey)
        指定の画面IDに対して選択済みの編集名を返します。
        パラメータ:
        guikey - 画面ID
        戻り値:
        選択済み編集名
      • setLastRequestMap

        public void setLastRequestMap​(Map<String,​String[]> reqMap)
        最後に使用されたリクエスト変数の値を、Mapを読み取って登録します。 読み取り対象は、先に lastRequestMap に登録済みのキーだけです。 そのため、{@LAST.XXXX} で値を要求されたときに、キーが 登録されていない場合は、キーだけ(値 nullで)登録しておきます。
        パラメータ:
        reqMap - リクエスト変数のMap
      • setLastRequestValue

        public void setLastRequestValue​(String key,
                                        String val)
        最後に使用されたリクエスト変数の値を、設定します。 この処理は、{@LAST.XXXX} は、リクエスト値があれば、それが優先的に 使われます。
        パラメータ:
        key - リクエストキー
        val - 設定値
      • getLastRequestValue

        public String getLastRequestValue​(String key)
        最後に使用されたリクエスト変数の値を、取得します。 画面で簡素に使用できるように、少し特殊な処理を行います。 query 画面で {@LAST.XXXX} を呼ぶと、lastRequestMap にキーがなければ、 キーだけ先に追加します。あれば、値を取得するだけです。 そして、result画面で command="NEW" の場合のみ、リクエスト情報のMapから、 lastRequestMap に持っているキーで(NULLでない場合は)上書きセットします。 キャッシュ量を減らすことと、処理の対象キーを減らす意味を持っています。
        パラメータ:
        key - リクエストキー
        戻り値:
        設定値
      • getApplicationInfo

        public ApplicationInfo getApplicationInfo​(String gamenId,
                                                  String prgId)
        アクセスログ取得の為,ApplicationInfoオブジェクトを返します。
        パラメータ:
        gamenId - 実行中の画面ID
        prgId - 実行中のプログラムID
        戻り値:
        ApplicationInfoオブジェクト
      • compareTo

        public int compareTo​(UserSummary object)
        自然比較メソッド インタフェース Comparable の 実装です。 ユーザーの順序は、ユーザーID そのものの順序であらわされます。 同一ユーザーの場合は,ログインタイムの順番になります。
        定義:
        compareTo インタフェース内 Comparable<UserSummary>
        パラメータ:
        object - 比較対象のObject
        戻り値:
        このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
      • equals

        public boolean equals​(Object object)
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。 インタフェース Comparable の 実装に関連して、再定義しています。 ユーザーは、ユーザーIDが等しく、かつ ログイン時刻が同一の場合に、 等しいと判断されます。
        オーバーライド:
        equals クラス内 Object
        パラメータ:
        object - 比較対象の参照オブジェクト
        戻り値:
        引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
      • hashCode

        public int hashCode()
        オブジェクトのハッシュコード値を返します。 このメソッドは、java.util.Hashtable によって提供されるような ハッシュテーブルで使用するために用意されています。 equals( Object ) メソッドをオーバーライトした場合は、hashCode() メソッドも 必ず 記述する必要があります。 ここでは、ログイン時刻(long 値)の上位 32 ビットと下位 32 ビットの排他的論理和 を求めています。 (int)(this.longValue()^(this.longValue()>>>32)) ※ hashCode の 同一オブジェクトには同一ハッシュコードという規則と 発生頻度,ランダム性を考慮すれば、ログイン時刻そのもの(long)の ハッシュコードでも運用上は全く問題ないと考えられます。
        オーバーライド:
        hashCode クラス内 Object
        戻り値:
        このオブジェクトのハッシュコード値
      • toString

        public String toString()
        オブジェクトの識別子として,詳細なユーザー情報を返します。
        オーバーライド:
        toString クラス内 Object
        戻り値:
        詳細なユーザー情報
      • savePermanently

        public void savePermanently​(String key,
                                    String value,
                                    boolean isCommon)
        userInfoにセットされた値/キーをDBに登録します。 既にキーが存在している場合は、既存データを更新し、なければ追加します。
        パラメータ:
        key - キー
        value - 値
        isCommon - ユーザーID='*'(全ユーザー公開)として登録するかどうか
      • setAccessGui

        public void setAccessGui​(GUIInfo guiInfo)
        このユーザーでアクセスされた画面オブジェクトを設定します。 これは、画面アクセスの履歴(順番)を管理する機能に使います。
        パラメータ:
        guiInfo - 画面オブジェクト