@itwin/imodel-transformer 2.0.0-dev.7 → 2.0.0-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +1 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.js +2 -2
- package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.js +13 -15
- package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
- package/lib/cjs/EntityUnifier.d.ts.map +1 -1
- package/lib/cjs/EntityUnifier.js +12 -4
- package/lib/cjs/EntityUnifier.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +1 -1
- package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelCloneContext.js +15 -11
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +36 -20
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelTransformer.d.ts +3 -20
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +44 -152
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/package.json +15 -15
|
@@ -289,11 +289,11 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
289
289
|
/** Return the IModelDb where IModelTransformer will store its provenance.
|
|
290
290
|
* @note This will be [[targetDb]] except when it is a reverse synchronization. In that case it be [[sourceDb]].
|
|
291
291
|
*/
|
|
292
|
-
|
|
292
|
+
getProvenanceDb(): Promise<IModelDb>;
|
|
293
293
|
/** Return the IModelDb where IModelTransformer looks for entities referred to by stored provenance.
|
|
294
294
|
* @note This will be [[sourceDb]] except when it is a reverse synchronization. In that case it be [[targetDb]].
|
|
295
295
|
*/
|
|
296
|
-
|
|
296
|
+
getProvenanceSourceDb(): Promise<IModelDb>;
|
|
297
297
|
/** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
|
|
298
298
|
static initElementProvenanceOptions(sourceElementId: Id64String, targetElementId: Id64String, args: {
|
|
299
299
|
sourceDb: IModelDb;
|
|
@@ -344,7 +344,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
344
344
|
* @note empty string and -1 for changeset and index if it was transformed before federation guid update (pre 1.x) and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] === "unsafe-migrate".
|
|
345
345
|
* @throws if the version is not found in a preexisting scope aspect and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] !== "unsafe-migrate"
|
|
346
346
|
*/
|
|
347
|
-
protected
|
|
347
|
+
protected getSynchronizationVersion(): Promise<ChangesetIndexAndId>;
|
|
348
348
|
/**
|
|
349
349
|
* @returns provenance scope aspect if it exists in the provenanceDb.
|
|
350
350
|
* Provenance scope aspect is created and inserted into provenanceDb when [[initScopeProvenance]] is invoked.
|
|
@@ -394,22 +394,11 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
394
394
|
private _targetClassNameToClassIdCache;
|
|
395
395
|
private _targetClassNameToClassId;
|
|
396
396
|
private _getRelClassId;
|
|
397
|
-
private _queryElemIdByFedGuid;
|
|
398
397
|
/** Returns `true` if *brute force* delete detections should be run.
|
|
399
398
|
* @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
|
|
400
399
|
* @note Not relevant for [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are provided and change history is known.
|
|
401
400
|
*/
|
|
402
401
|
protected shouldDetectDeletes(): boolean;
|
|
403
|
-
/**
|
|
404
|
-
* Detect Element deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against Elements
|
|
405
|
-
* in the source iModel.
|
|
406
|
-
* deprecated in 1.x. Do not use this. // FIXME<MIKE>: how to better explain this?
|
|
407
|
-
* This method is only called during [[process]] when [[IModelTransformOptions.argsForProcessChanges]] is undefined and the option
|
|
408
|
-
* [[IModelTransformOptions.forceExternalSourceAspectProvenance]] is enabled. It is not
|
|
409
|
-
* necessary when calling [[process]] with [[IModelTransformOptions.argsForProcessChanges]] defined, since changeset information is sufficient.
|
|
410
|
-
* @note you do not need to call this directly unless processing a subset of an iModel.
|
|
411
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
412
|
-
*/
|
|
413
402
|
/** Transform the specified sourceElement into ElementProps for the target iModel.
|
|
414
403
|
* @param sourceElement The Element from the source iModel to transform.
|
|
415
404
|
* @returns ElementProps for the target iModel.
|
|
@@ -534,12 +523,6 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
534
523
|
*/
|
|
535
524
|
onDeleteRelationship(sourceRelInstanceId: Id64String): Promise<void>;
|
|
536
525
|
private _yieldManager;
|
|
537
|
-
/** Detect Relationship deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against relationships in the source iModel.
|
|
538
|
-
* @deprecated in 1.x. Don't use this anymore
|
|
539
|
-
* @see [[process]] with [[IModelTransformOptions.argsForProcessChanges]] provided.
|
|
540
|
-
* @note This method is called from [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are undefined, so it only needs to be called directly when processing a subset of an iModel.
|
|
541
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
542
|
-
*/
|
|
543
526
|
/** Transform the specified sourceRelationship into RelationshipProps for the target iModel.
|
|
544
527
|
* @param sourceRelationship The Relationship from the source iModel to be transformed.
|
|
545
528
|
* @returns RelationshipProps for the target iModel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,EAML,SAAS,EACT,OAAO,EACP,UAAU,EAKX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,gBAAgB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAKL,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAaL,OAAO,EACP,aAAa,EACb,kBAAkB,EAGlB,mBAAmB,EACnB,MAAM,EAGN,oBAAoB,EAKpB,QAAQ,EAKR,KAAK,EAGL,YAAY,EACZ,iBAAiB,EAMlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EAGnB,QAAQ,EAGR,kBAAkB,EAClB,YAAY,EAEZ,yBAAyB,EACzB,SAAS,EAGT,oBAAoB,EAGpB,UAAU,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EAEpB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAElC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;OASG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;;;OAQG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;;;;;;;;OAWG;IACH,0BAA0B,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAE3C;;;;;OAKG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IAE7D;;;;OAIG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,kCAAkC,EAAE,MAAM,EAAE,CAAC;IAC7C;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAuCD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C;;;;;OAKG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;CACrD,CAAC;AAQF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,UAAU,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAID;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,oCAAoC;IACpC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,6DAA6D;IAC7D,SAAgB,OAAO,EAAE,kBAAkB,CAAC;IAC5C;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAY;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAW;IAE7B,qKAAqK;IACrK,IAAW,oBAAoB,IAAI,UAAU,CAE5C;IAED,wGAAwG;IACxG,SAAS,CAAC,wCAAwC,cAAyB;IAE3E,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAyB;IACzE,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAyB;IAExE,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAc,8BAA8B,SAC8L;IAE1O;;;;OAIG;WACiB,8BAA8B,CAChD,SAAS,EAAE,QAAQ,EACnB,WAAW,EAAE,yBAAyB,GACrC,OAAO,CACN;QACE,QAAQ,EAAE,UAAU,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,uBAAuB;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACD,SAAS,CACZ;IAiDD;;;;;;OAMG;WACiB,iBAAiB,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;IAClB,2DAA2D;IAC3D,oBAAoB,EAAE,UAAU,GAC/B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAoCnB,iBAAiB;IAyBlB,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAM/C,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAM5D,OAAO,CAAC,gBAAgB,CAA6C;IAErE;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAC,CAAU;IAE7C,iFAAiF;IACjF,WAAkB,wBAAwB,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAO9D;IAED,wFAAwF;IACxF,WAAkB,8BAA8B,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAEpE;IAED;;;;OAIG;gBAED,MAAM,EAAE,QAAQ,GAAG,cAAc,EACjC,MAAM,EAAE,QAAQ,GAAG,cAAc,EACjC,OAAO,CAAC,EAAE,sBAAsB;IA6GlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmBlC,2EAA2E;IACpE,OAAO,IAAI,IAAI;IAKtB,qEAAqE;IACrE,OAAO,CAAC,WAAW;IAqDnB;;OAEG;IACU,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMjD;;OAEG;IACU,qBAAqB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMvD,mHAAmH;WACrG,4BAA4B,CACxC,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,EAC3B,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,QAAQ,CAAC;QAEnB,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,UAAU,CAAC;KAClC,GACA,yBAAyB;WAwBR,iCAAiC,CACnD,mBAAmB,EAAE,UAAU,EAC/B,mBAAmB,EAAE,UAAU,EAC/B,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,QAAQ,CAAC;QACnB,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,UAAU,CAAC;QACjC,oCAAoC,EAAE,OAAO,CAAC;KAC/C,GACA,OAAO,CAAC,yBAAyB,CAAC;IA0CrC;;;;;OAKG;IACH,OAAO,CAAC,qCAAqC,CAAS;IAEtD,mHAAmH;IACtG,qBAAqB,CAChC,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,yBAAyB,CAAC;IAarC;;;;OAIG;YACW,0BAA0B;IAkBxC,6EAA6E;IAC7E,OAAO,CAAC,2BAA2B,CAIT;IAE1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB,CAKP;IAE1B,OAAO,CAAC,6BAA6B,CACzB;IAEZ;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAIzC;;;;;;OAMG;cACa,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAgCzE;;;OAGG;cACa,2BAA2B,IAAI,OAAO,CACpD,oBAAoB,GAAG,SAAS,CACjC;IAqBD;;;;;OAKG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6FpD,4DAA4D;IAC5D,OAAO,CAAC,mBAAmB;IAqE3B;;;;;OAKG;WACiB,qBAAqB,CAAC,IAAI,EAAE;QAC9C,kBAAkB,EAAE,QAAQ,CAAC;QAC7B,YAAY,EAAE,QAAQ,CAAC;QACvB,oBAAoB,EAAE,UAAU,CAAC;QACjC,wBAAwB,EAAE,OAAO,CAAC;QAClC,EAAE,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,KAAK,IAAI,CAAC;QACvE,kCAAkC,EAAE,OAAO,CAAC;KAC7C,GAAG,OAAO,CAAC,IAAI,CAAC;YAiHH,qBAAqB;IAcnC;;;;;;OAMG;YACW,0BAA0B;IA0BxC;;;;;;OAMG;YACW,+BAA+B;YAiD/B,iBAAiB;IAmC/B,OAAO,CAAC,8BAA8B,CAA6B;YAErD,yBAAyB;YAazB,cAAc;IAsB5B;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,OAAO;IAMxC;;;;;OAKG;IACU,kBAAkB,CAC7B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,YAAY,CAAC;IAsDxB;;;;;;OAMG;IACI,sBAAsB,IAAI,SAAS,GAAG,SAAS;WAgCxC,yBAAyB,CACrC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GACxC,SAAS;IAoBL,uCAAuC,IAAI,SAAS,GAAG,SAAS;IAgFvE,OAAO,CAAC,8BAA8B,CAAC,CASzB;IAEd;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;cAS5C,kCAAkC;cAmBlC,iCAAiC;YAkBnC,4BAA4B;YAgC5B,6BAA6B;IAoB3C;;;OAGG;IACU,cAAc,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvE;;;OAGG;IACU,oBAAoB,CAC/B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACa,mBAAmB,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO;IAIrE;;;OAGG;IACmB,gBAAgB,CACpC,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;YAmEF,qBAAqB;IAiBnC;;OAEG;IACmB,eAAe,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuJ5E;;OAEG;IACa,eAAe,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI;IAQlE;;OAEG;IACa,aAAa,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI;IAqBvD,iMAAiM;IAC3K,aAAa,CACjC,aAAa,EAAE,UAAU,GACxB,OAAO,CAAC,IAAI,CAAC;IAkDhB,0CAA0C;IAC1C,OAAO,CAAC,gCAAgC;IAQxC;;;OAGG;IACU,YAAY,CAAC,sBAAsB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E;;;;;OAKG;IACU,oBAAoB,CAC/B,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EACzB,oBAAoB,GAAE,MAA8B,GACnD,OAAO,CAAC,IAAI,CAAC;IAUhB,0JAA0J;YAC5I,uBAAuB;IAwCrC;;;;;OAKG;IACI,gBAAgB,CACrB,WAAW,EAAE,KAAK,EAClB,sBAAsB,EAAE,UAAU,GACjC,UAAU;IAoBb;;;;;;;;;;;;;;;;;OAiBG;IACU,4BAA4B,CAAC,EACxC,4BAAoC,GACrC;;KAAK;YAkIQ,sBAAsB;IAqBpC;;;OAGG;IACU,oBAAoB,CAC/B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACa,wBAAwB,CACtC,mBAAmB,EAAE,YAAY,GAChC,OAAO;IAIV;;OAEG;IACmB,oBAAoB,CACxC,kBAAkB,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC;IA+ChB;;OAEG;IACmB,oBAAoB,CACxC,mBAAmB,EAAE,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IA2ChB,OAAO,CAAC,aAAa,CAAsB;IAE3C;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC/B,kBAAkB,EAAE,YAAY,GAC/B,iBAAiB;IAqBJ,yBAAyB,CAAC,MAAM,EAAE,aAAa;IAM/D;;OAEG;IACmB,2BAA2B,CAC/C,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC;IAShB;;;OAGG;IACmB,2BAA2B,CAC/C,aAAa,EAAE,kBAAkB,EAAE,GAClC,OAAO,CAAC,IAAI,CAAC;IA4BhB;;;;OAIG;cACa,wBAAwB,CACtC,mBAAmB,EAAE,aAAa,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAM9B,iFAAiF;IACjF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAGhC;IAEF;;OAEG;IACa,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,CAAC,SAAS,GACpC,OAAO;IASV,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;;;;;;OAOG;IACmB,cAAc,CAClC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAC9B,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAkCrC,OAAO,CAAC,+BAA+B;IAUvC;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5C;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,0JAA0J;IAC1I,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,IAAI;IAIP;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACU,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACa,oBAAoB,CAAC,eAAe,EAAE,QAAQ,GAAG,OAAO;IAIxE,kKAAkK;IAClJ,gBAAgB,CAAC,cAAc,EAAE,QAAQ,GAAG,IAAI;IAIhE,6FAA6F;IAChF,cAAc,CACzB,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAWhB,6DAA6D;IAC7D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,6GAA6G;IAC7G,OAAO,CAAC,YAAY,CAAC,CAAmC;IAExD;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxC;;;;;OAKG;YACW,iBAAiB;IA2H/B;;;;;;;OAOG;cACa,gBAAgB,CAC9B,gBAAgB,EAAE,kBAAkB,GACnC,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;OASG;YACW,gBAAgB;YAsIhB,qBAAqB;IA2FnC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC;;OAEG;YACW,UAAU;IAuCxB,0HAA0H;IAC1H,OAAO,CAAC,yBAAyB,CACF;IAE/B,OAAO,CAAC,kBAAkB;IAiB1B;;;;;;;;OAQG;YACW,cAAc;IAmB5B;;OAEG;YACW,iBAAiB;IAuB/B;;;;OAIG;IACI,eAAe,CACpB,gBAAgB,EAAE,SAAS,EAC3B,eAAe,EAAE,UAAU;CAO9B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,gIAAgI;IAChI,OAAO,CAAC,sBAAsB,CAAC,CAA8B;IAC7D;;;;;OAKG;gBACgB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAmB;IAMpE;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC,4EAA4E;IACtD,kBAAkB,CACtC,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,YAAY,CAAC;CAuDzB"}
|
|
@@ -365,7 +365,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
365
365
|
/** Return the IModelDb where IModelTransformer will store its provenance.
|
|
366
366
|
* @note This will be [[targetDb]] except when it is a reverse synchronization. In that case it be [[sourceDb]].
|
|
367
367
|
*/
|
|
368
|
-
async
|
|
368
|
+
async getProvenanceDb() {
|
|
369
369
|
return (await this.getIsReverseSynchronization())
|
|
370
370
|
? this.sourceDb
|
|
371
371
|
: this.targetDb;
|
|
@@ -373,7 +373,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
373
373
|
/** Return the IModelDb where IModelTransformer looks for entities referred to by stored provenance.
|
|
374
374
|
* @note This will be [[sourceDb]] except when it is a reverse synchronization. In that case it be [[targetDb]].
|
|
375
375
|
*/
|
|
376
|
-
async
|
|
376
|
+
async getProvenanceSourceDb() {
|
|
377
377
|
return (await this.getIsReverseSynchronization())
|
|
378
378
|
? this.targetDb
|
|
379
379
|
: this.sourceDb;
|
|
@@ -488,7 +488,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
488
488
|
* @note empty string and -1 for changeset and index if it was transformed before federation guid update (pre 1.x) and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] === "unsafe-migrate".
|
|
489
489
|
* @throws if the version is not found in a preexisting scope aspect and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] !== "unsafe-migrate"
|
|
490
490
|
*/
|
|
491
|
-
async
|
|
491
|
+
async getSynchronizationVersion() {
|
|
492
492
|
if (this._cachedSynchronizationVersion === undefined) {
|
|
493
493
|
const provenanceScopeAspect = await this.tryGetProvenanceScopeAspect();
|
|
494
494
|
if (!provenanceScopeAspect) {
|
|
@@ -517,16 +517,16 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
517
517
|
* Provenance scope aspect is created and inserted into provenanceDb when [[initScopeProvenance]] is invoked.
|
|
518
518
|
*/
|
|
519
519
|
async tryGetProvenanceScopeAspect() {
|
|
520
|
-
const scopeProvenanceAspectProps = await IModelTransformer.queryScopeExternalSourceAspect(await this.
|
|
520
|
+
const scopeProvenanceAspectProps = await IModelTransformer.queryScopeExternalSourceAspect(await this.getProvenanceDb(), {
|
|
521
521
|
id: undefined,
|
|
522
522
|
classFullName: core_backend_1.ExternalSourceAspect.classFullName,
|
|
523
523
|
scope: { id: core_common_1.IModel.rootSubjectId },
|
|
524
524
|
kind: core_backend_1.ExternalSourceAspect.Kind.Scope,
|
|
525
525
|
element: { id: this.targetScopeElementId ?? core_common_1.IModel.rootSubjectId },
|
|
526
|
-
identifier: (await this.
|
|
526
|
+
identifier: (await this.getProvenanceSourceDb()).iModelId,
|
|
527
527
|
});
|
|
528
528
|
return scopeProvenanceAspectProps !== undefined
|
|
529
|
-
? (await this.
|
|
529
|
+
? (await this.getProvenanceDb()).elements.getAspect(scopeProvenanceAspectProps.aspectId)
|
|
530
530
|
: undefined;
|
|
531
531
|
}
|
|
532
532
|
/**
|
|
@@ -536,8 +536,8 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
536
536
|
* if this was a [BriefcaseDb]($backend)
|
|
537
537
|
*/
|
|
538
538
|
async initScopeProvenance() {
|
|
539
|
-
const provenanceDb = await this.
|
|
540
|
-
const sourceProvenanceDb = await this.
|
|
539
|
+
const provenanceDb = await this.getProvenanceDb();
|
|
540
|
+
const sourceProvenanceDb = await this.getProvenanceSourceDb();
|
|
541
541
|
const aspectProps = {
|
|
542
542
|
id: undefined,
|
|
543
543
|
version: undefined,
|
|
@@ -692,8 +692,8 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
692
692
|
// NOTE: if we exposed the native attach database support,
|
|
693
693
|
// we could get the intersection of fed guids in one query, not sure if it would be faster
|
|
694
694
|
// OR we could do a raw sqlite query...
|
|
695
|
-
const sourceReader = sourceDb.createQueryReader(elementIdByFedGuidQuery);
|
|
696
|
-
const targetReader = targetDb.createQueryReader(elementIdByFedGuidQuery);
|
|
695
|
+
const sourceReader = sourceDb.createQueryReader(elementIdByFedGuidQuery, undefined, { usePrimaryConn: true });
|
|
696
|
+
const targetReader = targetDb.createQueryReader(elementIdByFedGuidQuery, undefined, { usePrimaryConn: true });
|
|
697
697
|
let hasSourceRow = await sourceReader.step();
|
|
698
698
|
let hasTargetRow = await targetReader.step();
|
|
699
699
|
while (hasSourceRow && hasTargetRow) {
|
|
@@ -730,7 +730,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
730
730
|
const params = new core_common_1.QueryBinder();
|
|
731
731
|
params.bindId("scopeId", args.targetScopeElementId);
|
|
732
732
|
params.bindString("kind", core_backend_1.ExternalSourceAspect.Kind.Element);
|
|
733
|
-
const provenanceReader = args.provenanceDb.createQueryReader(provenanceAspectsQuery, params);
|
|
733
|
+
const provenanceReader = args.provenanceDb.createQueryReader(provenanceAspectsQuery, params, { usePrimaryConn: true });
|
|
734
734
|
for await (const row of provenanceReader) {
|
|
735
735
|
// ExternalSourceAspect.Identifier is of type string
|
|
736
736
|
const aspectIdentifier = row[0];
|
|
@@ -740,8 +740,8 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
740
740
|
}
|
|
741
741
|
async forEachTrackedElement(fn) {
|
|
742
742
|
return IModelTransformer.forEachTrackedElement({
|
|
743
|
-
provenanceSourceDb: await this.
|
|
744
|
-
provenanceDb: await this.
|
|
743
|
+
provenanceSourceDb: await this.getProvenanceSourceDb(),
|
|
744
|
+
provenanceDb: await this.getProvenanceDb(),
|
|
745
745
|
targetScopeElementId: this.targetScopeElementId,
|
|
746
746
|
isReverseSynchronization: await this.getIsReverseSynchronization(),
|
|
747
747
|
fn,
|
|
@@ -767,7 +767,9 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
767
767
|
params.bindString(1, core_backend_1.ExternalSourceAspect.Kind.Element);
|
|
768
768
|
params.bindId(2, this.targetScopeElementId);
|
|
769
769
|
params.bindString(3, entityInProvenanceSourceId);
|
|
770
|
-
const result = (await this.
|
|
770
|
+
const result = (await this.getProvenanceDb()).createQueryReader(sql, params, {
|
|
771
|
+
usePrimaryConn: true,
|
|
772
|
+
});
|
|
771
773
|
if (await result.step()) {
|
|
772
774
|
return result.current.id;
|
|
773
775
|
}
|
|
@@ -795,7 +797,9 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
795
797
|
params.bindString(1, core_backend_1.ExternalSourceAspect.Kind.Relationship);
|
|
796
798
|
params.bindId(2, this.targetScopeElementId);
|
|
797
799
|
params.bindString(3, entityInProvenanceSourceId);
|
|
798
|
-
const result = (await this.
|
|
800
|
+
const result = (await this.getProvenanceDb()).createQueryReader(sql, params, {
|
|
801
|
+
usePrimaryConn: true,
|
|
802
|
+
});
|
|
799
803
|
if (await result.step()) {
|
|
800
804
|
const aspectId = result.current.id;
|
|
801
805
|
const provenanceRelInstId = result.current.provenanceRelInstId;
|
|
@@ -829,7 +833,9 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
829
833
|
params.bindId(1, targetRelInfo.sourceId);
|
|
830
834
|
params.bindId(2, targetRelInfo.targetId);
|
|
831
835
|
params.bindId(3, await this._targetClassNameToClassId(sourceRelInfo.classFullName));
|
|
832
|
-
const result = this.targetDb.createQueryReader(sql, params
|
|
836
|
+
const result = this.targetDb.createQueryReader(sql, params, {
|
|
837
|
+
usePrimaryConn: true,
|
|
838
|
+
});
|
|
833
839
|
if (await result.step())
|
|
834
840
|
return result.current.id;
|
|
835
841
|
else
|
|
@@ -859,21 +865,11 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
859
865
|
: classFullName.split(":");
|
|
860
866
|
params.bindString(1, schemaName);
|
|
861
867
|
params.bindString(2, className);
|
|
862
|
-
const result = db.createQueryReader(sql, params);
|
|
868
|
+
const result = db.createQueryReader(sql, params, { usePrimaryConn: true });
|
|
863
869
|
if (await result.step())
|
|
864
870
|
return result.current.id;
|
|
865
871
|
(0, core_bentley_1.assert)(false, "relationship was not found");
|
|
866
872
|
}
|
|
867
|
-
// Deprecate?
|
|
868
|
-
async _queryElemIdByFedGuid(db, fedGuid) {
|
|
869
|
-
const sql = "SELECT ECInstanceId FROM Bis.Element WHERE FederationGuid=:fedGuid";
|
|
870
|
-
const params = new core_common_1.QueryBinder().bindString("fedGuid", fedGuid);
|
|
871
|
-
const reader = db.createQueryReader(sql, params);
|
|
872
|
-
if (await reader.step()) {
|
|
873
|
-
return reader.current.ecinstanceid;
|
|
874
|
-
}
|
|
875
|
-
return undefined;
|
|
876
|
-
}
|
|
877
873
|
/** Returns `true` if *brute force* delete detections should be run.
|
|
878
874
|
* @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
|
|
879
875
|
* @note Not relevant for [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are provided and change history is known.
|
|
@@ -882,45 +878,6 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
882
878
|
nodeAssert(this._syncType !== undefined);
|
|
883
879
|
return this._syncType === "not-sync";
|
|
884
880
|
}
|
|
885
|
-
/**
|
|
886
|
-
* Detect Element deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against Elements
|
|
887
|
-
* in the source iModel.
|
|
888
|
-
* deprecated in 1.x. Do not use this. // FIXME<MIKE>: how to better explain this?
|
|
889
|
-
* This method is only called during [[process]] when [[IModelTransformOptions.argsForProcessChanges]] is undefined and the option
|
|
890
|
-
* [[IModelTransformOptions.forceExternalSourceAspectProvenance]] is enabled. It is not
|
|
891
|
-
* necessary when calling [[process]] with [[IModelTransformOptions.argsForProcessChanges]] defined, since changeset information is sufficient.
|
|
892
|
-
* @note you do not need to call this directly unless processing a subset of an iModel.
|
|
893
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
894
|
-
*/
|
|
895
|
-
// public async detectElementDeletes(): Promise<void> {
|
|
896
|
-
// const sql = `
|
|
897
|
-
// SELECT Identifier, Element.Id
|
|
898
|
-
// FROM BisCore.ExternalSourceAspect
|
|
899
|
-
// WHERE Scope.Id=:scopeId
|
|
900
|
-
// AND Kind=:kind
|
|
901
|
-
// `;
|
|
902
|
-
// nodeAssert(
|
|
903
|
-
// !this.isReverseSynchronization,
|
|
904
|
-
// "synchronizations with processChanges already detect element deletes, don't call detectElementDeletes"
|
|
905
|
-
// );
|
|
906
|
-
// // Reported issue: https://github.com/iTwin/itwinjs-core/issues/7989
|
|
907
|
-
// this.provenanceDb.withPreparedStatement(sql, (stmt) => {
|
|
908
|
-
// stmt.bindId("scopeId", this.targetScopeElementId);
|
|
909
|
-
// stmt.bindString("kind", ExternalSourceAspect.Kind.Element);
|
|
910
|
-
// while (DbResult.BE_SQLITE_ROW === stmt.step()) {
|
|
911
|
-
// // ExternalSourceAspect.Identifier is of type string
|
|
912
|
-
// const aspectIdentifier = stmt.getValue(0).getString();
|
|
913
|
-
// if (!Id64.isValidId64(aspectIdentifier)) {
|
|
914
|
-
// continue;
|
|
915
|
-
// }
|
|
916
|
-
// const targetElemId = stmt.getValue(1).getId();
|
|
917
|
-
// const wasDeletedInSource = !EntityUnifier.exists(this.sourceDb, {
|
|
918
|
-
// entityReference: `e${aspectIdentifier}`,
|
|
919
|
-
// });
|
|
920
|
-
// if (wasDeletedInSource) this.importer.deleteElement(targetElemId);
|
|
921
|
-
// }
|
|
922
|
-
// });
|
|
923
|
-
// }
|
|
924
881
|
/** Transform the specified sourceElement into ElementProps for the target iModel.
|
|
925
882
|
* @param sourceElement The Element from the source iModel to transform.
|
|
926
883
|
* @returns ElementProps for the target iModel.
|
|
@@ -929,7 +886,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
929
886
|
*/
|
|
930
887
|
async onTransformElement(sourceElement) {
|
|
931
888
|
core_bentley_1.Logger.logTrace(loggerCategory, `onTransformElement(${sourceElement.id}) "${sourceElement.getDisplayLabel()}"`);
|
|
932
|
-
const targetElementProps = this.context.cloneElement(sourceElement, { binaryGeometry: this._options.cloneUsingBinaryGeometry });
|
|
889
|
+
const targetElementProps = await this.context.cloneElement(sourceElement, { binaryGeometry: this._options.cloneUsingBinaryGeometry });
|
|
933
890
|
// Special case: source element is the root subject
|
|
934
891
|
if (sourceElement.id === core_common_1.IModel.rootSubjectId) {
|
|
935
892
|
const targetElementId = this.context.findTargetElementId(sourceElement.id);
|
|
@@ -1288,7 +1245,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1288
1245
|
// physical consolidation is an example of a 'joining' transform
|
|
1289
1246
|
// FIXME: verify at finalization time that we don't lose provenance on new elements
|
|
1290
1247
|
// FIXME: make public and improve `initElementProvenance` API for usage by consolidators
|
|
1291
|
-
const provenanceDb = await this.
|
|
1248
|
+
const provenanceDb = await this.getProvenanceDb();
|
|
1292
1249
|
if (!this._options.noProvenance) {
|
|
1293
1250
|
let provenance = this._options.forceExternalSourceAspectProvenance ||
|
|
1294
1251
|
this._elementsWithExplicitlyTrackedProvenance.has(sourceElement.id)
|
|
@@ -1353,7 +1310,9 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1353
1310
|
`;
|
|
1354
1311
|
if (this.exporter.sourceDbChanges?.element.deleteIds.has(sourceModelId)) {
|
|
1355
1312
|
const params = new core_common_1.QueryBinder().bindId("targetModelId", targetModelId);
|
|
1356
|
-
const reader = this.targetDb.createQueryReader(sql, params
|
|
1313
|
+
const reader = this.targetDb.createQueryReader(sql, params, {
|
|
1314
|
+
usePrimaryConn: true,
|
|
1315
|
+
});
|
|
1357
1316
|
const isDefinitionPartition = await reader.step();
|
|
1358
1317
|
if (isDefinitionPartition) {
|
|
1359
1318
|
// Skipping model deletion because model's partition will also be deleted.
|
|
@@ -1411,12 +1370,12 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1411
1370
|
// import DefinitionModels first
|
|
1412
1371
|
const childDefinitionPartitionSql = `SELECT ECInstanceId FROM ${core_backend_1.DefinitionPartition.classFullName} WHERE Parent.Id=:subjectId`;
|
|
1413
1372
|
const params = new core_common_1.QueryBinder().bindId("subjectId", sourceSubjectId);
|
|
1414
|
-
for await (const row of this.sourceDb.createQueryReader(childDefinitionPartitionSql, params)) {
|
|
1373
|
+
for await (const row of this.sourceDb.createQueryReader(childDefinitionPartitionSql, params, { usePrimaryConn: true })) {
|
|
1415
1374
|
await this.processModel(row.id);
|
|
1416
1375
|
}
|
|
1417
1376
|
// import other partitions next
|
|
1418
1377
|
const childPartitionSql = `SELECT ECInstanceId FROM ${core_backend_1.InformationPartitionElement.classFullName} WHERE Parent.Id=:subjectId`;
|
|
1419
|
-
for await (const row of this.sourceDb.createQueryReader(childPartitionSql, params)) {
|
|
1378
|
+
for await (const row of this.sourceDb.createQueryReader(childPartitionSql, params, { usePrimaryConn: true })) {
|
|
1420
1379
|
const modelId = row.id;
|
|
1421
1380
|
const model = this.sourceDb.models.getModel(modelId);
|
|
1422
1381
|
if (!(model instanceof core_backend_1.DefinitionModel)) {
|
|
@@ -1425,7 +1384,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1425
1384
|
}
|
|
1426
1385
|
// recurse into child Subjects
|
|
1427
1386
|
const childSubjectSql = `SELECT ECInstanceId FROM ${core_backend_1.Subject.classFullName} WHERE Parent.Id=:subjectId`;
|
|
1428
|
-
for await (const row of this.sourceDb.createQueryReader(childSubjectSql, params)) {
|
|
1387
|
+
for await (const row of this.sourceDb.createQueryReader(childSubjectSql, params, { usePrimaryConn: true })) {
|
|
1429
1388
|
await this.processSubjectSubModels(row.id);
|
|
1430
1389
|
}
|
|
1431
1390
|
}
|
|
@@ -1532,7 +1491,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1532
1491
|
core_bentley_1.Logger.logTrace(loggerCategory, `new pendingReverseSyncChanges: ${jsonProps.pendingReverseSyncChangesetIndices}`);
|
|
1533
1492
|
core_bentley_1.Logger.logTrace(loggerCategory, `new pendingSyncChanges: ${jsonProps.pendingSyncChangesetIndices}`);
|
|
1534
1493
|
}
|
|
1535
|
-
(await this.
|
|
1494
|
+
(await this.getProvenanceDb()).elements.updateAspect({
|
|
1536
1495
|
...this._targetScopeProvenanceProps,
|
|
1537
1496
|
jsonProperties: JSON.stringify(this._targetScopeProvenanceProps.jsonProperties),
|
|
1538
1497
|
});
|
|
@@ -1579,7 +1538,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1579
1538
|
const targetFedGuid = this.sourceDb.elements.getFederationGuidFromId(sourceRelationship.targetId);
|
|
1580
1539
|
const targetRelationshipProps = this.onTransformRelationship(sourceRelationship);
|
|
1581
1540
|
const targetRelationshipInstanceId = this.importer.importRelationship(targetRelationshipProps);
|
|
1582
|
-
const provenanceDb = await this.
|
|
1541
|
+
const provenanceDb = await this.getProvenanceDb();
|
|
1583
1542
|
if (!this._options.noProvenance &&
|
|
1584
1543
|
core_bentley_1.Id64.isValid(targetRelationshipInstanceId)) {
|
|
1585
1544
|
let provenance = !this._options.forceExternalSourceAspectProvenance
|
|
@@ -1621,7 +1580,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1621
1580
|
}
|
|
1622
1581
|
if (deletedRelData.provenanceAspectId) {
|
|
1623
1582
|
try {
|
|
1624
|
-
(await this.
|
|
1583
|
+
(await this.getProvenanceDb()).elements.deleteAspect(deletedRelData.provenanceAspectId);
|
|
1625
1584
|
}
|
|
1626
1585
|
catch (error) {
|
|
1627
1586
|
// This aspect may no longer exist if it was deleted at some other point during the transformation. This is fine.
|
|
@@ -1632,58 +1591,6 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1632
1591
|
}
|
|
1633
1592
|
}
|
|
1634
1593
|
_yieldManager = new core_bentley_1.YieldManager();
|
|
1635
|
-
/** Detect Relationship deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against relationships in the source iModel.
|
|
1636
|
-
* @deprecated in 1.x. Don't use this anymore
|
|
1637
|
-
* @see [[process]] with [[IModelTransformOptions.argsForProcessChanges]] provided.
|
|
1638
|
-
* @note This method is called from [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are undefined, so it only needs to be called directly when processing a subset of an iModel.
|
|
1639
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
1640
|
-
*/
|
|
1641
|
-
// public async detectRelationshipDeletes(): Promise<void> {
|
|
1642
|
-
// if (this.isReverseSynchronization) {
|
|
1643
|
-
// throw new IModelError(
|
|
1644
|
-
// IModelStatus.BadRequest,
|
|
1645
|
-
// "Cannot detect deletes when isReverseSynchronization=true"
|
|
1646
|
-
// );
|
|
1647
|
-
// }
|
|
1648
|
-
// const aspectDeleteIds: Id64String[] = [];
|
|
1649
|
-
// const sql = `
|
|
1650
|
-
// SELECT ECInstanceId, Identifier, JsonProperties
|
|
1651
|
-
// FROM ${ExternalSourceAspect.classFullName} aspect
|
|
1652
|
-
// WHERE aspect.Scope.Id=:scopeId
|
|
1653
|
-
// AND aspect.Kind=:kind
|
|
1654
|
-
// `;
|
|
1655
|
-
// const params = new QueryBinder().bindId(
|
|
1656
|
-
// "scopeId",
|
|
1657
|
-
// this.targetScopeElementId
|
|
1658
|
-
// );
|
|
1659
|
-
// params.bindString("kind", ExternalSourceAspect.Kind.Relationship);
|
|
1660
|
-
// for await (const row of this.targetDb.createQueryReader(sql, params)) {
|
|
1661
|
-
// const sourceRelInstanceId: Id64String = Id64.fromJSON(row[1]);
|
|
1662
|
-
// if (
|
|
1663
|
-
// undefined ===
|
|
1664
|
-
// this.sourceDb.relationships.tryGetInstanceProps(
|
|
1665
|
-
// ElementRefersToElements.classFullName,
|
|
1666
|
-
// sourceRelInstanceId
|
|
1667
|
-
// )
|
|
1668
|
-
// ) {
|
|
1669
|
-
// // this function exists only to support some in-imodel transformations, which must
|
|
1670
|
-
// // use the old (external source aspect) provenance method anyway so we don't need to support
|
|
1671
|
-
// // new provenance
|
|
1672
|
-
// const json: any = JSON.parse(row[2]);
|
|
1673
|
-
// const targetRelInstanceId =
|
|
1674
|
-
// json.targetRelInstanceId ?? json.provenanceRelInstanceId;
|
|
1675
|
-
// if (targetRelInstanceId) {
|
|
1676
|
-
// this.importer.deleteRelationship({
|
|
1677
|
-
// id: targetRelInstanceId,
|
|
1678
|
-
// classFullName: ElementRefersToElements.classFullName,
|
|
1679
|
-
// });
|
|
1680
|
-
// }
|
|
1681
|
-
// aspectDeleteIds.push(row.id);
|
|
1682
|
-
// }
|
|
1683
|
-
// await this._yieldManager.allowYield();
|
|
1684
|
-
// }
|
|
1685
|
-
// this.targetDb.elements.deleteAspect(aspectDeleteIds);
|
|
1686
|
-
// }
|
|
1687
1594
|
/** Transform the specified sourceRelationship into RelationshipProps for the target iModel.
|
|
1688
1595
|
* @param sourceRelationship The Relationship from the source iModel to be transformed.
|
|
1689
1596
|
* @returns RelationshipProps for the target iModel.
|
|
@@ -1923,11 +1830,11 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1923
1830
|
this._sourceChangeDataState = "has-changes";
|
|
1924
1831
|
}
|
|
1925
1832
|
const relationshipECClassIdsToSkip = new Set();
|
|
1926
|
-
for await (const row of this.sourceDb.createQueryReader("SELECT ECInstanceId FROM ECDbMeta.ECClassDef where ECInstanceId IS (BisCore.ElementDrivesElement)")) {
|
|
1833
|
+
for await (const row of this.sourceDb.createQueryReader("SELECT ECInstanceId FROM ECDbMeta.ECClassDef where ECInstanceId IS (BisCore.ElementDrivesElement)", undefined, { usePrimaryConn: true })) {
|
|
1927
1834
|
relationshipECClassIdsToSkip.add(row.ECInstanceId);
|
|
1928
1835
|
}
|
|
1929
1836
|
const relationshipECClassIds = new Set();
|
|
1930
|
-
for await (const row of this.sourceDb.createQueryReader("SELECT ECInstanceId FROM ECDbMeta.ECClassDef where ECInstanceId IS (BisCore.ElementRefersToElements)")) {
|
|
1837
|
+
for await (const row of this.sourceDb.createQueryReader("SELECT ECInstanceId FROM ECDbMeta.ECClassDef where ECInstanceId IS (BisCore.ElementRefersToElements)", undefined, { usePrimaryConn: true })) {
|
|
1931
1838
|
relationshipECClassIds.add(row.ECInstanceId);
|
|
1932
1839
|
}
|
|
1933
1840
|
// For later use when processing deletes.
|
|
@@ -2009,7 +1916,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2009
1916
|
async processDeletedOp(change, mapOfDeletedElemIdToScopeEsas, isRelationship, alreadyImportedElementInserts, alreadyImportedModelInserts) {
|
|
2010
1917
|
// we need a connected iModel with changes to remap elements with deletions
|
|
2011
1918
|
const notConnectedModel = this.sourceDb.iTwinId === undefined;
|
|
2012
|
-
const noChanges = (await this.
|
|
1919
|
+
const noChanges = (await this.getSynchronizationVersion()).index ===
|
|
2013
1920
|
this.sourceDb.changeset.index &&
|
|
2014
1921
|
(this.exporter.sourceDbChanges === undefined ||
|
|
2015
1922
|
!this.exporter.sourceDbChanges.hasChanges);
|
|
@@ -2019,7 +1926,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2019
1926
|
* if our ChangedECInstance is in the provenanceDb, then we can use the ids we find in the ChangedECInstance to query for ESAs.
|
|
2020
1927
|
* This is because the ESAs are stored on an element Id thats present in the provenanceDb.
|
|
2021
1928
|
*/
|
|
2022
|
-
const changeDataInProvenanceDb = this.sourceDb === (await this.
|
|
1929
|
+
const changeDataInProvenanceDb = this.sourceDb === (await this.getProvenanceDb());
|
|
2023
1930
|
const getTargetIdFromSourceId = async (id) => {
|
|
2024
1931
|
let identifierValue;
|
|
2025
1932
|
let element;
|
|
@@ -2035,7 +1942,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2035
1942
|
this.targetScopeElementId,
|
|
2036
1943
|
core_backend_1.ExternalSourceAspect.Kind.Element,
|
|
2037
1944
|
id,
|
|
2038
|
-
]))) {
|
|
1945
|
+
]), { usePrimaryConn: true })) {
|
|
2039
1946
|
identifierValue = row.Identifier;
|
|
2040
1947
|
}
|
|
2041
1948
|
identifierValue =
|
|
@@ -2067,7 +1974,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2067
1974
|
targetIdInTarget: targetIdOfRelationshipInTarget,
|
|
2068
1975
|
});
|
|
2069
1976
|
}
|
|
2070
|
-
else if (this.sourceDb === (await this.
|
|
1977
|
+
else if (this.sourceDb === (await this.getProvenanceSourceDb())) {
|
|
2071
1978
|
const relProvenance = await this._queryProvenanceForRelationship(changedInstanceId, {
|
|
2072
1979
|
classFullName: classFullName ?? "",
|
|
2073
1980
|
sourceId: sourceIdOfRelationshipInSource,
|
|
@@ -2084,7 +1991,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2084
1991
|
else {
|
|
2085
1992
|
let targetId = await getTargetIdFromSourceId(changedInstanceId);
|
|
2086
1993
|
if (targetId === undefined &&
|
|
2087
|
-
this.sourceDb === (await this.
|
|
1994
|
+
this.sourceDb === (await this.getProvenanceSourceDb())) {
|
|
2088
1995
|
targetId = await this._queryProvenanceForElement(changedInstanceId);
|
|
2089
1996
|
}
|
|
2090
1997
|
// since we are processing one changeset at a time, we can see local source deletes
|
|
@@ -2093,7 +2000,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2093
2000
|
if (deletionNotInTarget)
|
|
2094
2001
|
return;
|
|
2095
2002
|
if (targetId === undefined) {
|
|
2096
|
-
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadElement, "targetId should
|
|
2003
|
+
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadElement, "targetId should be acquired from source id or element provenance");
|
|
2097
2004
|
}
|
|
2098
2005
|
this.context.remapElement(changedInstanceId, targetId);
|
|
2099
2006
|
// If an entity insert and an entity delete both point to the same entity in target iModel, that means that entity was recreated.
|
|
@@ -2113,7 +2020,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2113
2020
|
this._sourceChangeDataState = "unconnected";
|
|
2114
2021
|
return;
|
|
2115
2022
|
}
|
|
2116
|
-
const syncVersion = await this.
|
|
2023
|
+
const syncVersion = await this.getSynchronizationVersion();
|
|
2117
2024
|
const noChanges = syncVersion.index === this.sourceDb.changeset.index;
|
|
2118
2025
|
if (noChanges) {
|
|
2119
2026
|
this._sourceChangeDataState = "no-changes";
|
|
@@ -2220,8 +2127,6 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2220
2127
|
if (this._options.forceExternalSourceAspectProvenance &&
|
|
2221
2128
|
this.shouldDetectDeletes()) {
|
|
2222
2129
|
core_bentley_1.Logger.logWarning(loggerCategory, "This workflows was deprecated in v1 and is no longer supported");
|
|
2223
|
-
// await this.detectElementDeletes();
|
|
2224
|
-
// await this.detectRelationshipDeletes();
|
|
2225
2130
|
}
|
|
2226
2131
|
if (this._options.optimizeGeometry)
|
|
2227
2132
|
this.importer.optimizeGeometry(this._options.optimizeGeometry);
|
|
@@ -2283,7 +2188,7 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
2283
2188
|
? { startChangeset }
|
|
2284
2189
|
: {
|
|
2285
2190
|
startChangeset: {
|
|
2286
|
-
index: (await this.
|
|
2191
|
+
index: (await this.getSynchronizationVersion()).index + 1,
|
|
2287
2192
|
},
|
|
2288
2193
|
}),
|
|
2289
2194
|
};
|
|
@@ -2402,17 +2307,4 @@ class TemplateModelCloner extends IModelTransformer {
|
|
|
2402
2307
|
}
|
|
2403
2308
|
}
|
|
2404
2309
|
exports.TemplateModelCloner = TemplateModelCloner;
|
|
2405
|
-
//Deprecate in preference of imodeldb.elements.getFederationGuidFromId()?
|
|
2406
|
-
async function queryElemFedGuid(db, elemId) {
|
|
2407
|
-
const sql = `
|
|
2408
|
-
SELECT FederationGuid
|
|
2409
|
-
FROM bis.Element
|
|
2410
|
-
WHERE ECInstanceId=?
|
|
2411
|
-
`;
|
|
2412
|
-
const params = new core_common_1.QueryBinder().bindId(1, elemId);
|
|
2413
|
-
const reader = db.createQueryReader(sql, params);
|
|
2414
|
-
(0, core_bentley_1.assert)(await reader.step(), "element not found");
|
|
2415
|
-
const result = reader.current.federationGuid;
|
|
2416
|
-
return result;
|
|
2417
|
-
}
|
|
2418
2310
|
//# sourceMappingURL=IModelTransformer.js.map
|