CdbrDocument::ConvertContentTypeメソッド

機能

コンテント種別の変換

形式

// リファレンスファイル文書に変換する場合
DmaBoolean ConvertContentType(
 DmaInteger32                         lExecuteMode,
 DmaInteger32                         lSourceScope,
 DmaBoolean                           bIsChangeMaster,
 pDmaString_T                         pRenditionType,
 DmaInteger32                         lSourceContentType,
 SDBR_RENDITION_COMMENTINFO&          CommentInfo,
 SDBR_REFERENCE_PATHINFO&             ReferencePath )

// シングルファイル文書に変換する場合
DmaBoolean ConvertContentType(
 DmaInteger32                         lExecuteMode,
 DmaInteger32                         lSourceScope,
 DmaBoolean                           bIsChangeMaster,
 pDmaString_T                         pRenditionType,
 DmaInteger32                         lSourceContentType,
 SDBR_RENDITION_COMMENTINFO&          CommentInfo )

// レンディションコメント情報構造体
struct SDBR_RENDITION_COMMENTINFO {
 DmaBoolean      bIsInvestSourceComment; // コメントの付与フラグ
 DmaInteger32    lInvestMode;            // コメントの付与方式
 pDmaString_T    pRenditionComment;      // レンディションコメント
};

// リファレンスパス情報構造体
struct SDBR_REFERENCE_PATHINFO {
 DmaInteger32    lContentOperateMode;  // 操作モード
 pDmaString_T    pEntry;               // ファイルのパスおよびロケーション
 pDmaString_T    pTargetPath;          // コンテント格納先パス
 pDmaString_T    pDeleteRootPath;      // 削除ディレクトリのルートパス
};

詳細

コンテントの格納先(コンテント種別)を変換するメソッドです。

このメソッドを使用することでコンテントの格納先を変換したレンディションが追加されます。

このメソッドを実行する前にコンテント格納先ベースパスをCdbrSession::SetReferencePathメソッドで設定しておく必要があります。設定されていない場合は,ERR_TARGETCONTENTPATH_NOT_SETのエラーになります。

lSourceScope,pRenditionType,およびlSourceContentTypeで指定した変換対象のコンテントが存在しない場合は,ERR_CONVERT_CONTENT_TARGET_NOTFOUNDのエラーになります。

このメソッドで変換可能なコンテント種別の組み合わせを次に示します。

表8-7 ConvertContentTypeメソッドで変換できるコンテント種別

変換前のコンテント種別
(lSourceContentTypeで指定する値)
変換後のコンテント種別
(メソッドの形式)
シングルファイル文書
(DBR_CONTENTTYPE_CONTENT)
リファレンスファイル文書
(リファレンスファイル文書に変換する場合の形式)
リファレンスファイル文書
(DBR_CONTENTTYPE_REFERENCE)
シングルファイル文書
(シングルファイル文書に変換する場合の形式)
シングルファイル文書からリファレンスファイル文書に変換する場合
コンテントが登録されていないシングルファイル文書をリファレンスファイル文書に変換すると,リファレンスファイル文書のedmProp_ReferenceTypeには,DBR_REFERENCETYPE_NONEが設定され,コンテントは登録されません。
また,このメソッドを実行する場合,次に示すことに注意してください。
●DocumentSpace構成定義のReferenceStorageModeエントリにOriginを指定した場合
次に示す文字列の合計長(パスの区切り文字も含む)が,260バイト(Windowsの場合)または1023バイト(AIXの場合)以上のときにこのメソッドを実行すると,ERR_FILE_REFERENCE_OPERATION_FAILEDのエラーになります。
  • CdbrSession::SetReferencePathメソッドで指定したコンテント格納先ベースパス
  • 引数ReferencePathのSDBR_REFERENCE_PATHINFO構造体のメンバpTargetPathで指定したコンテント格納先パス
  • DocumentBrokerがコンテントを管理するためのディレクトリ(35バイト)
  • 引数ReferencePathのSDBR_REFERENCE_PATHINFO構造体のメンバpEntryで指定したファイル名
