6.8.9 文書のコンテンツの操作

ここでは,文書のコンテンツの操作について説明します。

なお,バージョン付き文書のコンテンツを操作する場合,デフォルトの設定では,カレントバージョンのコンテンツが対象になります。操作対象のバージョンを変更する場合は,DbjObj#setTargetVersionメソッドを実行して,ターゲットバージョンを変更してください。

文書のコンテンツ管理の考え方については,「3.2 レンディション管理モデル」を参照してください。

<この項の構成>
(1) コンテンツのダウンロード
(2) コンテンツのアップロード

(1) コンテンツのダウンロード

ここでは,文書のコンテンツをローカルパスのファイルにダウンロードして,参照する操作について説明します。

文書のコンテンツは,DbjObj#downloadContentsメソッドでダウンロードします。DbjObj#downloadContentsメソッドの引数に指定するファイルパスには,ローカルパスを指定します。

手順を示します。

  1. DbjObjインターフェースを取得します。
    コンテンツをダウンロードする文書空間オブジェクトのoiidを指定して,DbjDocSpace#createObjConnectionメソッドを実行します。
  2. コンテンツをダウンロードします。
    DbjObj#downloadContentsメソッドを実行します。メソッド実行時には,次の情報を指定します。
    • コンテンツをダウンロードするレンディションのレンディションタイプ
    • ダウンロード先のファイル

マルチレンディション文書の場合,レンディションタイプを指定して,ダウンロードするコンテンツを特定します。レンディションタイプにnullを指定した場合は,マスタレンディションのコンテンツがダウンロードできます。ダウンロードしたコンテンツは,ダウンロード先ファイルとして指定したパスに,指定したファイル名でコピーされます。指定するファイル名は任意です。文書空間オブジェクトのdbrProp_RetrievalNameプロパティの値と同じにする必要はありません。

コンテンツをダウンロードする例を示します。この例では,マスタレンディションのコンテンツを「test.doc」にダウンロードします。また,サブレンディションのコンテンツを,「test.pdf」にダウンロードします。

// コンテンツをダウンロードする例
 
 // factory:DbjFactoryインターフェース
 // obj:DbjObjインターフェース

// ダウンロードするパスを指定する(ファイル名を含む)
File dwlFile1 = new File( parentdir, "test.doc" );
File dwlFile2 = new File( parentdir, "test.pdf" );

// マスタレンディションのコンテンツを
// dwlFilePathで指定したパスにダウンロードする
DbjContentInfo  continfo1 = obj.downloadContents(
                           null,
                           dwlFile1.getCanonicalPath() );

// サブレンディションのコンテンツを
// レンディションタイプを指定して,
// dwlFilePath2で指定したパスにダウンロードする
DbjContentInfo  continfo2 = obj.downloadContents(
                           "application/pdf",
                           dwlFile2.getCanonicalPath() );

(2) コンテンツのアップロード

ローカルパス上のファイルの内容をアップロードして,文書のコンテンツを更新する操作について説明します。

文書のコンテンツは,DbjObj#uploadContentsメソッドでアップロードします。DbjObj#uploadContentsメソッドの引数に指定するファイルパスには,ローカルパスを指定します。

手順を示します。

  1. 文書のアップロード情報を作成します。
    文書のアップロード情報は,DbjUploadInfoインターフェースまたはDbjXmlUploadInfoインターフェースで表します。
    DbjUploadInfoインターフェースを使用する場合,次の情報を指定します。
    • アップロードするファイルのファイルパス
    • アップロードするファイルのファイル名
    • 文書に設定するレンディションタイプ
    • レンディションのプロパティ
    • 全文検索インデクス作成用のファイルパス
      全文検索インデクス作成用の指定は,マスタレンディションのコンテンツを更新する場合にだけ有効です。
    DbjXmlUploadInfoインターフェースを使用する場合の指定については,「6.10.2(2) XML文書の更新」を参照してください。
  2. コンテンツをアップロードします。
    DbjObj#uploadContentsメソッドを実行します。メソッド実行時には,次の情報を指定します。
    • アップロードの対象にするレンディションタイプ
    • 文書のアップロード情報

コンテンツをアップロードする時に,同時に全文検索インデクスを登録することもできます。全文検索インデクスは,次のどちらかの方法で作成できます。

全文検索インデクスの作成方法については,「4.5.3 全文検索インデクスの作成」を参照してください。また,DbjXmlUploadInfoインターフェースを使用してXML形式のファイルをコンテンツとしてアップロードする場合には,アップロードと同時に構造指定検索用全文検索インデクスを作成・登録できます。「6.10.2(2) XML文書の更新」を参照してください。

なお,マルチレンディション文書の場合,全文検索インデクスは,レンディションタイプにnullを指定し,マスタレンディションに対してコンテンツをアップロードする場合にだけ作成されます。DbjXmlUploadInfoインターフェースを使用したXMLインデクスデータ作成機能も,マスタレンディションに対してコンテンツをアップロードする場合だけ有効です。サブレンディションのコンテンツをアップロードする場合には,全文検索インデクス作成の指定は無視されます。また,サブレンディションのコンテンツをアップロードする場合にDbjXmlUploadInfoインターフェースを指定したときは,DbjUploadInfoインターフェースとして扱われます。マルチレンディション文書のコンテンツのアップロードについては,「6.8.11 マルチレンディション文書のレンディションの操作」を参照してください。

文書のアップロード情報に指定するレンディションタイプと,DbjObj#uploadContentsメソッドの引数に指定するレンディションタイプが異なる場合は,コンテンツをアップロードしたレンディションのレンディションタイプが,文書のアップロード情報に指定したレンディションタイプに変更されます。なお,マルチレンディション文書の場合に,マスタレンディションにコンテンツが登録されていないとき,またはDbjObj#uploadContentsメソッドの引数のレンディションタイプにnullを指定したときは,マスタレンディションのコンテンツが更新されます。

コンテンツをアップロードする例を示します。この例では,マスタレンディションに対して,「tmp.html」というファイルを登録します。文書空間オブジェクトのdbrProp_RetrievalNameプロパティは,「test.html」と設定します。また,登録するコンテンツから全文検索インデクスを作成します。

// コンテンツをアップロードする例
 
 // factory:DbjFactoryインターフェース
 // obj:DbjObjインターフェース
 
// アップロードするコンテンツのファイルパスを指定する
File uplFile = new File( parentdir, "tmp.html" );

// 文書のアップロード情報を作成する
// (レンディションタイプは拡張子から自動設定するようにする)
DbjUploadInfo upinfo = factory.createUploadInfo(
               uplFile.getCanonicalPath(),
               "test.html",   // retrievalNameプロパティを指定
               null,          // レンディションタイプを指定
                              // (ここでは拡張子(.html)から決定する)
               null,
               DbjDef.INDEXPATH_SAME );
                              // 全文検索インデクス作成
 
// マスタレンディションにコンテンツをアップロードする
obj.uploadContents(
               null,          // マスタレンディションが対象
               upinfo );      // 文書のアップロード情報を指定