uCosminexus DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編

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

CdbrVersionableDocument::GetContentAndLockメソッド

機能

ファイルの取得と同時に指定したロックの設定

形式

// シングルファイル文書の場合
// (マスタレンディションのファイルの取得)
DmaBoolean GetContentAndLock(
  const pDmaString_T      pFilePath,
  const pDmaString_T      pVersionId = NULL,
  DmaInteger32            lLockType = DMA_LOCK_WRITE)
 
// シングルファイル文書の場合
// (RenditionTypeを指定したファイルの取得)
DmaBoolean GetContentAndLock(
  const pDmaString_T      pFilePath,
  const pDmaString_T      pVersionId,
  pDmaString_T            pRenditionType,
  DmaInteger32            lLockType = DMA_LOCK_WRITE)
 
// マルチファイル文書の場合
DmaBoolean GetContentAndLock(
  pDmaString_T       pDirPath,
  SDBR_CONTENTLIST&  ContentList,
  pDmaString_T       pVersionId,
  pDmaString_T       pRenditionType,
  DmaInteger32       lLockType = DMA_LOCK_WRITE)
 
// リファレンスファイル文書の場合
DmaBoolean GetContentAndLock(
  SDBR_REFERENCE_PATHINFO&  ReferencePath,
  pDmaString_T              pVersionId,
  pDmaString_T              pRenditionType,
  pDmaInteger32             plReferenceType,
  ppDmaString_T             ppContentLocation,
  DmaInteger32              lLockType=DMA_LOCK_WRITE)
 
// File Link文書の場合
DmaBoolean GetContentAndLock(
  SDBR_FILELINK_PATHINFO&  FileLinkPath,
  const pDmaString_T       pVersionId,
  pDmaString_T             pRenditionType,
  DmaBinaryValue**         ppbvFileHandle,
  DmaInteger32             lLockType = DMA_LOCK_WRITE)
 
// コンテント情報構造体
struct SDBR_CONTENTINFO {
  pDmaString_T    pComponentType;   // ファイルを識別する文字列
  pDmaString_T    pRetrievalName;   // ファイル名
  DmaUInteger32   lContentSize;     // ファイルのサイズ
};
 
// コンテント情報リスト構造体
struct SDBR_CONTENTLIST {
  DmaInteger32       lCount;           // 取得ファイル数
  SDBR_CONTENTINFO*  pItem;            // コンテント情報構造体の
                                       // ポインタ
  DmaInteger32       lValidMode;       // 有効モード
  DmaBoolean         bIsMultiContents; // マルチファイル識別
};
 
// リファレンスパス情報構造体
struct SDBR_REFERENCE_PATHINFO {
  DmaInteger32  lContentOperateMode;    // 操作モード
  pDmaString_T  pEntry;                 // ファイルのパスおよびロケーション
  pDmaString_T  pTargetPath;           // コンテント格納先パス
  oDmaString_T  pDeleteRootPath;       // 削除ディレクトリのルートパス
};
 
// File Linkパス情報構造体
struct SDBR_FILELINK_PATHINFO {
  pDmaString_T  pFilePath;  // 取得先のファイルまたはディレクトリのURL
  pDmaString_T  pFamName;
  pDmaString_T  pFamFilePath;
  DmaInteger32  lContentDeleteMode;
  DmaInteger32  lFileNamingMode;
};

詳細

ロックタイプを明示的に指定して,文書空間に登録されているファイルを,指定したパスに複写するメソッドです。マルチレンディション文書の場合,pRenditionTypeを指定することで,対応するRenditionTypeを持つレンディションのファイルが取得できます。

Windowsの場合,次のことに注意してください。

シングルファイル文書の場合
取得したコンテントが引数pFilePathに指定したファイルに複写されます。マルチレンディションのサブレンディションのコンテントを取得する場合は,引数pRenditionTypeに対象にするレンディションを指定します。
UNIXの場合に,カレントバージョンとして登録されているファイルを/tmp/sample.docに複写して取得する例を次に示します。Windowsの場合は,c:\temp\sample.docに複写して取得する例として,例中の"file:///tmp/sample.doc"を"file:///c:\temp\sample.doc"と読み替えてください。なお,この例で取得できるのは,マスタレンディションのコンテントです。
ファイルを取得する例
pDbrVerDoc->GetContentAndLock("file:///tmp/sample.doc",DMA_LOCK_READ);
 

