ここでは,文書のコンテンツの操作について説明します。
なお,バージョン付き文書のコンテンツを操作する場合,デフォルトの設定では,カレントバージョンのコンテンツが対象になります。操作対象のバージョンを変更する場合は,DbjObj#setTargetVersionメソッドを実行して,ターゲットバージョンを変更してください。
文書のコンテンツ管理の考え方については,「3.2 レンディション管理モデル」を参照してください。
ここでは,文書のコンテンツをローカルパスのファイルにダウンロードして,参照する操作について説明します。
文書のコンテンツは,DbjObj#downloadContentsメソッドでダウンロードします。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() );
ローカルパス上のファイルの内容をアップロードして,文書のコンテンツを更新する操作について説明します。
文書のコンテンツは,DbjObj#uploadContentsメソッドでアップロードします。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 ); // 文書のアップロード情報を指定