6.9.2 ローカルACLとACEの操作

ローカルACLは,文書空間オブジェクトのプロパティ(dbrProp_ACLプロパティ)として設定します。このプロパティは,VARRAY型のプロパティです。VARRAY型のプロパティの値である可変長配列は,パラメタクラスのDbjVArrayインターフェースで操作します。VARRAY型のプロパティの操作については,「6.8.7 文書空間オブジェクトのプロパティの操作」を参照してください。

可変長配列の要素であるACEは,パラメタクラスのDbjACEインターフェースで操作できます。

ローカルACLを文書空間オブジェクトのプロパティとして設定する流れは,次のようになります。

  1. DbjVArrayインターフェースを取得して,可変長配列を作成します。
  2. DbjACEインターフェースを取得して,ACEを作成し,値を設定します。
  3. ACEを,可変長配列の要素として追加します。
    設定するACEの数だけ,2.と3.を繰り返します。
  4. 可変長配列をプロパティ値集合(DbjPropSet)に設定します。
  5. プロパティ値集合を,文書空間オブジェクトにフラッシュします。

文書空間オブジェクトにローカルACLを設定する例を示します。

// 文書空間オブジェクトにローカルACLを設定する例
 
 // factory:DbjFactoryインターフェース

// 可変長配列を作成する
DbjVArray acl = factory.createVArray( null );

// 一つ目のACEを作成する
// (システムサブジェクトですべてのユーザに
//  参照更新権を設定する)
DbjACE elm = factory.createACE(factory.createPropSet());
elm.setSystemSubject( DbjDef.SYSSUBJECT_EVERYONE );
elm.setPermission( DbjDef.PERM_READ_WRITE );

// ACEをACLに追加する
acl.addPropSet( elm.propSet() );

// 二つ目のACEを作成する
// (ユーザhitachiにフルコントロールを設定する)
elm.setUserSubject( "hitachi" );
elm.setPermission( DbjDef.PERM_FULL_CONTROL );

// ACEをACLに追加する
acl.addPropSet( elm.propSet() );

// 可変長配列をプロパティ値集合に設定する
DbjPropSet props = factory.createPropSet();
props.setPropVal( "dbrProp_ACL",acl );

// プロパティ値集合を文書空間オブジェクトにフラッシュする
obj.writeProperties( props );