マルチファイル文書の場合
引数ContentListで指定した複数のファイルをコンテントとして取得します。取得したコンテントは,引数pDirPathで指定したディレクトリに出力されます。ファイル名は,SDBR_CONTENTINFO構造体に設定しているpRetrievalNameの値になります。
マルチファイル文書の場合,次のことに注意してください。
  • GetContentInfoメソッドで取得したSDBR_CONTENTLIST構造体を使用して,このメソッドを実行する場合,lValidModeは変更しないでください。
  • この形式のGetContentメソッドを,マルチファイル文書ではないバージョン付き文書に対して実行すると,ERR_NOT_MULTI_CONTENTSのエラーになります。

リファレンスファイル文書の場合
取得したコンテントが,引数ReferencePathのSDBR_REFERENCE_PATHINFO構造体のメンバpEntryに指定したファイルに出力されます。
リファレンスファイル文書の場合,次のことに注意してください。
  • このメソッドは,レンディションのコンテント種別がContentReferenceオブジェクトの場合(dbrProp_ContentTypeプロパティの値がDBR_CONTENTTYPE_REFERENCEの場合)にだけ有効となります。そのほかのコンテント種別を持つレンディションに対して実行すると,ERR_CONTENTTYPE_MISMATCHのエラーになります。

File Link文書の場合
取得したコンテントが,引数FileLinkPathのSDBR_FILELINK_PATHINFO構造体のメンバpFilePathに指定したファイルまたはディレクトリに出力されます。
コンテントとしてディレクトリが登録されている文書のレンディションに対してこのメソッドを実行すると,引数に指定したSDBR_FILELINK_PATHINFO構造体のメンバpFilePathに指定した名前のディレクトリが作成され,その下に登録されているディレクトリおよびサブディレクトリ下のすべてのファイルが取得されます。コンテントとしてディレクトリが登録されている文書のレンディションとは,AddRenditionメソッド,CreateObjectメソッド,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドの引数FileLinkPathに指定したSDBR_FILELINK_PATHINFO構造体のメンバpFilePathに,ディレクトリを指定して登録または更新した文書のレンディションのことです。
File Link文書の場合,次のことに注意してください。
  • このメソッドは,レンディションのコンテント種別がContentFileLinkオブジェクトの場合(dbrProp_ContentTypeプロパティの値がDBR_CONTENTTYPE_FILELINKの場合)にだけ有効となります。そのほかのコンテント種別を持つレンディションに対して実行すると,ERR_CONTENTTYPE_MISMATCHのエラーになります。
  • コンテントとして空のディレクトリが登録されているレンディションに対してこのメソッドを実行すると,ERR_CONTENT_NOT_REGISTEREDのエラーになります。コンテントとして空のディレクトリが登録されているレンディションとは,AddRenditionメソッド,CreateObjectメソッド,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドの引数FileLinkPathに指定したSDBR_FILELINK_PATHINFO構造体のメンバpFilePathに,空のディレクトリを指定して作成または更新した文書のレンディションのことです。
  • 引数に指定するSDBR_FILELINK_PATHINFO構造体のメンバpFilePathで指定したファイル名のファイル,またはディレクトリパスのディレクトリ下に取得しようとするファイルがすでに存在する場合,ERR_FILELINK_FAILEDのエラーになります。
  • このメソッドで,ERR_FILELINK_FAILEDのエラーが発生した場合は,詳細メッセージにHiRDB File Linkが出力するエラー情報が出力されます。HiRDB File Linkが出力するエラーを参照して,対処してください。

引数

pDirPath(入力)

出力されるファイルの格納先ディレクトリを,URL形式で指定します。

指定したパスのディレクトリが存在し,かつそのディレクトリへの実行権限,書き込み権限があれば,取得したファイルを格納します。それ以外の場合,エラーになります。

ContentList(入力)

取得するコンテントの情報を設定したSDBR_CONTENTLIST構造体を指定します。SDBR_CONTENTLIST構造体については,「付録C.1(2) SDBR_CONTENTLIST構造体(コンテント情報リスト構造体)」を参照してください。

pFilePath(入力)

取得したファイルを複写する複写先のパス名を指定します。

ファイルのパス名はURL形式で指定します。有効なプロトコルは"file:"だけです。例えば,UNIXの場合,ファイル"/tmp/sample.doc"に複写するには,"file:///tmp/sample.doc"と指定します。Windowsの場合,ファイル"c:\temp\sample.doc"に複写するには,"file:///c:\temp\sample.doc"と指定します。

指定したパスのファイルが存在する場合は上書きします。ファイル名は,RenditionTypeプロパティまたはRetrievalNameプロパティを参考にして,メソッドをコールする側が任意に決定してください。

指定したパスのファイルが存在しない場合,ディレクトリが存在し,かつファイルの作成が可能ならば新規にファイルを作成します。それ以外の場合はエラーになります。

pVersionId(入力)

