org.opengion.hayabusa.resource

## クラス RoleMode

- java.lang.Object
- - org.opengion.hayabusa.resource.RoleMode

-     public final class RoleMode
      extends java.lang.Object

       ロールモードは、画面オブジェクトやカラムオブジェクトのロール-モード制御の情報を
       管理するクラスです。
       ROLES 情報は、AAA|BBB|CCC と 『|』で区切られた複数のロールを持っています。
       通常、ユーザーロールは画面やカラムの各オブジェクトに対してロール制御可能です。
       ログインユーザーは、自分自身のロールを、画面やカラムが持っているかを判定します。
       画面に関しては、従来のデフォルトアクセスがなくなり、ロールを登録する場合は、
       必ず ユーザーロールとの比較が行われます。画面ロールを登録しない場合は、アクセス
       可能と判断されます。つまり、画面の場合は、なにも設定しなければ、アクセス可能と
       判断されます。
       カラムロールも同様に、何も設定しなければフルアクセスできます。通常、ほとんどの
       ケースでカラムロールが使われることはありません。
       RWMODE 情報は、各ロールに対して、３つの項目で表しています。
         １："-" メニュー非表示   "m" メニュー表示  "p" メニュー表示(強制プルダウン表示)
         ２："-" アクセス拒否     "r" 読取許可      "w" 読取、書込許可
         ３："-" 未対応           "d" ファイル出力  "u" ファイル入力  "f" ファイル入出力
             … このd,u,f では、【出力方法設定】タブは表示されません。
             "o" 表示順編集のみ可  … この設定では、【表示項目設定】 タブで位置と表示順のみ変更できます。
             "e" 画面編集可        … この設定で、編集機能がフルに使えます。
             互換性の関係より、"" は、"e"  と同等とします。
             設定キーの関係より、"o" と "e" を設定すると、"f" が自動的に設定されます。

       この３項目を順次つないで、"--","-r","-w","mr","mw" などの設定を行います。
       モードが設定されている場合は、共通モードとして、すべてのロールに同じモードを
       割り当てます。個別に割り当てる場合は、ROLES 情報の後ろに () 付きで追記します。
       例えば、AAA|BBB(-r)|CCC とすれば、BBB ロールの場合は、読取専用になります。
       ロールをぶつける場合は、AND 演算になります。
       過去(Ver3)のモードとの互換性をとる場合、"rw" は "mw" へ、"r-" は"mr" へ変換
       してください。

  機能分類
    リソース管理
  変更履歴:
    4.0.0.0 (2004/01/31) 新規作成, 4.3.3.0 (2008/10/01) pモード追加
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static java.lang.String` | `DEFAULT_MODE` 初期のモード

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `byte` | `getAccessBitMode(RoleMode other)` 指定のユーザーロールに対する最終的なアクセス条件を取得します。
    `java.lang.String` | `getMode()` モード配列を返します。
    `java.lang.String` | `getRoles()` ロールズを返します。
    `static boolean` | `isAccess(byte bitMode)` ビットロールの画面アクセス可否を返します。
    `static boolean` | `isDownload(byte bitMode)` ビットロールのファイル出力可否を返します。
    `static boolean` | `isEdit(byte bitMode)` ビットロールの画面編集可否を返します。
    `static boolean` | `isFullEdit(byte bitMode)` ビットロールの画面編集のフルコントロール可否を返します。
    `static boolean` | `isMenu(byte bitMode)` ビットロールのメニュー表示可否を返します。
    `static boolean` | `isPulldown(byte bitMode)` ビットロールのプルダウン化を返します。
    `static boolean` | `isRead(byte bitMode)` ビットロールの読込アクセス可否を返します。
    `static boolean` | `isUpload(byte bitMode)` ビットロールのファイル入力可否を返します。
    `static boolean` | `isWrite(byte bitMode)` ビットロールの書込アクセス可否を返します。
    `static RoleMode` | `newInstance(java.lang.String roles)` ロールとモードを元に、RoleModeオブジェクトを構築します。
    `static RoleMode` | `newInstance(java.lang.String roles, java.lang.String mode)` ロールとモードを元に、RoleModeオブジェクトを構築します。
    `java.lang.String` | `toString()` オブジェクトの識別子として，詳細なユーザー情報を返します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### フィールドの詳細

    - #### DEFAULT_MODE

          public static final java.lang.String DEFAULT_MODE

      初期のモード
      関連項目:
        定数フィールド値

  - ### メソッドの詳細

    - #### newInstance

          public static RoleMode newInstance(java.lang.String roles)

      ロールとモードを元に、RoleModeオブジェクトを構築します。 条件が同じ RoleModeオブジェクト があれば、キャッシュから返します。 キャッシュになければ、新規に作成します。 このキャッシュは、完全な内部キャッシュなので、いつクリアされるか保障がありません。
      パラメータ:
        `roles` - "|"で区切られた ロール文字列
      戻り値:
        RoleModeオブジェクト
      変更履歴:
        4.3.0.0 (2008/07/04) ロールモードマルチ対応
      このメソッドは、nullを返しません

    - #### newInstance

          public static RoleMode newInstance(java.lang.String roles,
                                             java.lang.String mode)

      ロールとモードを元に、RoleModeオブジェクトを構築します。 条件が同じ RoleModeオブジェクト があれば、キャッシュから返します。 キャッシュになければ、新規に作成します。 このキャッシュは、完全な内部キャッシュなので、いつクリアされるか保障がありません。
      パラメータ:
        `roles` - "|"で区切られた ロール文字列
        `mode` - "|"で区切られ、ロール文字列と対応付けられたモード文字列。唯一の場合は共通モードになる。
      戻り値:
        RoleModeオブジェクト
      変更履歴:
        4.3.0.0 (2008/07/04) ロールモードマルチ対応, 6.4.3.3 (2016/03/04) Map#computeIfAbsent で対応する。
      このメソッドは、nullを返しません

    - #### getRoles

          public java.lang.String getRoles()

      ロールズを返します。
      戻り値:
        ロールズ文字列

    - #### getMode

          public java.lang.String getMode()

      モード配列を返します。
      戻り値:
        モード配列

    - #### getAccessBitMode

          public byte getAccessBitMode(RoleMode other)

      指定のユーザーロールに対する最終的なアクセス条件を取得します。 アクセス条件は、複数あるユーザーロールの中で、最大のアクセス条件を算出します。 例えば、AAA(-r)|BBB(-w)|CCC(mr) の３つのロール/モードが設定されている場合、 ユーザーが、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) ロールモードマルチ対応

    - #### isMenu

          public static boolean isMenu(byte bitMode)

      ビットロールのメニュー表示可否を返します。 ロールが、m## , p## の場合に、true になります。 これは、メニューに表示されるかどうかの判定に使われます。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        メニュー表示できる(true)/出来ない(false)

    - #### isPulldown

          public static boolean isPulldown(byte bitMode)

      ビットロールのプルダウン化を返します。 ロールが、p## の場合に、true になります。 ボタンメニュー時でも強制的に従来のプルダウンにします。 今後は廃止の方向です。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        true:プルダウン化
      変更履歴:
        4.3.3.0 (2008/10/01) メソッド追加

    - #### isRead

          public static boolean isRead(byte bitMode)

      ビットロールの読込アクセス可否を返します。 ロールが、#r# , #w# の場合に、true になります。 読み取り属性がある場合、画面が利用可能になります。 #-# の場合は、画面へのアクセスができないため、 メニューアクセス許可を与える、m-# の設定は無意味です。 この場合は、メニューにも表示されません。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        読込アクセスできる(true)/出来ない(false)

    - #### isWrite

          public static boolean isWrite(byte bitMode)

      ビットロールの書込アクセス可否を返します。 ロールが、#w# の場合に、true になります。 これは、読込、書込みの判断ではなく、書込みができるか どうかの判断をしています。 画面にアクセスできるかどうかの判断は、isAccess を使用してください。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        書込アクセスできる(true)/出来ない(false)

    - #### isAccess

          public static boolean isAccess(byte bitMode)

      ビットロールの画面アクセス可否を返します。 これは、画面にアクセスできるかどうかの判断です。 ロールが、#r# , #w# の場合に、true になります。 現時点では、isRead(byte) と計算方法は異なりますが、同じ結果になっています。 これは、たまたま、現時点のロールの種類がそうなっているだけで、将来的に 同じかどうかは、保障されていません。 よって、読み取り許可と、画面アクセス許可は、分けて考えてください。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        画面アクセスできる(true)/出来ない(false)

    - #### isDownload

          public static boolean isDownload(byte bitMode)

      ビットロールのファイル出力可否を返します。 ロールが、##d , ##f , ##o , ##e(= ##) の場合に、true になります。 ##u の場合に、false になります。 ファイル出力の可否を判定します。 ## は、互換性の関係で、##e と同じです。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        ファイル出力できる(true)/出来ない(false)

    - #### isUpload

          public static boolean isUpload(byte bitMode)

      ビットロールのファイル入力可否を返します。 ロールが、##u , ##f , ##o , ##e(= ##) の場合に、true になります。 ##d の場合に、false になります。 ファイル入力の可否を判定します。 ## は、互換性の関係で、##e と同じです。 ダウンロードはさせないが、アップロードを行う場合に使います。 ここでのアップロードとは、基本的にデータの取り込みになりますので、 アップロードのみという扱いは、あまりありません。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        ファイル入力できる(true)/出来ない(false)

    - #### isEdit

          public static boolean isEdit(byte bitMode)

      ビットロールの画面編集可否を返します。 ロールが、##o , ##e(= ##) の場合に、true になります。 このビットロールだけ特殊で、フラグが ON の場合に、機能制限がかかります。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        アクセスできる(true)/出来ない(false)
      変更履歴:
        5.4.2.0 (2011/12/01) 新規作成, 5.5.5.2 (2012/08/10) oモード追加に伴い変更

    - #### isFullEdit

          public static boolean isFullEdit(byte bitMode)

      ビットロールの画面編集のフルコントロール可否を返します。 ロールが、##e(= ##) の場合に、true になります。 これは、フルコントロールの状態を指します。
      パラメータ:
        `bitMode` - ビットロール
      戻り値:
        アクセスできる(true)/出来ない(false)
      変更履歴:
        5.5.5.2 (2012/08/10) 新規作成

    - #### toString

          public java.lang.String toString()

      オブジェクトの識別子として，詳細なユーザー情報を返します。
      オーバーライド:
        `toString` クラス内 `java.lang.Object`
      戻り値:
        詳細な画面情報
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.