6.8.6 アクセス方法に関する情報の取得と変更

ここでは,次に示す情報を取得および変更する操作について説明します。

<この項の構成>
(1) ロック種別の取得と変更
(2) 操作対象になるバージョンの取得と変更

(1) ロック種別の取得と変更

文書空間オブジェクトの操作は,次の2種類に分類できます。

参照系の操作
操作対象になるJava クラスライブラリのオブジェクトまたは文書空間オブジェクトの状態を変化させない操作です。例えば,文書のコンテンツの参照や文書やフォルダのプロパティの参照などは参照系の操作です。
なお,参照系の操作を実行するメソッドを,参照系メソッドといいます。
更新系の操作
操作対象になるJava クラスライブラリのオブジェクトまたは文書空間オブジェクトの状態を変化させる操作です。例えば,文書のコンテンツの更新や文書やフォルダのプロパティの更新などは更新系の操作です。
なお,更新系の操作を実行するメソッドを,更新系メソッドといいます。

参照系メソッドを実行すると,デフォルトの設定では,文書空間オブジェクトに対してreadロックが設定されます。これを,明示的にwriteロックを設定するように変更できます。

文書空間オブジェクトに設定するロック種別の変更は,DbjObj#lockメソッドで実行します。このメソッドを実行すると,同じ文書空間オブジェクトに対して,指定したロック種別を設定するDbjObjインターフェースが取得できます。例えば,writeロックを設定するインターフェースを取得した場合は,そのインターフェースで参照系メソッドを実行したときにも,必ずwriteロックが設定されます。

なお,取得するインターフェースは,DbjObj#lockメソッドを実行したインターフェースとは異なるインターフェースです。元のインターフェースを使用した場合のアクセス方法が変更されるのではありません。

異なるロック種別で文書空間オブジェクトにアクセスする例を示します。なお,readPropertiesメソッドは,文書空間オブジェクトのプロパティを参照する場合に使用する,参照系メソッドです。

// 異なるロック種別で文書空間オブジェクトにアクセスする例
 
 // docspc:DbjDocSpaceインターフェース
 
// DbjObjインターフェースを取得する
DbjObj obj = docspc.createObjConnection( oiid );
 
// デフォルト(=readロックを設定)のままプロパティを参照する…(a)
obj.readProperties( propdef );
 
// writeロックを設定するためのDbjObjインターフェースを取得する
DbjObj objWithWriteLock = obj.lock( DbjDef.LOCK_WRITE );
 
// writeロックを設定してプロパティを参照する…(b)
objWithWriteLock.readProperties( propdef );

(a)では,文書空間オブジェクトにreadロックが設定されます。(b)では,文書空間オブジェクトにwriteロックが設定されます。

この操作で作成されるProxyオブジェクトと,そのインターフェースを使用した操作について,次の図に示します。

図6-11 異なるロック種別でアクセスする例

[図データ]

このように,図6-11のobjとobjWithWriteLockは,同じ文書空間オブジェクトを対象とする,異なるProxyオブジェクトのインターフェースです。したがって,「obj.lock」を実行したあとでも,objを使用した場合に設定されるロックの種別は変わりません(この例の場合はreadロックのままです)。

DbjObjインターフェースで参照系メソッドを実行する場合に,そのインターフェースで設定するロック種別を確認するときは,DbjObj#getLockTypeメソッドを実行します。取得するロック種別の値は,Proxyオブジェクトのアクセスロック種別プロパティに設定されている値です。

(2) 操作対象になるバージョンの取得と変更

バージョン付きオブジェクトを操作する場合,デフォルトの状態では,カレントバージョンのバージョンオブジェクトが操作の対象になります。これを,指定したバージョンのバージョンオブジェクトを操作するように変更できます。例えば,バージョン3まであるバージョン付き文書の,バージョン2のオブジェクトのコンテンツを参照したい場合などに,対象バージョンを変更します。

対象バージョンの変更は,DbjObj#setTargetVersionメソッドで実行します。このメソッドは,そのインターフェースでのすべての操作の対象を指定したバージョンに変更します。

操作対象のバージョンを変更する例を示します。

// 操作対象のバージョンを変更する例
 
 // docspc:DbjDocSpaceインターフェース
 
// DbjObjインターフェースを取得する
DbjObj obj = docspc.createObjConnection( oiid );
 
// デフォルトのバージョン(カレントバージョン)のプロパティを参照する
obj.readProperties( propdef );
 
// 操作対象のバージョンを,指定バージョン(versionId)に変更する
obj.setTargetVersion( versionId );
 
// versionIdで指定されたバージョンのプロパティを参照する
obj.readProperties( propdef );
 
// 操作対象をカレントバージョンに戻す
obj.setTargetVersion( null );

DbjObjインターフェースでバージョン付きオブジェクトを操作する場合に,そのインターフェースの操作対象になるバージョンを確認するときには,DbjObj#getTargetVersionメソッドを実行します。このメソッドで取得できるバージョン識別子の値は,Proxyオブジェクトのターゲットバージョン識別子プロパティの値です。