CdbrDocument::CreateObjectメソッド
機能
オブジェクトの新規作成
形式
// シングルファイル文書の場合
DmaBoolean CreateObject (
CdbrSession* pDbrSession,
DmaInteger32 lDMAInfoListCount,
SDBR_DMAINFO* pDMAInfoList,
pDmaString_T pFilePath,
pDmaString_T pRenditionType
ppDmaString_T ppOIID,
DmaInteger32 lCreateIndexFlg = DBR_CREATE_INDEX)
// マルチファイル文書の場合
DmaBoolean CreateObject(
CdbrSession* pDbrSession,
DmaInteger32 lDMAInfoListCount,
SDBR_DMAINFO* pDMAInfoList,
SDBR_PATHLIST& PathList,
pDmaString_T pRenditionType,
ppDmaString_T ppOIID)
// リファレンスファイル文書の場合
DmaBoolean CreateObject(
CdbrSession* pDbrSession,
DmaInteger32 lDMAInfoListCount,
SDBR_DMAINFO* pDMAInfoList,
SDBR_REFERENCE_PATHINFO& ReferencePath,
pDmaString_T pRenditionType,
ppDmaString_T ppOIID)
// File Link文書の場合
DmaBoolean CreateObject(
CdbrSession* pDbrSession,
DmaInteger32 lDMAInfoListCount,
SDBR_DMAINFO* pDMAInfoList,
SDBR_FILELINK_PATHINFO& FileLinkPath,
pDmaString_T pRenditionType,
ppDmaString_T ppOIID)
// プロパティ構造体
struct SDBR_PROP {
DmaId PropId; // プロパティ識別子
DmaInteger32 lType; // データ型
DmaInteger32 lCardinality; // 基本単位
DmaInteger32 lCount; // 要素数
union { // プロパティの値
pDmaBoolean pbBoolean; // Boolean型
pDmaInteger32 plInteger32; // Integer32型
pDmaId pId; // ID型
pDmapv ppObject; // Object型
ppDmaString_T ppString; // String型
} uniValue;
};
// プロパティリスト構造体
struct SDBR_PROPLIST {
DmaInteger32 lCount;
SDBR_PROP* pItem;
};
// DMAオブジェクト生成用の構造体
struct SDBR_DMAINFO {
DmaId ClassId;
SDBR_PROPLIST PropList;
};
// ファイルパス情報構造体
struct SDBR_PATHINFO {
pDmaString_T pFilePath; // ファイルのURL
pDmaString_T pComponentType; // ファイルを識別する文字列
};
// ファイルパス情報リスト構造体
struct SDBR_PATHLIST {
DmaInteger32 lCount; // 登録ファイル数
SDBR_PATHINFO* pItem; // ファイルパス情報構造体のポインタ
};
// リファレンスパス情報構造体
struct SDBR_REFERENCE_PATHINFO {
DmaInteger32 lContentOperateMode; // 操作モード
pDmaString_T pEntry; // ファイルのパスおよびロケーション
pDmaString_T pTargetPath; // コンテント格納先パス
pDmaString_T pDeleteRootPath; // 削除ディレクトリのルートパス
};
// File Linkパス情報構造体
struct SDBR_FILELINK_PATHINFO {
pDmaString_T pFilePath; // 登録ファイルまたはディレクトリのURL
pDmaString_T pFamName; // FAM名
pDmaString_T pFamFilePath; // コンテント保管先パス
DmaInteger32 lContentDeleteMode; // コンテント削除モード
DmaInteger32 lFileNamingMode; // コンテント名自動生成モード
};
詳細
オブジェクトを新規に作成するメソッドです。
SetOIIDメソッドもしくはConnectObjectメソッドによってオブジェクトとすでに接続されている場合,またはこのメソッドがすでにコールされている場合は,既存の接続は変更されずに,このメソッドのコールがエラーになります。接続を終了するには,ReleaseObjectメソッドを実行してください。
Windowsの場合,次のことに注意してください。
// 変数宣言
CdbrDocument DbrDoc;
SDBR_DMAINFO DMAInfoList[1];
pDmaString pOIID;
// DMAクラス情報の作成
DMAInfoList[0].ClassId = ClassID_DocVer;
DMAInfoList[0].PropList.pItem = NULL;
DMAInfoList[0].PropList.lCount = 0;
// オブジェクトの新規作成
DbrDoc.CreateObject(pDbrSession,
1, DMAInfoList,
"file:///tmp/sample.txt", "MIME::text/plain", &pOIID,
DBR_CREATE_INDEX);
引数
pDbrSession(入力)
CdbrSessionオブジェクトを指定します。
lDMAInfoListCount(入力)
pDMAInfoListで指定した配列の個数を指定します。負の値を指定した場合は,エラーになります。
pDMAInfoList(入力)
オブジェクトの構成要素として新規に作成するDMAオブジェクトの情報を格納した構造体である,SDBR_DMAINFO構造体の配列を指定します。DMAオブジェクトの情報としてSDBR_DMAINFO構造体には,dmaClass_DocVersionクラスまたはそのサブクラスの情報を指定してください。
lDMAInfoListCountが正の整数のときにpDMAInfoListにNULLを指定すると,エラーになります。
SDBR_DMAINFO構造体については,「付録C.1(3) SDBR_DMAINFO構造体(DMAオブジェクト生成用の構造体)」を参照してください。
プロパティ情報を指定するSDBR_PROPLIST構造体およびSDBR_PROP構造体については,「付録C.1(14) SDBR_PROPLIST構造体(プロパティリスト構造体)」および「付録C.1(12) SDBR_PROP構造体(プロパティ構造体)」を参照してください。
なお,VariableArray型プロパティを設定するとき,次の場合はエラーになります。このとき,major_codeとしてERR_DMA,minor_codeとしてDMARC_BAD_VALUEが返却されます。
それぞれのデータ型に対応する値の範囲については,マニュアル「DocumentBroker Version 3 システム導入・運用ガイド」を参照してください。
pFilePath(入力)
登録するファイルのパス名を指定します。パス名はURL形式で設定します。例えば,UNIXの場合,ファイル"/tmp/sample.doc"を登録するには,"file:///tmp/sample.doc"と指定します。Windowsの場合,ファイル"c:¥temp¥sample.doc"を登録するには,"file:///c:¥temp¥sample.doc"と指定します。有効なプロトコルは"file:"だけです。それ以外のプロトコルを指定した場合はエラーになります。NULLを指定した場合,ファイルは登録されません。
pRenditionType(入力)
RenditionTypeを表す文字列を指定します。例えばHTML文書の場合は,"MIME::text/html"などとします。
NULLを指定した場合,ファイルの拡張子からRenditionTypeを決定する処理はされません。したがって,RenditionTypeには何も設定されません。
ppOIID(出力)
作成したCdbrDocumentオブジェクトの構成要素である,DMAオブジェクトのDocVersionオブジェクトのOIIDへのポインタが設定されます。ポインタを格納する領域を指定してください。なお,*ppOIIDがポイントするメモリは,ユーザプログラムでは解放しないでください。
lCreateIndexFlg(入力)
全文検索インデクスを作成するかどうかを指定します。
次のどちらかを指定してください。省略した場合は,DBR_CREATE_INDEXを指定したものとして処理されます。
なお,SDBR_DMAINFO構造体のClassIdに全文検索機能付きクラス以外のクラスを指定した場合またはファイルのRenditionTypeがテキスト型でない場合は,lCreateIndexFlgの値は無視されます。
PathList(入力)
登録するファイルのファイルパス情報が設定されたSDBR_PATHLIST構造体を指定します。SDBR_PATHLIST構造体については,「付録C.1(11) SDBR_PATHLIST構造体(ファイルパス情報リスト構造体)」を参照してください。
ReferencePath(入力)
リファレンスファイル文書を登録するために必要な情報を格納した,SDBR_REFERENCE_PATHINFO構造体を指定します。リファレンスファイル文書を登録するには,SDBR_REFERENCE_PATHINFO構造体のメンバlContentOperateModeにDBR_OPERATEMODE_USER_RELATIVE_CONTENTを指定し,pEntryに登録するファイルのパス名をURL形式で指定します。また,SDBR_REFERENCE_PATHINFO構造体のメンバpTargetPathに,コンテント格納先パスを,CdbrSession::SetReferencePathメソッドで設定したコンテント格納先ベースパスを基点とする相対パスで指定します。DocumentBrokerサーバがWindowsの場合UNC形式のパスで指定することもできます。
なお,lContentOperateModeにDBR_OPERATEMODE_NONEを指定した場合,コンテントがないオブジェクトが作成されます。
このメソッドを実行する場合,次に示すことに注意してください。
また,pTargetPathで指定するコンテント格納先パスの中に,カレントディレクトリの一つ上位のディレクトリを示す".."は指定できません。指定した場合,DMARC_BAD_PARAMETERのエラーになります。
リファレンスファイル文書を登録する場合,SDBR_REFERENCE_PATHINFO構造体のメンバpDeleteRootPathへの値の指定は,無効になります。
SDBR_REFERENCE_PATHINFO構造体に設定する内容については,「付録C.1(15) SDBR_REFERENCE_PATHINFO構造体(リファレンスパス情報構造体)」を参照してください。
FileLinkPath(入力)
File Link文書を登録するために必要な情報を格納した,SDBR_FILELINK_PATHINFO構造体を指定します。
なお,SDBR_FILELINK_PATHINFO構造体のメンバpFilePathとメンバpFamFilePathの両方にNULLを設定した場合には,登録コンテントがないオブジェクトが作成されます。
SDBR_FILELINK_PATHINFO構造体に設定する内容については,「付録C.1(5) SDBR_FILELINK_PATHINFO構造体(File Linkパス情報構造体)」を参照してください。
戻り値
DMA_TRUE 正常終了
DMA_FALSE 異常終了
戻り値の詳細
major_code | minor_code | 説明 | 対処 |
---|---|---|---|
ERR_CORBA | CORBAの戻り値が設定されます。 | CORBAでエラーが発生しました。 | ユーザプログラムでは対処できません。エラー情報として文字列の値を取得して,ユーザプログラムを終了してください。 |
ERR_DB | ERR_DB_DEADLOCK_OCCURRED | データベースでデッドロックが発生しました。 | 時間を置いて,再度実行してください。 |
ERR_DB | ERR_DB_FAILED | データベースで障害が発生しました。 または,マルチファイル文書で指定したファイルのサイズの合計が,BLOBの定義長を超えました。 | syslogを参照して,障害の原因を取り除いてください。 |
ERR_DB | ERR_DB_LOCKED | オブジェクトがロックされています。 | 時間を置いて,再度実行してください。 |
ERR_DBR | ERR_ACCESS_NOT_PERMITTED | アクセス権がありません。 | この操作は実行できません。 |
ERR_DBR | ERR_BAD_CONTENTSCOUNT | 登録しようとするファイルの数が多過ぎます。 | 登録するファイルの数を見直してください。 |
ERR_DBR | ERR_BAD_PERMISSION | 不正なパーミッションが指定されました。 | 正しいパーミッションを指定してください。 |
ERR_DBR | ERR_BAD_SUBJECT_TYPE | 不正なサブジェクト種別が指定されました。 | 正しいサブジェクト種別を指定してください。 |
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_ACE | 不正なアクセス制御エレメント(ACE)が指定されました。 | ACEとして正しいCdbrCompoundオブジェクトを指定してください。 |
ERR_DBR | ERR_INVALID_ACE_COUNT | 設定するアクセス制御エレメント(ACE)の個数が制限値を超えています。 | ACEは64個以内で指定してください。 |
ERR_DBR | ERR_INVALID_PUBLICACL_COUNT | バインドするパブリックACLの個数が制限値を超えています。 | パブリックACLは10個以内で指定してください。 |
ERR_DBR | ERR_INVALID_STATUS | セッションの状態が不正です。一つのセッションに同時に複数のメソッド処理要求が出されています。 | 一つのセッションに対しては,一度に一つの処理要求しか出さないように見直してください。 |
ERR_DBR | ERR_INVALID_SUBJECT_LENGTH | サブジェクトの長さが不正です。 | 次に示す範囲内でサブジェクトを指定してください。
|
ERR_DBR | ERR_NONEXISTS_PUBLICACL | 指定されたパブリックACLは存在しません。 | 存在しないパブリックACLを指定しないで処理を再実行してください。 |
ERR_DBR | ERR_OBJECT_ALREADY_CONNECTED | オブジェクトはすでに接続されています。 | この操作は実行できません。 |
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_CLASSID | 指定された識別子は,利用できるオブジェクトのクラスではありません。 | 正しいクラス識別子を指定してください。 |
ERR_DMA | DMARC_BAD_PARAMETER | 不正な引数が入力されました。 | 正しい引数を指定してください。 |
ERR_DMA | DMARC_BAD_PROPID | プロパティの識別子が不正です。 | 正しいプロパティ識別子を指定してください。 |
ERR_DMA | DMARC_BAD_URL | リソースのURLが不正です。 | URLの内容を見直してください。 |
ERR_DMA | DMARC_BAD_VALUE | 次のどれかの要因が考えられます。
| 次のどれかの方法で対処してください。
|
ERR_DMA | DMARC_DATATYPE_MISMATCH | プロパティのデータ型に適切ではないメソッドです。 | 正しい型を指定してください。 |
ERR_DMA | DMARC_NO_MEMORY | メモリ不足で実行できません。 | メモリを増設してください。またはメモリを大量に消費しているアプリケーションを停止させて,処理を再実行してください。 |
ERR_DMA | DMARC_NOT_SUPPORTED | このセッションまたはオブジェクトではサポートされていないメソッドです。 | この操作は実行できません。 |
ERR_DMA | DMARC_READ_ONLY | 読み取り専用のオブジェクトまたはプロパティのため,異常終了しました。 | このプロパティの値は更新できません。 |
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 | 使用できるファイル転送サービスがありません。 |
|