対象となるバージョンのバージョン識別子を指定します。これはCdbrVersionable::GetVersionListメソッド,CdbrVersionable::GetVersionListAndLockメソッドまたはCdbrVersionable::VersionCheckOutメソッドで取得します。省略した場合またはNULLを指定した場合は,カレントバージョンのファイルを取得します。

pRenditionType(入力)

RenditionTypeを指定してファイルを取得する場合,取得するレンディションのRenditionTypeを表す文字列を指定します。

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

マスタレンディションの場合はNULLを指定するか,「マスタレンディションのファイルを取得する場合」の形式を使用することもできます。なお,空文字列("")は指定できません。

マルチファイル文書の場合,NULLまたは「シングルファイル文書の場合(マスタレンディションのファイルの取得)」の形式を指定してください。

lLockType(入力)

ロックの種別を指定します。次のどちらかの値を設定します。

ReferencePath(入力)

リファレンスファイル文書を取得するために必要な情報を格納した,SDBR_REFERENCE_PATHINFO構造体を指定します。ContentLocationプロパティとCdbrSession::SetReferencePathメソッドで指定したコンテント格納先ベースパスを合わせた文字列長(パスの区切り文字も含む)が,Windowsの場合260バイト以上,AIXの場合は1023バイト以上であるとERR_FILE_REFERENCE_OPERATION_FAILEDのエラーになります。

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

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

plReferenceType(出力)

コンテントのリファレンス種別(ReferenceType)を取得する場合,リファレンス種別を格納する領域のポインタを指定します。NULLを指定した場合,リファレンス種別は返却されません。

ppContentLocation(出力)

コンテントロケーション(ContentLocationプロパティ)を取得する場合,コンテントロケーションへのポインタを格納する領域を指定します。NULLを指定した場合,コンテントロケーションは返却されません。取得した領域は,dbrDelete関数で解放する必要があります。dbrDelete関数の詳細については,「20. 関数」の「dbrDelete関数」を参照してください。

FileLinkPath(出力)

SDBR_FILELINK_PATHINFO構造体のpFilePathメンバだけが有効となります。そのほかのメンバの設定値は無視されます。pFilePathに,コンテントの取得先となるクライアントのファイルパスまたはディレクトリパスを指定してください。

SDBR_FILELINK_PATHINFO構造体の指定内容については,「付録C.1(5) SDBR_FILELINK_PATHINFO構造体(File Linkパス情報構造体)」を参照してください。

ppbvFileHandle(出力)

ppbvFileHandleにファイルハンドル情報が返却されます。この引数にはNULLを指定してください。取得した領域は,dbrDelete関数で解放する必要があります。dbrDelete関数の詳細については,「20. 関数」の「dbrDelete関数」を参照してください。

戻り値

DMA_TRUE  正常終了

DMA_FALSE 異常終了

戻り値の詳細