●DocumentSpace構成定義のReferenceStorageModeエントリにDivideを指定した場合
次に示す文字列の合計長(パスの区切り文字も含む)が,260バイト(Windowsの場合)または1023バイト(AIXの場合)以上のときにこのメソッドを実行すると,ERR_FILE_REFERENCE_OPERATION_FAILEDのエラーになります。
  • CdbrSession::SetReferencePathメソッドで指定したコンテント格納先ベースパス
  • 引数ReferencePathのSDBR_REFERENCE_PATHINFO構造体のメンバpTargetPathで指定したコンテント格納先パス
  • DocumentBrokerがコンテントを管理するためのディレクトリ(6バイト)
  • DocumentBrokerが指定するファイル名(最大59バイト)
リファレンスファイル文書からシングルファイル文書に変換する場合
リファレンスファイル文書のContentLocationプロパティとCdbrSession::SetReferencePathメソッドで指定したコンテント格納先ベースパスを合わせた文字列長(パスの区切り文字も含む)が,Windowsの場合260バイト以上,AIXの場合1023バイト以上であるとERR_FILE_REFERENCE_OPERATION_FAILEDのエラーになります。

引数

lExecuteMode(入力)

変換モードを指定します。

この引数にはDBR_CONVERT_MODE_VERVOSEを指定します。

lSourceScope(入力)

変換対象とするレンディションの範囲を指定します。

bIsChangeMaster(入力)

マスタレンディションのコンテントを変換する場合に,変換して追加されるレンディションをマスタレンディションにするかしないかを指定します。

pRenditionType(入力)

lSourceScopeにDBR _CONVERT_SOURCE_SEPARATEを指定した場合は,変換の対象とするレンディションのレンディションタイプを表す文字列を指定します。指定したレンディションのコンテントが変換されます。

この引数で指定したレンディションタイプが,対象文書のレンディションとして存在しない場合はエラーになります。

マスタレンディションの場合はNULLを使用することもできます。空文字列("")は指定できません。

ただし,lSourceScopeにDBR_CONVERT_SOURCE_ALLが指定されている場合は,pRenditionTypeへの値の指定は無効となります。

lSourceContentType(入力)

変換対象とするコンテント種別を指定します。

CommentInfo(入力)

サブレンディションに付与するコメントの情報をSDBR_RENDITION_COMMENTINFO構造体で指定します。

SDBR_RENDITION_COMMENTINFO構造体については,「付録C.1(18)  SDBR_RENDITION_COMMENTINFO構造体(レンディションコメント情報構造体)」を参照してください。

ReferencePath(入力)

リファレンスファイル文書に変換するために必要な情報を格納した,SDBR_REFERENCE_PATHINFO構造体を指定します。リファレンスファイル文書に変換するには,SDBR_REFERENCE_PATHINFO構造体のメンバlContentOperateModeにDBR_OPERATEMODE_USER_RELATIVE_CONTENTを指定します。

また,SDBR_REFERENCE_PATHINFO構造体のpTargetPathに,コンテント格納先パスを,CdbrSession::SetReferencePathメソッドで設定したコンテント格納先ベースパスを基点とした相対パスで指定します。

pTargetPathで指定するコンテント格納先パスの中に,カレントディレクトリの一つ上位のディレクトリを示す".."は指定できません。指定した場合,DMARC_BAD_PARAMETERのエラーになります。

リファレンスファイル文書に変換する場合,SDBR_REFERENCE_PATHINFO構造体のメンバpEntry,およびpDeleteRootPathへの値の指定は,無効になります。

SDBR_REFERENCE_PATHINFO構造体については,「付録C.1(15) SDBR_REFERENCE_PATHINFO構造体(リファレンスパス情報構造体)」を参照してください。

戻り値

DMA_TRUE  正常終了

DMA_FALSE 異常終了

戻り値の詳細

