クラス UserInfo
java.lang.Object
org.opengion.hayabusa.resource.UserInfo
- すべての実装されたインタフェース:
Comparable<UserSummary>,Cleanable,UserSummary
ユーザー情報の取得の為のインターフェースを実装したクラスです。
ログイン時のパスワードのチェックや,国名の識別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,
-
フィールドの概要
フィールド -
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明voidaddEditConfig(String guikey, String editName, DBEditConfig config) 指定の画面ID、編集名で編集設定オブジェクトを追加します。voidclear()初期化(クリア)します(org.opengion.fukurou.util.Cleanable の実装)。intcompareTo(UserSummary object) 自然比較メソッド インタフェース Comparable の 実装です。voiddeleteEditConfig(String guikey, String editName) 指定の画面ID、編集名の編集設定を削除します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。bytegetAccessBitMode(RoleMode other) 指定のユーザーロールに対する最終的なアクセス条件を取得します。getApplicationInfo(String gamenId, String prgId) アクセスログ取得の為,ApplicationInfoオブジェクトを返します。getAttribute(String key) UserInfoの属性文字列を取得します。getEditConfig(String guikey, String editName) 画面ID、編集名より編集設定オブジェクトを返します。getEditConfigs(String guikey) 編集設定オブジェクトの配列を返します。UserInfoの属性文字列の内部情報を返します。ユーザー個別のお気に入り画面オブジェクトのマップを取得します。getGUIInfo(String gamenId) ユーザー個別の画面オブジェクトを取得します。GUIInfo[]ユーザー個別の画面オブジェクトのマップを取得します。getInfo()オブジェクトの識別子として,ユーザー情報を返します。ユーザーのログインIPアドレスを取得します。getJname()ユーザー情報 名称(日本語)を取得します。getLang()ユーザー情報ロケール(言語)を取得します。最後に使用されたリクエスト変数の値を、取得します。longユーザーログイン時刻を取得します。getParameter(String key) ユーザーパラメータを取得します。ロールモード情報を取得します。getRoles()ユーザー情報 ロール(役割)を取得します。getSelectedEdit(String guikey) 指定の画面IDに対して選択済みの編集名を返します。ユーザーを取得します。inthashCode()オブジェクトのハッシュコード値を返します。booleanこのユーザーの権限で、指定のロールが許可されているかどうかを判定します。boolean画面オブジェクトのマップがセット済みかどうかを取得します。booleanisValidAddr(String addr) アクセスが許可されているアドレスかどうかをチェックします。voidremoveAttribute(String key, boolean save) UserInfoの属性文字列を削除します。voidsavePermanently(String key, String value, boolean isCommon) userInfoにセットされた値/キーをDBに登録します。voidsetAccessGui(GUIInfo guiInfo) このユーザーでアクセスされた画面オブジェクトを設定します。voidsetAttribute(String key, String value, boolean save) UserInfoの属性文字列を登録します。voidユーザー個別の画面オブジェクトのマップをセットします。voidユーザー情報ロケール(言語)をセットします。voidsetLastRequestMap(Map<String, String[]> reqMap) 最後に使用されたリクエスト変数の値を、Mapを読み取って登録します。voidsetLastRequestValue(String key, String val) 最後に使用されたリクエスト変数の値を、設定します。toString()オブジェクトの識別子として,詳細なユーザー情報を返します。
-
フィールド詳細
-
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- システムIDipAddress- IPアドレスappInfo- アプリ情報オブジェクト- 変更履歴:
- 3.0.0.1 (2003/02/14) ユーザー毎のエンコード指定方法を廃止します。, 3.1.3.0 (2003/04/10) ユーザー情報から、エンコード情報を削除する。, 3.4.0.3 (2003/09/10) "root","manager","admin" のロールを、すべて root 権限を与える。, 3.8.5.3 (2006/06/30) USE_USER_IDNO_C_SAPLESS を判定条件に加える。, 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 4.3.0.0 (2008/07/04) ロールモードマルチ対応, 4.4.0.0 (2009/08/02) データロール対応, 5.3.6.0 (2011/06/01) ユーザー永続化情報(GE20)の読み込みをUserInfoFactoryから移動, 6.0.2.2 (2014/10/03) DBEditConfigManager をここで作成する。, 7.4.4.0 (2021/06/30) openGionV8事前準備(DataRole.java廃止、GE16廃止)
-
-
メソッドの詳細
-
getParameter
ユーザーパラメータを取得します。 ユーザーパラメーターは、通常、GE16 テーブルより取得します。 // * 取得するSQL文は、SystemData の USER_PARAMETER_SQL に記述しておきます。 ユーザーパラメータに、値が存在しない場合は、システムリソースより 取得します。- パラメータ:
key- パラメータキー- 戻り値:
- パラメータ値(ユーザーパラメータになければ、システムリソースより取得
- 変更履歴:
- 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。, 7.4.4.0 (2021/06/30) openGionV8事前準備(GE16廃止)
-
getLoginTime
ユーザーログイン時刻を取得します。- 定義:
getLoginTimeインタフェース内UserSummary- 戻り値:
- ログイン時刻
-
getIPAddress
ユーザーのログインIPアドレスを取得します。- 定義:
getIPAddressインタフェース内UserSummary- 戻り値:
- IPアドレス
-
getUserID
ユーザーを取得します。- 定義:
getUserIDインタフェース内UserSummary- 戻り値:
- ユーザー
-
getLang
ユーザー情報ロケール(言語)を取得します。- 定義:
getLangインタフェース内UserSummary- 戻り値:
- ロケール(言語)
-
setLang
ユーザー情報ロケール(言語)をセットします。- パラメータ:
newLang- ロケール(言語)- 変更履歴:
- 5.1.4.0 (2010/03/01) lang を書き換え可能とする。
-
getJname
ユーザー情報 名称(日本語)を取得します。- 定義:
getJnameインタフェース内UserSummary- 戻り値:
- 名称(日本語)
-
getRoles
ユーザー情報 ロール(役割)を取得します。- 定義:
getRolesインタフェース内UserSummary- 戻り値:
- ロール(役割)
-
getRoleMode
ロールモード情報を取得します。- 戻り値:
- ロールモード情報
- 変更履歴:
- 4.3.0.0 (2008/07/04) 新規追加
-
getInfo
オブジェクトの識別子として,ユーザー情報を返します。- 定義:
getInfoインタフェース内UserSummary- 戻り値:
- ユーザー情報
- このメソッドは、nullを返しません
-
setAttribute
UserInfoの属性文字列を登録します。 予約文字(JNAME,ID,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,YMD,YMDH,LASTGAMENNM)を 登録しようとした場合は、エラーにします。 ※ 属性文字列キーが不正の場合、HybsSystemException が、throw されます。- パラメータ:
key- キーvalue- 値save- ユーザー永続化情報(GE20)に情報を保存するか
-
getAttribute
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の属性文字列
- 関連項目:
- 変更履歴:
- 2.1.0.2 (2002/11/07) USER.IDNO の返す値をUSER.ID が5Byte以上の時のみ、 先頭1文字を除いた値を返す様に変更。それ以外は、USER.IDを返す。, 2.2.0.0 (2002/12/17) 中国語(国際化)対応 ENCODE 追加, 3.1.3.0 (2003/04/10) ユーザー情報から、エンコード情報を削除する。, 3.5.4.2 (2003/12/15) ENAME,MAILTO、MAILUSERID、MAILPASSWD、GROUP、PROJECTを削除する。, 3.5.6.0 (2004/06/18) synchronized をattriMap に行います。, 3.6.0.0 (2004/09/17) PASSWD を削除する。, 3.8.1.2 (2005/12/19) USER.IDNO を削除する。(外部設定可能にするため), 3.8.7.0 (2006/12/15) ApplicationInfoオブジェクトから最終アクセス画面を取得, 4.4.0.0 (2009/08/02) データロール属性対応, 4.4.0.1 (2009/08/08) LASTGAMENNM追加, 6.4.1.1 (2016/01/16) PMD refactoring. Position literals first in String comparisons for EqualsIgnoreCase., 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。, 7.4.4.0 (2021/06/30) openGionV8事前準備(DataRole.java廃止)
-
getEntrys
UserInfoの属性文字列の内部情報を返します。 この内部情報の中には、UserInfo 自身の管理情報も含めます。 独自管理キーは、JNAME,ID,IDNO,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,LASTGAMENNM です。 それ以外は,外部より設定された値です。- 戻り値:
- 属性文字列のHybsEntryオブジェクト配列
- 変更履歴:
- 4.0.0.0 (2004/12/31) 新規作成, 4.4.0.1 (2009/08/08) LASTGAMENNM追加
- このメソッドは、nullを返しません
-
removeAttribute
UserInfoの属性文字列を削除します。- パラメータ:
key- キーsave- ユーザー永続化情報(GE20)から情報を削除するか
-
setGUIMap
ユーザー個別の画面オブジェクトのマップをセットします。- パラメータ:
newGuiMap- 画面オブジェクトのマップnewForbidAddrSet- アクセス禁止アドレスセット- 変更履歴:
- 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 4.0.0.0 (2005/01/31) 新規追加, 4.1.1.0 (2008/01/29) 画面の格上げとお気に入りマップ作成はクラスUserAccessTableに依頼, 5.2.0.0 (2010/09/01) アクセス禁止アドレスによる不正アクセス防止機能追加, 6.4.3.1 (2016/02/12) Collections.synchronizedMap で同期処理を行います
-
getGUIInfo
ユーザー個別の画面オブジェクトを取得します。 アクセスできない画面IDが指定されたときは、null が返ります。- パラメータ:
gamenId- 画面ID- 戻り値:
- 画面オブジェクト
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規追加, 5.2.0.0 (2010/09/01) guiMap の null 判定を追加, 6.4.1.1 (2016/01/16) 引数の gamenId が、null の場合は、null を返すように変更。, 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。
-
getGUIInfos
ユーザー個別の画面オブジェクトのマップを取得します。- 戻り値:
- 画面オブジェクトの配列
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規追加, 5.2.0.0 (2010/09/01) guiMap の null 判定を追加, 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。
-
isValidAddr
アクセスが許可されているアドレスかどうかをチェックします。 チェックの方法は、ブラックリスト方式です。 画面リソースに登録された一覧の内、そのユーザーが許可されていないアドレスに 対してのみfalseが返ります。 画面リソースに登録されていないアドレスや、アドレスにURLの区切り文字(/)が 含まれている場合はチェックされません。(trueが返ります)- パラメータ:
addr- チェック対象のアドレス- 戻り値:
- アクセスが許可されているアドレスかどうか
- 変更履歴:
- 5.2.0.0 (2010/09/01) 新規追加
-
getFavoriteMap
ユーザー個別のお気に入り画面オブジェクトのマップを取得します。- 戻り値:
- お気に入り画面オブジェクトのマップ
- 変更履歴:
- 4.1.1.0 (2008/01/31) 新規追加, 6.4.3.1 (2016/02/12) Collections.unmodifiableMap( Map<? extends K,? extends V> ) で作成された変更不可のMapを返します。
-
isGUIInfoSet
画面オブジェクトのマップがセット済みかどうかを取得します。- 戻り値:
- 画面オブジェクトのマップがセット済みかどうか(true:セット済み / false:未セット)
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規追加, 6.4.3.1 (2016/02/12) isInfoSet 廃止。
-
getAccessBitMode
指定のユーザーロールに対する最終的なアクセス条件を取得します。 アクセス条件は、複数あるユーザーロールの中で、最大のアクセス条件を算出します。 例えば、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- ロールモード- 戻り値:
- アクセスビット
- 変更履歴:
- 4.3.0.0 (2008/07/04) ロールモードマルチ対応
-
isAccess
このユーザーの権限で、指定のロールが許可されているかどうかを判定します。- パラメータ:
role- チェックを行うロール- 戻り値:
- アクセスできる(true)/出来ない(false)
- 変更履歴:
- 4.3.0.0 (2008/07/04) ロールモードマルチ対応, 4.3.0.1 (2008/08/11) ロールチェック時の引数間違い、是正, 6.3.6.1 (2015/08/28) '_' を、null と同等に扱います(すべて許可と同じ)
-
clear
初期化(クリア)します(org.opengion.fukurou.util.Cleanable の実装)。 画面オブジェクトのマップをクリアし、セット済みフラグを未セットに設定します。 システムリソースの USE_ACCESS_TOKEI_TABLE が true の場合は、 画面アクセス状況を、アクセス統計テーブル(GE15)に書き込みます。 // * ユーザー単位のパラメータは、システムリソースの USER_PARAMETER_SQL で // * 定義された値を検索して、取り込みます。 -
getEditConfig
画面ID、編集名より編集設定オブジェクトを返します。 また、ここで指定された編集名がこの画面での選択済み編集として登録されます。- パラメータ:
guikey- 画面IDeditName- 編集名- 戻り値:
- 編集設定オブジェクト
- 変更履歴:
- 5.3.6.0 (2011/06/01) 新規追加, 6.4.5.0 (2016/04/08) UserInfo のEditConfig関連機能を、DBEditConfigManagerに移植します。
-
getEditConfigs
編集設定オブジェクトの配列を返します。 DBEditConfigManagerを直接返していましたが、それを廃止します。- パラメータ:
guikey- 画面ID- 戻り値:
- 編集設定オブジェクトの配列
- 変更履歴:
- 6.9.2.1 (2018/03/12) DBEditConfigManagerを直接取り出す処理を、廃止します。
-
addEditConfig
指定の画面ID、編集名で編集設定オブジェクトを追加します。 既に登録されている場合は、既存の編集情報を更新します。 ※ 廃止予定ですが、対応が間に合わないため、暫定的に残しています。- パラメータ:
guikey- 画面IDeditName- 編集名config- 編集設定オブジェクト- 変更履歴:
- 5.3.6.0 (2011/06/01) 新規追加, 5.7.1.2 (2013/12/20) msg ⇒ errMsg 変更, 6.0.2.2 (2014/10/03) getEditKeys(String,String) を、DBEditConfig ⇒ DBEditConfigManager 変更, 6.3.9.1 (2015/11/27) getEditKeys(String,String) は、DBEditConfigManager ⇒ DBEditConfig へ移動。, 6.4.5.0 (2016/04/08) UserInfo のEditConfig関連機能を、DBEditConfigManagerに移植します。廃止
-
deleteEditConfig
指定の画面ID、編集名の編集設定を削除します。 ※ 廃止予定ですが、対応が間に合わないため、暫定的に残しています。- パラメータ:
guikey- 画面IDeditName- 編集名- 変更履歴:
- 5.3.6.0 (2011/06/01) 新規追加, 5.7.1.2 (2013/12/20) msg ⇒ errMsg 変更, 6.0.2.2 (2014/10/03) getEditKeys( String, String ) を、DBEditConfig ⇒ DBEditConfigManager 変更, 6.3.9.1 (2015/11/27) getEditKeys(String,String) は、DBEditConfigManager ⇒ DBEditConfig へ移動。, 6.4.5.0 (2016/04/08) UserInfo のEditConfig関連機能を、DBEditConfigManagerに移植します。廃止
-
getSelectedEdit
指定の画面IDに対して選択済みの編集名を返します。- パラメータ:
guikey- 画面ID- 戻り値:
- 選択済み編集名
- 変更履歴:
- 5.3.6.0 (2011/06/01) 新規追加, 6.0.2.2 (2014/10/03) EDIT_NAME_SELECTED_ を、EDIT_SELECTED_ に変更, 6.4.5.0 (2016/04/08) UserInfo のEditConfig関連機能を、DBEditConfigManagerに移植します。廃止
-
setLastRequestMap
最後に使用されたリクエスト変数の値を、Mapを読み取って登録します。 読み取り対象は、先に lastRequestMap に登録済みのキーだけです。 そのため、{@LAST.XXXX} で値を要求されたときに、キーが 登録されていない場合は、キーだけ(値 nullで)登録しておきます。- パラメータ:
reqMap- リクエスト変数のMap- 変更履歴:
- 5.6.8.1 (2013/09/13) 新規追加
-
setLastRequestValue
最後に使用されたリクエスト変数の値を、設定します。 この処理は、{@LAST.XXXX} は、リクエスト値があれば、それが優先的に 使われます。- パラメータ:
key- リクエストキーval- 設定値- 変更履歴:
- 5.6.8.1 (2013/09/13) 新規追加
-
getLastRequestValue
最後に使用されたリクエスト変数の値を、取得します。 画面で簡素に使用できるように、少し特殊な処理を行います。 query 画面で {@LAST.XXXX} を呼ぶと、lastRequestMap にキーがなければ、 キーだけ先に追加します。あれば、値を取得するだけです。 そして、result画面で command="NEW" の場合のみ、リクエスト情報のMapから、 lastRequestMap に持っているキーで(NULLでない場合は)上書きセットします。 キャッシュ量を減らすことと、処理の対象キーを減らす意味を持っています。- パラメータ:
key- リクエストキー- 戻り値:
- 設定値
- 変更履歴:
- 5.6.8.1 (2013/09/13) 新規追加
-
getApplicationInfo
アクセスログ取得の為,ApplicationInfoオブジェクトを返します。- パラメータ:
gamenId- 実行中の画面IDprgId- 実行中のプログラムID- 戻り値:
- ApplicationInfoオブジェクト
- 変更履歴:
- 3.8.7.0 (2006/12/15) 新規追加
-
compareTo
自然比較メソッド インタフェース Comparable の 実装です。 ユーザーの順序は、ユーザーID そのものの順序であらわされます。 同一ユーザーの場合は,ログインタイムの順番になります。- 定義:
compareToインタフェース内Comparable<UserSummary>- パラメータ:
object- 比較対象のObject- 戻り値:
- このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
- 変更履歴:
- 5.1.8.0 (2010/07/01) UserSummary の Comparable を型設定
-
equals
このオブジェクトと他のオブジェクトが等しいかどうかを示します。 インタフェース Comparable の 実装に関連して、再定義しています。 ユーザーは、ユーザーIDが等しく、かつ ログイン時刻が同一の場合に、 等しいと判断されます。 -
hashCode
オブジェクトのハッシュコード値を返します。 このメソッドは、java.util.Hashtable によって提供されるような ハッシュテーブルで使用するために用意されています。 equals( Object ) メソッドをオーバーライトした場合は、hashCode() メソッドも 必ず 記述する必要があります。 ここでは、ログイン時刻(long 値)の上位 32 ビットと下位 32 ビットの排他的論理和 を求めています。 (int)(this.longValue()^(this.longValue()>>>32)) ※ hashCode の 同一オブジェクトには同一ハッシュコードという規則と 発生頻度,ランダム性を考慮すれば、ログイン時刻そのもの(long)の ハッシュコードでも運用上は全く問題ないと考えられます。 -
toString
オブジェクトの識別子として,詳細なユーザー情報を返します。 -
savePermanently
userInfoにセットされた値/キーをDBに登録します。 既にキーが存在している場合は、既存データを更新し、なければ追加します。- パラメータ:
key- キーvalue- 値isCommon- ユーザーID='*'(全ユーザー公開)として登録するかどうか- 変更履歴:
- 5.3.6.0 (2011/06/01) 全ユーザー情報として保存できるように対応, 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対策, 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。, 6.4.5.0 (2016/04/08) DBEditConfigManager で使えるように、private → public にします(ちょっと不安)。
-
setAccessGui
このユーザーでアクセスされた画面オブジェクトを設定します。 これは、画面アクセスの履歴(順番)を管理する機能に使います。- パラメータ:
guiInfo- 画面オブジェクト- 変更履歴:
- 5.2.3.0 (2010/12/01) 新規追加
-