@itwin/imodel-transformer 2.0.0-dev.73 → 2.0.0-dev.74

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.
@@ -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":"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"}
1
+ {"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
@@ -32,42 +32,29 @@ function relationshipEndpointsKey(sourceId, targetId) {
32
32
  return `${sourceId}|${targetId}`;
33
33
  }
34
34
  /**
35
- * Apply a function to each Id64 in a supported container type of Id64s.
36
- * Currently only supports raw Id64String or RelatedElement-like objects containing an `id` property that is a Id64String,
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 mapId64(idContainer, func) {
41
- const isId64String = (arg) => {
42
- const isString = typeof arg === "string";
43
- assert(() => !isString || Id64.isValidId64(arg));
44
- return isString;
45
- };
46
- const isRelatedElem = (arg) => arg && typeof arg === "object" && "id" in arg;
47
- const results = [];
48
- // is a string if compressed or singular id64, but check for singular just checks if it's a string so do this test first
49
- if (idContainer === undefined) {
50
- // nothing
51
- }
52
- else if (isId64String(idContainer)) {
53
- results.push(func(idContainer));
54
- }
55
- else if (isRelatedElem(idContainer)) {
56
- results.push(func(idContainer.id));
57
- }
58
- else {
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 = elemClass.requiredReferenceKeys
664
- .map((referenceKey) => {
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
- return mapId64(idContainer, (id) => {
672
- if (id === Id64.invalid || id === IModel.rootSubjectId)
673
- return undefined; // not allowed to directly export the root subject
674
- if (!this.context.isBetweenIModels) {
675
- // Within the same iModel, can use existing DefinitionElements without remapping
676
- // This is relied upon by the TemplateModelCloner
677
- // TODO: extract this out to only be in the TemplateModelCloner
678
- const asDefinitionElem = this.sourceDb.elements.tryGetElement(id, DefinitionElement);
679
- if (asDefinitionElem &&
680
- !(asDefinitionElem instanceof RecipeDefinitionElement)) {
681
- this.context.remapElement(id, id);
682
- }
683
- }
684
- return id;
685
- }).filter((sourceReferenceId) => {
686
- if (sourceReferenceId === undefined)
687
- return false;
688
- const referenceInTargetId = this.context.findTargetElementId(sourceReferenceId);
689
- const isInTarget = Id64.isValid(referenceInTargetId);
690
- return !isInTarget;
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.