major_code minor_code 説明 対処
ERR_CORBA CORBAの戻り値が設定されます。 CORBAでエラーが発生しました。 ユーザプログラムでは対処できません。エラー情報として文字列の値を取得して,ユーザプログラムを終了してください。
ERR_DB ERR_DB_DEADLOCK_OCCURRED データベースでデッドロックが発生しました。 時間を置いて,再度実行してください。
ERR_DB ERR_DB_FAILED データベースで障害が発生しました。 syslogを参照して,障害の原因を取り除いてください。
ERR_DB ERR_DB_LOCKED オブジェクトがロックされています。 時間を置いて,再度実行してください。
ERR_DBR ERR_ACCESS_NOT_PERMITTED アクセス権がありません。 この操作は実行できません。
ERR_DBR ERR_COMPONENTTYPE_DUPLICATED ComponentTypeが重複して指定されています。 ComponentTypeが重複しないように指定してください。
ERR_DBR ERR_CONTENT_NOT_REGISTERED コンテントが登録されていません。 コンテントを登録してください。
ERR_DBR ERR_CONTENTTYPE_MISMATCH 指定したレンディションタイプのコンテントに対して実行できません。 正しい文書オブジェクトを指定してメソッドを実行してください。
ERR_DBR ERR_FAL_NOT_LOADED HiRDB File Linkのライブラリがロードできません。 詳細メッセージを基に対処してください。
ERR_DBR ERR_FILELINK_FAILED HiRDB File Linkでエラーが発生しました。 詳細メッセージを基に対処してください。
ERR_DBR ERR_FILE_REFERENCE_OPERATION_FAILED リファレンスファイル管理機能で扱うサーバマシンでのコンテントの操作でエラーが発生しました。 詳細メッセージを基に対処してください。
ERR_DBR ERR_INVALID_STATUS セッションの状態が不正です。一つのセッションに同時に複数のメソッド処理要求が出されています。 一つのセッションに対しては,一度に一つの処理要求しか出さないように見直してください。
ERR_DBR ERR_NONEXISTS_RENDITION 指定されたレンディションは存在しません。 正しいRenditionTypeを指定してください。
ERR_DBR ERR_NOT_MULTI_CONTENTS マルチファイル文書ではありません。 マルチファイル管理機能を使用しない場合の形式で実行してください。
ERR_DBR ERR_NONEXISTS_VERSION 指定されたバージョンは存在しません。 正しいバージョンを指定してください。
ERR_DBR ERR_OBJECT_NOT_CONNECT オブジェクトは接続されていません。 オブジェクトを接続してください。
ERR_DBR ERR_OBJECT_REMOVED オブジェクトはすでに削除されています。 正しいオブジェクトを指定してください。
ERR_DBR ERR_OIID_NOT_SET OIIDが設定されていません。 SetOIIDメソッドをコールしてから,このメソッドをコールしてください。
ERR_DBR ERR_REFERENCETYPE_MISMATCH オブジェクト種別が一致していません。 オブジェクト種別または指定した操作モード(lContentOperateMode)を見直してください。
ERR_DBR ERR_RETRIEVALNAME_DUPLICATED RetrievalNameが重複して指定されています。 RetrievalNameが重複しないように指定してください。
ERR_DBR ERR_SESSION_NOT_CONNECT セッションが接続されていません。 セッションを接続してください。
ERR_DBR ERR_TARGETCONTENTPATH_NOT_SET リファレンスファイル管理機能でコンテント格納先ベースパスが設定されていません。または,UNC形式のパスの場合(Windowsだけ),コンテント格納先ベースパスにコンピュータ名またはIPアドレスだけが使用されています。 コンテント格納先ベースパスを設定してください。
ERR_DMA DMARC_ACCESS_DENIED 要求された操作に対してアクセス権がありません。 正しいアクセス権を設定してください。
ERR_DMA DMARC_BAD_LOCK_TYPE 不正な種類のロックが指定されています。 正しいロックタイプを指定してください。
ERR_DMA DMARC_BAD_OIID SetOIIDメソッドで設定されたOIIDが不正です。 正しいOIIDを指定してください。
ERR_DMA DMARC_BAD_PARAMETER 不正な引数が入力されました。 正しい引数を指定してください。
ERR_DMA DMARC_BAD_URL リソースのURLが不正です。 URLの内容を見直してください。
ERR_DMA DMARC_FAILED 操作が失敗しました。 時間を置いて再度実行するか,処理を見直してください。
ERR_DMA DMARC_NO_MEMORY メモリ不足で実行できません。 メモリを増設してください。またはメモリを大量に消費しているアプリケーションを停止させて,処理を再実行してください。
ERR_DMA DMARC_NO_RESERVATION バージョン識別子が予約されていません。 チェックイン後に割り当てられる正式なバージョン識別子を,入力引数に設定してください。
ERR_DMA DMARC_NOT_FOUND 要求された要素が見つかりません。 正しいオブジェクトを設定してください。
ERR_DMA DMARC_NOT_SUPPORTED このセッションまたはオブジェクトまたはクラスではサポートされていないメソッドです。 この操作は実行できません。
ERR_DMA DMARC_RESOURCE_NOT_FOUND 指示されたリソースが見つかりません。 正しいリソースを指定してください。
ERR_DMA DMARC_UNEXPECTED 予期しないエラーが発生しました。 処理を終了してください。
ERR_DMA DMARC_URL_PROTOCOL_NOT_SUPPORTED サポートしていないURLプロトコルです。 file:///で始まっているか確認してください。
ERR_DMA EDMRC_FTPSERVICE_LOST_CONNECTION ファイル転送サービスへのセッションが切断されました。 ネットワーク環境を確認してください。または,時間を置いて,再度実行してください。
ERR_DMA EDMRC_FTPSERVICE_MAX_SESSION ファイル転送サービスに同時に接続できるセッション数の上限に達しています。 時間を置いて,Connectユーザ数が減ったあと,再度実行してください。または,ファイル転送サービス環境定義ファイルのFtpSessionMaxエントリを見直してください。
ERR_DMA EDMRC_FTPSERVICE_NOT_AVAILABLE ファイル転送サービスが利用できません。 サーバのバージョンに対応したクライアントを利用してください。
ERR_DMA EDMRC_NO_FTPSERVICE 使用できるファイル転送サービスがありません。
  • ネットワーク環境を確認してください。
  • _HIEDMS_FTPMODE=STATICを指定してファイル転送サービスを起動しているかどうかを,確認してください。
  • 時間を置いて,再度実行してください。
  • ファイル転送サービスのセットアップコマンドを実行しているかどうかを,確認してください。