@itwin/imodel-transformer 2.0.0-dev.73 → 2.0.0-dev.75
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/ElementAspectExportCoordinator.d.ts +17 -2
- package/lib/ElementAspectExportCoordinator.d.ts.map +1 -1
- package/lib/ElementAspectExportCoordinator.js +34 -7
- package/lib/ElementAspectExportCoordinator.js.map +1 -1
- package/lib/EntityExistenceCache.d.ts +14 -1
- package/lib/EntityExistenceCache.d.ts.map +1 -1
- package/lib/EntityExistenceCache.js +30 -13
- package/lib/EntityExistenceCache.js.map +1 -1
- package/lib/IModelExporter.d.ts.map +1 -1
- package/lib/IModelExporter.js +17 -19
- package/lib/IModelExporter.js.map +1 -1
- package/lib/IModelTransformer.d.ts +3 -0
- package/lib/IModelTransformer.d.ts.map +1 -1
- package/lib/IModelTransformer.js +65 -69
- package/lib/IModelTransformer.js.map +1 -1
- package/package.json +1 -1
|
@@ -373,6 +373,9 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
373
373
|
* A source relationship deleted and recreated with the same endpoints maps to the same target relationship, which must not be deleted.
|
|
374
374
|
*/
|
|
375
375
|
private _reimportedTargetRelationshipIds;
|
|
376
|
+
/** Same-iModel only: whether elements of an ECClassId are non-recipe DefinitionElements that are reused in place. */
|
|
377
|
+
private readonly _sameIModelReusableDefinitionClasses;
|
|
378
|
+
private isSameIModelReusableDefinition;
|
|
376
379
|
/** Returns true if a change within sourceElement is detected.
|
|
377
380
|
* @param sourceElement The Element from the source iModel
|
|
378
381
|
* @note A subclass can override this method to provide custom change detection behavior.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,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,EAQL,OAAO,EAEP,OAAO,EACP,aAAa,EACb,kBAAkB,EAElB,mBAAmB,EACnB,MAAM,EAEN,oBAAoB,EAGpB,QAAQ,EAIR,KAAK,EAEL,YAAY,EACZ,iBAAiB,EAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,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,EACnB,mCAAmC,EACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAEL,qBAAqB,EACtB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAEL,gBAAgB,EAIjB,MAAM,uBAAuB,CAAC;AAQ/B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAClC,uKAAuK;IACvK,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;CAClC;AAED;;;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;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;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;
|
|
1
|
+
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
|
package/lib/IModelTransformer.js
CHANGED
|
@@ -32,42 +32,29 @@ function relationshipEndpointsKey(sourceId, targetId) {
|
|
|
32
32
|
return `${sourceId}|${targetId}`;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* which matches the possible containers of references in [Element.requiredReferenceKeys]($backend).
|
|
35
|
+
* Get the Id64 held by a required reference.
|
|
36
|
+
* [Element.requiredReferenceKeys]($backend) hold either a raw Id64String or a RelatedElement-like object with an `id` property.
|
|
38
37
|
* @internal
|
|
39
38
|
*/
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
ITwinError.throwError({
|
|
60
|
-
iTwinErrorId: {
|
|
61
|
-
scope: IModelTransformerErrorScope,
|
|
62
|
-
key: IModelTransformerError.InvalidEntityReference,
|
|
63
|
-
},
|
|
64
|
-
message: [
|
|
65
|
-
`Id64 container '${JSON.stringify(idContainer)}' is unsupported.`,
|
|
66
|
-
"Currently only singular Id64 strings or prop-like objects containing an 'id' property are supported.",
|
|
67
|
-
].join("\n"),
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
return results;
|
|
39
|
+
function requiredReferenceId(idContainer) {
|
|
40
|
+
if (idContainer === undefined)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (typeof idContainer === "string") {
|
|
43
|
+
assert(() => Id64.isValidId64(idContainer));
|
|
44
|
+
return idContainer;
|
|
45
|
+
}
|
|
46
|
+
if (idContainer && typeof idContainer === "object" && "id" in idContainer)
|
|
47
|
+
return idContainer.id;
|
|
48
|
+
ITwinError.throwError({
|
|
49
|
+
iTwinErrorId: {
|
|
50
|
+
scope: IModelTransformerErrorScope,
|
|
51
|
+
key: IModelTransformerError.InvalidEntityReference,
|
|
52
|
+
},
|
|
53
|
+
message: [
|
|
54
|
+
`Id64 container '${JSON.stringify(idContainer)}' is unsupported.`,
|
|
55
|
+
"Currently only singular Id64 strings or prop-like objects containing an 'id' property are supported.",
|
|
56
|
+
].join("\n"),
|
|
57
|
+
});
|
|
71
58
|
}
|
|
72
59
|
/** Base class used to transform a source iModel into a different target iModel.
|
|
73
60
|
* @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md), [IModelExporter]($transformer), [IModelImporter]($transformer)
|
|
@@ -515,6 +502,26 @@ export class IModelTransformer extends IModelExportHandler {
|
|
|
515
502
|
* A source relationship deleted and recreated with the same endpoints maps to the same target relationship, which must not be deleted.
|
|
516
503
|
*/
|
|
517
504
|
_reimportedTargetRelationshipIds = new Set();
|
|
505
|
+
/** Same-iModel only: whether elements of an ECClassId are non-recipe DefinitionElements that are reused in place. */
|
|
506
|
+
_sameIModelReusableDefinitionClasses = new Map();
|
|
507
|
+
isSameIModelReusableDefinition(elementId) {
|
|
508
|
+
// Reading ECClassId through a cached SQLite statement avoids loading the whole referenced element.
|
|
509
|
+
// bis_Element holds every element, and the primary connection sees uncommitted inserts.
|
|
510
|
+
const classId = this.sourceDb.withPreparedSqliteStatement("SELECT ECClassId FROM bis_Element WHERE Id=?", (stmt) => {
|
|
511
|
+
stmt.bindId(1, elementId);
|
|
512
|
+
return stmt.nextRow() ? stmt.getValueId(0) : undefined;
|
|
513
|
+
});
|
|
514
|
+
if (classId === undefined)
|
|
515
|
+
return false;
|
|
516
|
+
let isReusable = this._sameIModelReusableDefinitionClasses.get(classId);
|
|
517
|
+
if (isReusable === undefined) {
|
|
518
|
+
// Class inheritance needs EC metadata, so classify each class once in ECSQL.
|
|
519
|
+
isReusable = this.sourceDb.withQueryReader(`SELECT 1 FROM ${DefinitionElement.classFullName}
|
|
520
|
+
WHERE ECInstanceId=? AND ECClassId IS NOT (${RecipeDefinitionElement.classFullName})`, (reader) => reader.step(), QueryBinder.from([elementId]));
|
|
521
|
+
this._sameIModelReusableDefinitionClasses.set(classId, isReusable);
|
|
522
|
+
}
|
|
523
|
+
return isReusable;
|
|
524
|
+
}
|
|
518
525
|
/** Returns true if a change within sourceElement is detected.
|
|
519
526
|
* @param sourceElement The Element from the source iModel
|
|
520
527
|
* @note A subclass can override this method to provide custom change detection behavior.
|
|
@@ -660,45 +667,34 @@ export class IModelTransformer extends IModelExportHandler {
|
|
|
660
667
|
return;
|
|
661
668
|
}
|
|
662
669
|
const elemClass = sourceElement.constructor;
|
|
663
|
-
const unresolvedReferences =
|
|
664
|
-
|
|
665
|
-
const idContainer = sourceElement.asAny[referenceKey];
|
|
666
|
-
const referenceType = elemClass.requiredReferenceKeyTypeMap[referenceKey];
|
|
670
|
+
const unresolvedReferences = [];
|
|
671
|
+
for (const referenceKey of elemClass.requiredReferenceKeys) {
|
|
667
672
|
// For now we just consider all required references to be elements (as they are in biscore), and do not support
|
|
668
673
|
// entities that refuse to be inserted without a different kind of entity (e.g. aspect or relationship) first being inserted
|
|
674
|
+
const referenceType = elemClass.requiredReferenceKeyTypeMap[referenceKey];
|
|
669
675
|
assert(referenceType === ConcreteEntityTypes.Element ||
|
|
670
676
|
referenceType === ConcreteEntityTypes.Model);
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
})
|
|
693
|
-
.flat();
|
|
694
|
-
if (unresolvedReferences.length > 0) {
|
|
695
|
-
for (const reference of unresolvedReferences) {
|
|
696
|
-
const processState = await this.getElemTransformState(reference);
|
|
697
|
-
if (processState.needsElemImport)
|
|
698
|
-
await this.resolveRequiredElement(sourceElement.id, reference);
|
|
699
|
-
if (processState.needsModelImport)
|
|
700
|
-
await this.exporter.exportModel(reference);
|
|
701
|
-
}
|
|
677
|
+
const referenceId = requiredReferenceId(sourceElement.asAny[referenceKey]);
|
|
678
|
+
if (referenceId === undefined ||
|
|
679
|
+
referenceId === Id64.invalid ||
|
|
680
|
+
referenceId === IModel.rootSubjectId // not allowed to directly export the root subject
|
|
681
|
+
)
|
|
682
|
+
continue;
|
|
683
|
+
// Within the same iModel, reuse existing DefinitionElements instead of copying them.
|
|
684
|
+
// Same-iModel transformations, including TemplateModelCloner, rely on this.
|
|
685
|
+
// This also replaces any existing mapping for the definition with an identity mapping.
|
|
686
|
+
if (!this.context.isBetweenIModels &&
|
|
687
|
+
this.isSameIModelReusableDefinition(referenceId))
|
|
688
|
+
this.context.remapElement(referenceId, referenceId);
|
|
689
|
+
if (!Id64.isValid(this.context.findTargetElementId(referenceId)))
|
|
690
|
+
unresolvedReferences.push(referenceId);
|
|
691
|
+
}
|
|
692
|
+
for (const reference of unresolvedReferences) {
|
|
693
|
+
const processState = await this.getElemTransformState(reference);
|
|
694
|
+
if (processState.needsElemImport)
|
|
695
|
+
await this.resolveRequiredElement(sourceElement.id, reference);
|
|
696
|
+
if (processState.needsModelImport)
|
|
697
|
+
await this.exporter.exportModel(reference);
|
|
702
698
|
}
|
|
703
699
|
}
|
|
704
700
|
/** Makes sure an element that a changed element requires is mapped in the target before the changed element is imported.
|