@itwin/imodel-transformer 2.0.0-dev.58 → 2.0.0-dev.59

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.
@@ -403,6 +403,16 @@ export declare class IModelTransformer extends IModelExportHandler {
403
403
  * @internal do not call, override or implement this, it will be removed
404
404
  */
405
405
  preExportElement(sourceElement: Element): Promise<void>;
406
+ /** Makes sure an element that a changed element requires is mapped in the target before the changed element is imported.
407
+ * A changed required element is exported. An unchanged one is only looked up in the target: change processing does not insert it, and exporting it would visit its children, which can include the element that requires it.
408
+ * @throws [[IModelTransformerError.DependencyMappingMissing]] if the required element is still not mapped.
409
+ */
410
+ private resolveRequiredElement;
411
+ /** Finds the existing target element for a source element by FederationGuid, then by Code, and records the mapping.
412
+ * @note Updates `targetElementProps.code` as the Code lookup requires.
413
+ * @returns the target element's id, or `Id64.invalid` if none is found.
414
+ */
415
+ private findExistingTargetElement;
406
416
  private getElemTransformState;
407
417
  private queryElementIdByCode;
408
418
  /** Override of [IModelExportHandler.onExportElement]($transformer) that imports an element into the target iModel when it is exported from the source 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":"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"}
@@ -710,14 +710,88 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
710
710
  if (unresolvedReferences.length > 0) {
711
711
  for (const reference of unresolvedReferences) {
712
712
  const processState = await this.getElemTransformState(reference);
713
- // must export element first
714
713
  if (processState.needsElemImport)
715
- await this.exporter.exportElement(reference);
714
+ await this.resolveRequiredElement(sourceElement.id, reference);
716
715
  if (processState.needsModelImport)
717
716
  await this.exporter.exportModel(reference);
718
717
  }
719
718
  }
720
719
  }
720
+ /** Makes sure an element that a changed element requires is mapped in the target before the changed element is imported.
721
+ * A changed required element is exported. An unchanged one is only looked up in the target: change processing does not insert it, and exporting it would visit its children, which can include the element that requires it.
722
+ * @throws [[IModelTransformerError.DependencyMappingMissing]] if the required element is still not mapped.
723
+ */
724
+ async resolveRequiredElement(elementId, referenceId) {
725
+ const changes = this.exporter.sourceDbChanges;
726
+ const referenceChanged = changes === undefined ||
727
+ changes.element.insertIds.has(referenceId) ||
728
+ changes.element.updateIds.has(referenceId);
729
+ let accepted = true;
730
+ if (referenceChanged) {
731
+ await this.exporter.exportElement(referenceId);
732
+ }
733
+ else {
734
+ const reference = this.sourceDb.elements.getElement({
735
+ id: referenceId,
736
+ wantGeometry: this.exporter.wantGeometry,
737
+ wantBRepData: this.exporter.wantGeometry,
738
+ });
739
+ // A required parent reached by the traversal has already been filtered.
740
+ accepted =
741
+ this.exporter.getUnchangedAncestorFilterResult(referenceId) ??
742
+ (await this.exporter.shouldExportElement(reference));
743
+ if (accepted)
744
+ await this.findExistingTargetElement(reference, await this.onTransformElement(reference));
745
+ }
746
+ if (core_bentley_1.Id64.isValid(this.context.findTargetElementId(referenceId)))
747
+ return;
748
+ let message;
749
+ if (referenceChanged)
750
+ message = `Element ${elementId} requires element ${referenceId}, which was not exported because the export filter rejects it or one of its ancestors. Accept element ${referenceId} and its ancestors, or reject element ${elementId}.`;
751
+ else if (accepted)
752
+ message = `Element ${elementId} requires unchanged element ${referenceId}, which is not in the target iModel. Change processing does not insert unchanged elements; to insert element ${referenceId}, add it in addCustomChanges.`;
753
+ else
754
+ message = `Element ${elementId} requires element ${referenceId}, which the export filter rejects. Accept element ${referenceId}, or reject element ${elementId} and every element that requires it.`;
755
+ core_bentley_1.ITwinError.throwError({
756
+ iTwinErrorId: {
757
+ scope: IModelTransformerError_1.IModelTransformerErrorScope,
758
+ key: IModelTransformerError_1.IModelTransformerError.DependencyMappingMissing,
759
+ },
760
+ message,
761
+ });
762
+ }
763
+ /** Finds the existing target element for a source element by FederationGuid, then by Code, and records the mapping.
764
+ * @note Updates `targetElementProps.code` as the Code lookup requires.
765
+ * @returns the target element's id, or `Id64.invalid` if none is found.
766
+ */
767
+ async findExistingTargetElement(sourceElement, targetElementProps) {
768
+ if (this.context.isBetweenIModels &&
769
+ sourceElement.federationGuid !== undefined) {
770
+ const targetElementId = this.targetDb.elements.getIdFromFederationGuid(sourceElement.federationGuid);
771
+ if (targetElementId !== undefined && core_bentley_1.Id64.isValid(targetElementId)) {
772
+ this.context.remapElement(sourceElement.id, targetElementId); // record that the targetElement was found
773
+ return targetElementId;
774
+ }
775
+ }
776
+ // check by Code as long as the CodeScope is valid (invalid means a missing reference so not worth checking)
777
+ if (!core_bentley_1.Id64.isValidId64(targetElementProps.code.scope))
778
+ return core_bentley_1.Id64.invalid;
779
+ // respond the same way to undefined code value as the @see Code class, but don't use that class because it trims
780
+ // whitespace from the value, and there are iModels out there with untrimmed whitespace that we ought not to trim
781
+ targetElementProps.code.value = targetElementProps.code.value ?? "";
782
+ const maybeTargetElementId = await this.queryElementIdByCode(this.targetDb, targetElementProps.code);
783
+ if (maybeTargetElementId === undefined)
784
+ return core_bentley_1.Id64.invalid;
785
+ const maybeTargetElem = this.targetDb.elements.getElement(maybeTargetElementId);
786
+ if (maybeTargetElem.classFullName !== targetElementProps.classFullName) {
787
+ targetElementProps.code = core_common_1.Code.createEmpty(); // clear out invalid code
788
+ return core_bentley_1.Id64.invalid;
789
+ }
790
+ // ensure code remapping doesn't change the target class
791
+ this.context.remapElement(sourceElement.id, maybeTargetElementId); // record that the targetElement was found by Code
792
+ this._targetElementIdsRemappedByCode.add(maybeTargetElementId);
793
+ return maybeTargetElementId;
794
+ }
721
795
  async getElemTransformState(elementId) {
722
796
  const dbHasModel = async (db, id) => {
723
797
  const maybeModelId = core_backend_1.EntityReferences.fromEntityType(id, core_common_1.ConcreteEntityTypes.Model);
@@ -777,35 +851,9 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
777
851
  targetElementId = this.context.findTargetElementId(sourceElement.id);
778
852
  targetElementProps = await this.onTransformElement(sourceElement);
779
853
  }
780
- // if an existing remapping was not yet found, check by FederationGuid
781
- if (this.context.isBetweenIModels &&
782
- !core_bentley_1.Id64.isValid(targetElementId) &&
783
- sourceElement.federationGuid !== undefined) {
784
- targetElementId =
785
- this.targetDb.elements.getIdFromFederationGuid(sourceElement.federationGuid) ?? core_bentley_1.Id64.invalid;
786
- if (core_bentley_1.Id64.isValid(targetElementId))
787
- this.context.remapElement(sourceElement.id, targetElementId); // record that the targetElement was found
788
- }
789
- // if an existing remapping was not yet found, check by Code as long as the CodeScope is valid (invalid means a missing reference so not worth checking)
790
- if (!core_bentley_1.Id64.isValidId64(targetElementId) &&
791
- core_bentley_1.Id64.isValidId64(targetElementProps.code.scope)) {
792
- // respond the same way to undefined code value as the @see Code class, but don't use that class because it trims
793
- // whitespace from the value, and there are iModels out there with untrimmed whitespace that we ought not to trim
794
- targetElementProps.code.value = targetElementProps.code.value ?? "";
795
- const maybeTargetElementId = await this.queryElementIdByCode(this.targetDb, targetElementProps.code);
796
- if (undefined !== maybeTargetElementId) {
797
- const maybeTargetElem = this.targetDb.elements.getElement(maybeTargetElementId);
798
- if (maybeTargetElem.classFullName === targetElementProps.classFullName) {
799
- // ensure code remapping doesn't change the target class
800
- targetElementId = maybeTargetElementId;
801
- this.context.remapElement(sourceElement.id, targetElementId); // record that the targetElement was found by Code
802
- this._targetElementIdsRemappedByCode.add(targetElementId);
803
- }
804
- else {
805
- targetElementProps.code = core_common_1.Code.createEmpty(); // clear out invalid code
806
- }
807
- }
808
- }
854
+ // if an existing remapping was not yet found, check by FederationGuid and then by Code
855
+ if (!core_bentley_1.Id64.isValid(targetElementId))
856
+ targetElementId = await this.findExistingTargetElement(sourceElement, targetElementProps);
809
857
  if (!this.hasElementChanged(sourceElement)) {
810
858
  core_bentley_1.Logger.logTrace(loggerCategory, `Skipping unchanged element (${sourceElement.id}, ${sourceElement.getDisplayLabel()}).`);
811
859
  return;