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の場合,次のことに注意してください。
pDbrVerDoc->GetContentAndLock("file:///tmp/sample.doc",DMA_LOCK_READ);
引数
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 | 使用できるファイル転送サービスがありません。 |
|