uCosminexus DocumentBroker Version 5 リファレンス API

[目次][用語][索引][前へ][次へ]

1.11.3 パブリックACLの操作

パブリックACLは,独立した文書管理オブジェクトです。ここでは,パブリックACLの作成と文書管理オブジェクトへのバインド,また,文書管理オブジェクトからのパブリックACLのバインドについて説明します。また,文書管理オブジェクトからバインドしているパブリックACLの一覧を取得したり,パブリックACLからバインドされている文書管理オブジェクトの一覧を取得したりする方法も説明します。

<この項の構成>
(1) パブリックACLの作成
(2) パブリックACLのバインド
(3) バインドしているパブリックACLの一覧取得
(4) バインドするパブリックACLの変更
(5) パブリックACLをバインドしている文書管理オブジェクトの一覧取得
(6) パブリックACLのアンバインド

(1) パブリックACLの作成

パブリックACLは,ほかの文書管理オブジェクトと同様に,DbjDocSpaceインターフェースのメソッドで作成します。

パブリックACLを作成する例を示します。この例では,パブリックACLを作成して,同時に文書管理オブジェクトからバインドさせます。

 
// パブリックACLを作成する例
 
  // factory:DbjFactoryインターフェース
  // docspc:DbjDocSpaceインターフェース
 
// パブリックACLに設定するローカルACLを作成する
DbjVArray acl = factory.createVArray( null );
 
DbjACE elm = factory.createACE(factory.createPropSet());
elm.setSystemSubject( DbjDef.SYSSUBJECT_EVERYONE );
elm.setPermission( DbjDef.PERM_READ_WRITE );
 
acl.addPropSet( elm.propSet() );
 
elm.setUserSubject( "hitachi" );
elm.setPermission( DbjDef.PERM_FULL_CONTROL );
 
acl.addPropSet( elm.propSet() );
 
DbjPropSet props = factory.createPropSet();
props.setPropVal( "dbrProp_ACL", acl );
 
// バインドするオブジェクトのリストを作成する
List<DbjObj> bindobjlist = new ArrayList<DbjObj>();
bindobjlist.add( docspc.createObjConnection( oiid1 ));
bindobjlist.add( docspc.createObjConnection( oiid2 ));
 
// パブリックACLを作成する
DbjObj pacl = docspc.createPublicACL(
                           "edmClass_PublicACL",
                           props,
                           bindobjlist );
 

(2) パブリックACLのバインド

ここでは,文書管理オブジェクトから,パブリックACLにバインドする方法について説明します。パブリックACLのバインドは,DbjObj#bindPublicACLメソッドで実行します。

文書管理オブジェクトからパブリックACLをバインドする例を示します。この例では,バインドするパブリックACLを検索で取得して,検索結果として得られたパブリックACLをすべて一括してバインドします。

 
// 文書管理オブジェクトからパブリックACLをバインドする例
 
  // docspc:DbjDocSpaceインターフェース
  // obj:DbjObjインターフェース
  //  (文書管理オブジェクトのインターフェース)
 
// パブリックACLを検索する
DbjResultSet result = docspc.executeSearch(
      "SELECT dmaProp_OIID  FROM edmClass_PublicACL WHERE...",
      null,
      null );
 
// 検索結果からDbjObjListインターフェースを取得する
DbjObjList objlist = docspc.createObjList( result , 0 , null );
 
// 検索結果として得られた複数のパブリックACLを一括してバインドする
obj.bindPublicACL( objlist );
 

(3) バインドしているパブリックACLの一覧取得

ここでは,文書管理オブジェクトにバインドしているパブリックACLの一覧を取得する方法について説明します。一覧の取得は,DbjObj#getPublicACLListメソッドで実行します。

バインドしているパブリックACLの一覧を取得する例を示します。

 
// バインドしているパブリックACLの一覧を取得する例
 
  // obj:DbjObjインターフェース
  //  (文書管理オブジェクトのインターフェース)
 
// バインドしているパブリックACLの一覧を取得する
DbjObjList objlist = obj.getPublicACLList ( null );
 
// パブリックACLのOIIDを出力する
for ( int i = 0 ; i<objlist.size() ; i++ ){
   System.out.println( "oiid = " + objlist.getObj(i).getOiid() );
}

(4) バインドするパブリックACLの変更

ここでは,文書管理オブジェクトにバインドしているパブリックACLを変更する方法について説明します。バインドしているパブリックACLは,dbrProp_PublicACLIdsプロパティに設定されています。このプロパティはVARRAY型のプロパティです。要素は,DbjPublicACLIdElmインターフェースまたはDbjPropSetインターフェースで操作します。

文書管理オブジェクトからバインドしているパブリックACLを変更する例を示します。ここでは,バインドするパブリックACLを,一つ削除して一つ追加します。

 
// 文書管理オブジェクトからバインドしているパブリックACLを変更する例
 
  // obj:DbjObjインターフェース
  //  (文書管理オブジェクトのインターフェース)
 
// バインドしているパブリックACLを要素とした可変長配列を取得する
Set<String> propdef = new HashSet<String>();
propdef.add( "dbrProp_PublicACLIds" );
obj.readProperties( propdef );
 
DbjVArray varray = obj.propSet()
  .getVArrayRef( "dbrProp_PublicACLIds" );
 
// 一つ目の要素を可変長配列から削除する
varray.remove(0);
 
// 追加するパブリックACLのOIIDを要素に設定する
DbjPublicACLIdElm elm = factory.createPublicACLIdElm();
elm.setId( pacloiid );
 
// 要素を可変長配列の末尾に追加する
varray.addPropSet( elm.propSet() );
 
// dbrProp_PublicACLIdsプロパティを更新する
obj.writeProperties();
 

(5) パブリックACLをバインドしている文書管理オブジェクトの一覧取得

ここでは,パブリックACLがバインドされている文書管理オブジェクトの一覧を取得する方法について説明します。一覧の取得は,DbjObj#getBindObjectListメソッドで実行します。

パブリックACLをバインドしている文書管理オブジェクトの一覧取得の例を示します。

 
// パブリックACLをバインドしている文書管理オブジェクトの一覧取得
 
  // obj:DbjObjインターフェース
  //  (パブリックACLのインターフェース)
 
// バインドされている文書管理オブジェクトとの一覧を取得する
DbjObjList objlist = obj.getBindObjectList(
             null,
             DbjDef.OBJTYPE_DOC, // 文書を取得
             null );
 
// バインドされている文書管理オブジェクトのOIIDを出力する
for ( int i = 0; i<objlist.size() ; i++ ){
   System.out.println( "oiid = " + objlist.getObj(i).getOiid() );
}

(6) パブリックACLのアンバインド

ここでは,パブリックACLをアンバインドする方法について説明します。

パブリックACLのアンバインドは,DbjObj#unbindPublicACLメソッドで実行します。

文書管理オブジェクトからパブリックACLをアンバインドする例を示します。

 
// 文書管理オブジェクトからパブリックACLをアンバインドする例
 
  // docspc:DbjDocSpaceインターフェース
  // obj:DbjObjインターフェース
  //   (文書管理オブジェクトのインターフェース)
 
// アンバインドするパブリックACLのリストを作成する
List<DbjObj> unbindlist = new ArrayList<DbjObj>();
unbindlist.add( docspc.createObjConnection( pacloiid ) );
 
// アンバインドを実行する
obj.unbindPublicACL( unbindlist );