major_codeminor_code説明対処
ERR_CORBACORBAの戻り値が設定されます。CORBAでエラーが発生しました。ユーザプログラムでは対処できません。エラー情報として文字列の値を取得して,ユーザプログラムを終了してください。
ERR_DBERR_DB_DEADLOCK_OCCURREDデータベースでデッドロックが発生しました。時間を置いて,再度実行してください。
ERR_DBERR_DB_FAILEDデータベースで障害が発生しました。syslogを参照して,障害の原因を取り除いてください。
ERR_DBERR_DB_LOCKEDオブジェクトがロックされています。時間を置いて,再度実行してください。
ERR_DBRERR_ACCESS_NOT_PERMITTEDアクセス権がありません。この操作は実行できません。
ERR_DBRERR_INVALID_STATUSセッションの状態が不正です。一つのセッションに同時に複数のメソッド処理要求が出されています。一つのセッションに対しては,一度に一つの処理要求しか出さないように見直してください。
ERR_DBRERR_LIMITNUM_OF_RENDITIONS保持できるレンディション数の上限に達しています。この操作は実行できません。
ERR_DBRERR_MASTERRENDTYPE_NOT_SETマスタレンディションタイプ値が設定されていません。マスタレンディションタイプ値を設定してください。
ERR_DBRERR_OBJECT_REMOVEDオブジェクトはすでに削除されています。正しいオブジェクトを指定してください。
ERR_DBRERR_OIID_NOT_SETOIIDが設定されていません。SetOIIDメソッドをコールしてから,このメソッドをコールしてください。
ERR_DBRERR_RENDITIONTYPE_DUPLICATEDレンディションタイプが重複しています。正しいレンディションタイプを設定してください。
ERR_DBRERR_SESSION_NOT_CONNECT次の要因が考えられます。
  • セッションが接続されていません。
  • EDMRefresherコマンドが実行中です。
要因に応じて,次のどちらかの対策を実施してください。
  • セッションを接続してください。
  • EDMRefresherコマンドが終了したあと,再度実行してください。
ERR_DMADMARC_ACCESS_DENIED要求された操作に対してアクセス権がありません。正しいアクセス権を設定してください。
ERR_DMADMARC_BAD_OIIDSetOIIDメソッドで設定されたOIIDが不正です。正しいOIIDを指定してください。
ERR_DMADMARC_BAD_PARAMETER不正な引数が入力されました。正しい引数を指定してください。
ERR_DMADMARC_NO_MEMORYメモリ不足で実行できません。メモリを増設してください。またはメモリを大量に消費しているアプリケーションを停止させて,処理を再実行してください。
ERR_DMADMARC_NOT_FOUND要求された要素が見つかりません。正しいオブジェクトを設定してください。
ERR_DMADMARC_NOT_SUPPORTEDこのセッションまたはオブジェクトではサポートされていないメソッドです。この操作は実行できません。
ERR_DMADMARC_UNEXPECTED予期しないエラーが発生しました。処理を終了してください。
ERR_DMAEDMRC_NOT_INTRANSACTIONトランザクション外でメソッドが呼ばれました。Beginメソッドの呼び出し後に,この操作を実行してください。
ERR_DBRERR_FILE_REFERENCE_OPERATION_FAILEDリファレンスファイル管理機能で扱うサーバマシンでのコンテントの操作でエラーが発生しました。詳細メッセージを基に対処してください。
ERR_DBRERR_TARGETCONTENTPATH_NOT_SETリファレンスファイル管理機能でコンテント格納先ベースパスが設定されていません。または,UNC形式のパスの場合(Windowsだけ),コンテント格納先ベースパスにコンピュータ名またはIPアドレスだけが使用されています。コンテント格納先ベースパスを設定してください。
ERR_DBRERR_CONVERT_CONTENT_TARGET_NOTFOUND変換対象のコンテントは存在しません。オブジェクトのコンテント種別または指定した変換対象とするコンテント種別(ISourseContentType)を見直してください。
ERR_DBRERR_CONVERT_CONTENT_NOT_RETRIEVALNAME変換対象コンテントのdmaProp_RetrievalNameプロパティの値が設定されていない(値がNULLまたは,空文字列(""))のため,変換処理を実行できません。dmaProp_RetrievalNameプロパティの値を設定してメソッドを実行してください。