@itwin/imodel-transformer 2.0.0-dev.2 → 2.0.0-dev.21
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/CHANGELOG.md +9 -1
- package/lib/cjs/BranchProvenanceInitializer.d.ts.map +1 -1
- package/lib/cjs/BranchProvenanceInitializer.js +26 -20
- package/lib/cjs/BranchProvenanceInitializer.js.map +1 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +1 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.js +8 -6
- package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.d.ts +3 -0
- package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.js +103 -40
- package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
- package/lib/cjs/ElementCascadingDeleter.d.ts +3 -3
- package/lib/cjs/ElementCascadingDeleter.d.ts.map +1 -1
- package/lib/cjs/ElementCascadingDeleter.js +12 -12
- package/lib/cjs/ElementCascadingDeleter.js.map +1 -1
- package/lib/cjs/EntityUnifier.d.ts +4 -8
- package/lib/cjs/EntityUnifier.d.ts.map +1 -1
- package/lib/cjs/EntityUnifier.js +8 -25
- package/lib/cjs/EntityUnifier.js.map +1 -1
- package/lib/cjs/ExportElementAspectsStrategy.d.ts +4 -4
- package/lib/cjs/ExportElementAspectsStrategy.d.ts.map +1 -1
- package/lib/cjs/ExportElementAspectsStrategy.js +1 -1
- package/lib/cjs/ExportElementAspectsStrategy.js.map +1 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts.map +1 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js +17 -16
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +3 -3
- package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelCloneContext.js +60 -52
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelExporter.d.ts +28 -19
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +145 -119
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelImporter.d.ts +32 -24
- package/lib/cjs/IModelImporter.d.ts.map +1 -1
- package/lib/cjs/IModelImporter.js +107 -90
- package/lib/cjs/IModelImporter.js.map +1 -1
- package/lib/cjs/IModelTransformer.d.ts +117 -187
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +399 -1010
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/lib/cjs/ProvenanceManager.d.ts +165 -0
- package/lib/cjs/ProvenanceManager.d.ts.map +1 -0
- package/lib/cjs/ProvenanceManager.js +692 -0
- package/lib/cjs/ProvenanceManager.js.map +1 -0
- package/lib/cjs/SyncTypeResolver.d.ts +34 -0
- package/lib/cjs/SyncTypeResolver.d.ts.map +1 -0
- package/lib/cjs/SyncTypeResolver.js +84 -0
- package/lib/cjs/SyncTypeResolver.js.map +1 -0
- package/lib/cjs/TransformerLoggerCategory.d.ts +6 -5
- package/lib/cjs/TransformerLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/TransformerLoggerCategory.js +6 -5
- package/lib/cjs/TransformerLoggerCategory.js.map +1 -1
- package/lib/cjs/imodel-transformer.js +2 -2
- package/lib/cjs/imodel-transformer.js.map +1 -1
- package/package.json +38 -33
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { Id64Array, Id64Set, Id64String } from "@itwin/core-bentley";
|
|
2
2
|
import * as ECSchemaMetaData from "@itwin/ecschema-metadata";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Transform } from "@itwin/core-geometry";
|
|
4
|
+
import { EditTxn, Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps } from "@itwin/core-backend";
|
|
5
|
+
import { ChangesetIndexAndId, CodeSpec, ElementAspectProps, ElementProps, ExternalSourceAspectProps, FontProps, Helmert2DWithZOffset, ModelProps, Placement2d, Placement3d } from "@itwin/core-common";
|
|
5
6
|
import { ChangedInstanceIds, ExportChangesOptions, ExportSchemaResult, IModelExporter, IModelExportHandler } from "./IModelExporter";
|
|
6
7
|
import { IModelImporter, OptimizeGeometryOptions } from "./IModelImporter";
|
|
7
8
|
import { IModelCloneContext } from "./IModelCloneContext";
|
|
9
|
+
import { ProvenanceManager } from "./ProvenanceManager";
|
|
10
|
+
/** Required arguments for the [[IModelTransformer]] constructor.
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
export interface IModelTransformArgs {
|
|
14
|
+
/** The source iModel or exporter to read elements from. */
|
|
15
|
+
source: IModelDb | IModelExporter;
|
|
16
|
+
/** The target for the transformation. Pass an [[EditTxn]] to have the transformer create a default [[IModelImporter]], or pass a pre-configured [[IModelImporter]]. */
|
|
17
|
+
target: EditTxn | IModelImporter;
|
|
18
|
+
}
|
|
8
19
|
/** Options provided to the [[IModelTransformer]] constructor.
|
|
9
20
|
* @beta
|
|
10
21
|
* @note if adding an option, you must explicitly add its serialization to [[IModelTransformer.saveStateToFile]]!
|
|
@@ -114,6 +125,20 @@ export interface IModelTransformOptions {
|
|
|
114
125
|
* @default undefined
|
|
115
126
|
*/
|
|
116
127
|
argsForProcessChanges?: ProcessChangesOptions;
|
|
128
|
+
/**
|
|
129
|
+
* A flag that determines if spatial elements from the source db should be transformed if:
|
|
130
|
+
* source and target iModel GCS/CRS data is the same, but they have differing additional transforms
|
|
131
|
+
* source and target iModel ECEF locations differ
|
|
132
|
+
* @default false
|
|
133
|
+
*/
|
|
134
|
+
tryAlignGeolocation?: boolean;
|
|
135
|
+
/** An optional [[EditTxn]] for write operations on the **source** iModel.
|
|
136
|
+
* Only needed for reverse synchronization workflows where provenance must be written back to the source.
|
|
137
|
+
* If not provided, the source iModel is treated as read-only.
|
|
138
|
+
* Must be started before calling [[IModelTransformer.process]].
|
|
139
|
+
* @beta
|
|
140
|
+
*/
|
|
141
|
+
sourceEditTxn?: EditTxn;
|
|
117
142
|
}
|
|
118
143
|
/**
|
|
119
144
|
* Data type for persisting change version information within provenance Scope ExternalSourceAspect.
|
|
@@ -156,7 +181,7 @@ export interface InitOptions {
|
|
|
156
181
|
* @beta
|
|
157
182
|
*/
|
|
158
183
|
export type ProcessChangesOptions = ExportChangesOptions & {
|
|
159
|
-
/** how to
|
|
184
|
+
/** how to save changes on the target. Must call `editTxn.saveChanges()` on the target EditTxn, should not edit the iModel */
|
|
160
185
|
saveTargetChanges?: (transformer: IModelTransformer) => Promise<void>;
|
|
161
186
|
/**
|
|
162
187
|
* The forward sync 'version' to set on the scoping ESA @see ExternalSourceAspectProps upon startup, if the version property on the scoping ESA is undefined or empty string.
|
|
@@ -204,47 +229,47 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
204
229
|
readonly targetDb: IModelDb;
|
|
205
230
|
/** The IModelTransformContext for this IModelTransformer. */
|
|
206
231
|
readonly context: IModelCloneContext;
|
|
207
|
-
|
|
232
|
+
/** The transform to be applied to the placement of spatial elements
|
|
233
|
+
* This transform should be applied when:
|
|
234
|
+
* - source and target db have different ECEF locations
|
|
235
|
+
* - source and target db have matching GCS/CRS data, but differing `geographicCoordinateSystem.additionalTransform.helmert2DWithZOffset`
|
|
236
|
+
* @note for ECEF transforms, this can only be used when source and target are linearly located imodels
|
|
237
|
+
* @note for non linearly located imodels, this transform will be a linear transform derived from Helmert Transforms from the src and target iModels.
|
|
238
|
+
* @beta
|
|
239
|
+
*/
|
|
240
|
+
private _linearSpatialTransform?;
|
|
241
|
+
/** The [[EditTxn]] used for write operations on the target iModel.
|
|
242
|
+
* The caller is responsible for starting, committing or abandoning this transaction.
|
|
243
|
+
* @beta
|
|
244
|
+
*/
|
|
245
|
+
protected readonly _targetEditTxn: EditTxn;
|
|
246
|
+
/** The optional [[EditTxn]] used for write operations on the source iModel during reverse synchronization.
|
|
247
|
+
* @beta
|
|
248
|
+
*/
|
|
249
|
+
protected readonly _sourceEditTxn?: EditTxn;
|
|
250
|
+
private _syncTypeResolver;
|
|
251
|
+
protected _provenanceManager: ProvenanceManager;
|
|
208
252
|
/** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances. */
|
|
209
253
|
get targetScopeElementId(): Id64String;
|
|
210
254
|
/** a set of elements for which source provenance will be explicitly tracked by ExternalSourceAspects */
|
|
211
255
|
protected _elementsWithExplicitlyTrackedProvenance: Set<string>;
|
|
212
256
|
protected _partiallyCommittedElementIds: Id64Set;
|
|
213
257
|
protected _partiallyCommittedAspectIds: Id64Set;
|
|
214
|
-
/** the options that were used to initialize this transformer */
|
|
215
|
-
private readonly _options;
|
|
216
258
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
259
|
+
* Tracks target element IDs that were remapped by Code during the current
|
|
260
|
+
* transformation pass. Used to prevent deletion of target elements that have been remapped
|
|
261
|
+
* to a new source element in the same pass (e.g., when a source element is deleted and a
|
|
262
|
+
* new one with the same properties is added, causing a remap to the same target).
|
|
221
263
|
*/
|
|
222
|
-
private
|
|
223
|
-
static noEsaSyncDirectionErrorMessage: string;
|
|
224
|
-
/**
|
|
225
|
-
* Queries for an esa which matches the props in the provided aspectProps.
|
|
226
|
-
* @param dbToQuery db to run the query on for scope external source
|
|
227
|
-
* @param aspectProps aspectProps to search for @see ExternalSourceAspectProps
|
|
228
|
-
*/
|
|
229
|
-
static queryScopeExternalSourceAspect(dbToQuery: IModelDb, aspectProps: ExternalSourceAspectProps): {
|
|
230
|
-
aspectId: Id64String;
|
|
231
|
-
version?: string;
|
|
232
|
-
/** stringified json */
|
|
233
|
-
jsonProperties?: string;
|
|
234
|
-
} | undefined;
|
|
264
|
+
private _targetElementIdsRemappedByCode;
|
|
235
265
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
/** @see [[IModelTransformOptions.targetScopeElementId]] */
|
|
244
|
-
targetScopeElementId: Id64String): "forward" | "reverse";
|
|
245
|
-
private determineSyncType;
|
|
246
|
-
get isReverseSynchronization(): boolean;
|
|
247
|
-
get isForwardSynchronization(): boolean;
|
|
266
|
+
* Tracks target model IDs that were imported (inserted or updated) during the current
|
|
267
|
+
* transformation pass. Used to prevent deletion of target models that have been recreated
|
|
268
|
+
* in the same pass (e.g. when a partition element is recreated with a new model).
|
|
269
|
+
*/
|
|
270
|
+
private _targetModelsImportedInCurrentTransform;
|
|
271
|
+
/** the options that were used to initialize this transformer */
|
|
272
|
+
private readonly _options;
|
|
248
273
|
private _changesetRanges;
|
|
249
274
|
/**
|
|
250
275
|
* Set if the transformer is being used to perform the provenance initialization step of a fork initialization.
|
|
@@ -256,11 +281,10 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
256
281
|
/** The element aspect classes that are considered to define provenance in the iModel */
|
|
257
282
|
static get provenanceElementAspectClasses(): (typeof Entity)[];
|
|
258
283
|
/** Construct a new IModelTransformer
|
|
259
|
-
* @param
|
|
260
|
-
* @param target Specifies the target IModelImporter or the target IModelDb that will be used to construct the target IModelImporter.
|
|
284
|
+
* @param args The required arguments including source and target.
|
|
261
285
|
* @param options The options that specify how the transformation should be done.
|
|
262
286
|
*/
|
|
263
|
-
constructor(
|
|
287
|
+
constructor(args: IModelTransformArgs, options?: IModelTransformOptions);
|
|
264
288
|
/** validates that the importer set on the transformer has the same values for its shared options as the transformer.
|
|
265
289
|
* @note This expects that the importer is already set on the transformer.
|
|
266
290
|
*/
|
|
@@ -269,28 +293,6 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
269
293
|
dispose(): void;
|
|
270
294
|
/** Log current settings that affect IModelTransformer's behavior. */
|
|
271
295
|
private logSettings;
|
|
272
|
-
/** Return the IModelDb where IModelTransformer will store its provenance.
|
|
273
|
-
* @note This will be [[targetDb]] except when it is a reverse synchronization. In that case it be [[sourceDb]].
|
|
274
|
-
*/
|
|
275
|
-
get provenanceDb(): IModelDb;
|
|
276
|
-
/** Return the IModelDb where IModelTransformer looks for entities referred to by stored provenance.
|
|
277
|
-
* @note This will be [[sourceDb]] except when it is a reverse synchronization. In that case it be [[targetDb]].
|
|
278
|
-
*/
|
|
279
|
-
get provenanceSourceDb(): IModelDb;
|
|
280
|
-
/** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
|
|
281
|
-
static initElementProvenanceOptions(sourceElementId: Id64String, targetElementId: Id64String, args: {
|
|
282
|
-
sourceDb: IModelDb;
|
|
283
|
-
targetDb: IModelDb;
|
|
284
|
-
isReverseSynchronization: boolean;
|
|
285
|
-
targetScopeElementId: Id64String;
|
|
286
|
-
}): ExternalSourceAspectProps;
|
|
287
|
-
static initRelationshipProvenanceOptions(sourceRelInstanceId: Id64String, targetRelInstanceId: Id64String, args: {
|
|
288
|
-
sourceDb: IModelDb;
|
|
289
|
-
targetDb: IModelDb;
|
|
290
|
-
isReverseSynchronization: boolean;
|
|
291
|
-
targetScopeElementId: Id64String;
|
|
292
|
-
forceOldRelationshipProvenanceMethod: boolean;
|
|
293
|
-
}): ExternalSourceAspectProps;
|
|
294
296
|
/**
|
|
295
297
|
* Previously the transformer would insert provenance always pointing to the "target" relationship.
|
|
296
298
|
* It should (and now by default does) instead insert provenance pointing to the provenanceSource
|
|
@@ -299,27 +301,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
299
301
|
*/
|
|
300
302
|
private _forceOldRelationshipProvenanceMethod;
|
|
301
303
|
/** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
|
|
302
|
-
initElementProvenance(sourceElementId: Id64String, targetElementId: Id64String): ExternalSourceAspectProps
|
|
303
|
-
/** Create an ExternalSourceAspectProps in a standard way for a Relationship in an iModel --> iModel transformations.
|
|
304
|
-
* The ExternalSourceAspect is meant to be owned by the Element in the target iModel that is the `sourceId` of transformed relationship.
|
|
305
|
-
* The `identifier` property of the ExternalSourceAspect will be the ECInstanceId of the relationship in the master iModel.
|
|
306
|
-
* The ECInstanceId of the relationship in the branch iModel will be stored in the JsonProperties of the ExternalSourceAspect.
|
|
307
|
-
*/
|
|
308
|
-
private initRelationshipProvenance;
|
|
309
|
-
/** NOTE: the json properties must be converted to string before insertion */
|
|
310
|
-
private _targetScopeProvenanceProps;
|
|
311
|
-
/**
|
|
312
|
-
* Index of the changeset that the transformer was at when the transformation begins (was constructed).
|
|
313
|
-
* Used to determine at the end which changesets were part of a synchronization.
|
|
314
|
-
*/
|
|
315
|
-
private _startingChangesetIndices;
|
|
316
|
-
private _cachedSynchronizationVersion;
|
|
317
|
-
/**
|
|
318
|
-
* We cache the synchronization version to avoid querying the target scoping ESA multiple times.
|
|
319
|
-
* If the target scoping ESA is ever updated we need to clear any potentially cached sync version otherwise we will get stale values.
|
|
320
|
-
* Sets this._cachedSynchronizationVersion to undefined.
|
|
321
|
-
*/
|
|
322
|
-
private clearCachedSynchronizationVersion;
|
|
304
|
+
initElementProvenance(sourceElementId: Id64String, targetElementId: Id64String): Promise<ExternalSourceAspectProps>;
|
|
323
305
|
/** the changeset in the scoping element's source version found for this transformation
|
|
324
306
|
* @note the version depends on whether this is a reverse synchronization or not, as
|
|
325
307
|
* it is stored separately for both synchronization directions.
|
|
@@ -327,88 +309,66 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
327
309
|
* @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".
|
|
328
310
|
* @throws if the version is not found in a preexisting scope aspect and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] !== "unsafe-migrate"
|
|
329
311
|
*/
|
|
330
|
-
protected
|
|
312
|
+
protected getSynchronizationVersion(): Promise<ChangesetIndexAndId>;
|
|
331
313
|
/**
|
|
332
314
|
* @returns provenance scope aspect if it exists in the provenanceDb.
|
|
333
315
|
* Provenance scope aspect is created and inserted into provenanceDb when [[initScopeProvenance]] is invoked.
|
|
334
316
|
*/
|
|
335
|
-
protected tryGetProvenanceScopeAspect(): ExternalSourceAspect | undefined
|
|
317
|
+
protected tryGetProvenanceScopeAspect(): Promise<ExternalSourceAspect | undefined>;
|
|
336
318
|
/**
|
|
337
319
|
* Make sure there are no conflicting other scope-type external source aspects on the *target scope element*,
|
|
338
320
|
* If there are none at all, insert one, then this must be a first synchronization.
|
|
339
|
-
* @returns the last synced version (changesetId) on the target scope's external source aspect,
|
|
340
|
-
* if this was a [BriefcaseDb]($backend)
|
|
341
321
|
*/
|
|
342
|
-
protected initScopeProvenance(): void
|
|
343
|
-
/** Returns true if a change was made to the aspectProps. */
|
|
344
|
-
private handleUnsafeMigrate;
|
|
322
|
+
protected initScopeProvenance(): Promise<void>;
|
|
345
323
|
/**
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
*/
|
|
351
|
-
static forEachTrackedElement(args: {
|
|
352
|
-
provenanceSourceDb: IModelDb;
|
|
353
|
-
provenanceDb: IModelDb;
|
|
354
|
-
targetScopeElementId: Id64String;
|
|
355
|
-
isReverseSynchronization: boolean;
|
|
356
|
-
fn: (sourceElementId: Id64String, targetElementId: Id64String) => void;
|
|
357
|
-
skipPropagateChangesToRootElements: boolean;
|
|
358
|
-
}): void;
|
|
359
|
-
private forEachTrackedElement;
|
|
324
|
+
* Get the IModelDb where provenance (ExternalSourceAspects) is stored.
|
|
325
|
+
* This will be targetDb except when it is a reverse synchronization, in which case it will be sourceDb.
|
|
326
|
+
*/
|
|
327
|
+
getProvenanceDb(): Promise<IModelDb>;
|
|
360
328
|
/**
|
|
361
|
-
*
|
|
362
|
-
* The identifier on the ESA is the id of the element in the [[IModelTransformer.provenanceSourceDb]]
|
|
363
|
-
* Therefore it only makes sense to call this function when you have an id in the provenanceSourceDb.
|
|
364
|
-
* @param entityInProvenanceSourceId
|
|
365
|
-
* @returns the elementId that the ESA is stored on, esa.Element.Id
|
|
329
|
+
* Get whether this is a reverse synchronization.
|
|
366
330
|
*/
|
|
367
|
-
|
|
331
|
+
getIsReverseSynchronization(): Promise<boolean>;
|
|
368
332
|
/**
|
|
369
|
-
*
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
*
|
|
374
|
-
*/
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
private _targetClassNameToClassId;
|
|
379
|
-
private _getRelClassId;
|
|
380
|
-
private _queryElemIdByFedGuid;
|
|
333
|
+
* Get whether this is a forward synchronization.
|
|
334
|
+
*/
|
|
335
|
+
getIsForwardSynchronization(): Promise<boolean>;
|
|
336
|
+
/**
|
|
337
|
+
* Updates the synchronization version on the scope ESA.
|
|
338
|
+
*/
|
|
339
|
+
updateSynchronizationVersion({ initializeReverseSyncVersion, }?: {
|
|
340
|
+
initializeReverseSyncVersion?: boolean | undefined;
|
|
341
|
+
}): Promise<void>;
|
|
381
342
|
/** Returns `true` if *brute force* delete detections should be run.
|
|
382
343
|
* @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
|
|
383
344
|
* @note Not relevant for [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are provided and change history is known.
|
|
384
345
|
*/
|
|
385
|
-
protected shouldDetectDeletes(): boolean
|
|
386
|
-
/**
|
|
387
|
-
* Detect Element deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against Elements
|
|
388
|
-
* in the source iModel.
|
|
389
|
-
* @deprecated in 1.x. Do not use this. // FIXME<MIKE>: how to better explain this?
|
|
390
|
-
* This method is only called during [[process]] when [[IModelTransformOptions.argsForProcessChanges]] is undefined and the option
|
|
391
|
-
* [[IModelTransformOptions.forceExternalSourceAspectProvenance]] is enabled. It is not
|
|
392
|
-
* necessary when calling [[process]] with [[IModelTransformOptions.argsForProcessChanges]] defined, since changeset information is sufficient.
|
|
393
|
-
* @note you do not need to call this directly unless processing a subset of an iModel.
|
|
394
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
395
|
-
*/
|
|
396
|
-
detectElementDeletes(): Promise<void>;
|
|
346
|
+
protected shouldDetectDeletes(): Promise<boolean>;
|
|
397
347
|
/** Transform the specified sourceElement into ElementProps for the target iModel.
|
|
398
348
|
* @param sourceElement The Element from the source iModel to transform.
|
|
399
349
|
* @returns ElementProps for the target iModel.
|
|
400
350
|
* @note A subclass can override this method to provide custom transform behavior.
|
|
401
351
|
* @note This can be called more than once for an element in arbitrary order, so it should not have side-effects.
|
|
402
352
|
*/
|
|
403
|
-
onTransformElement(sourceElement: Element): ElementProps
|
|
353
|
+
onTransformElement(sourceElement: Element): Promise<ElementProps>;
|
|
354
|
+
/**
|
|
355
|
+
* Calculate the transform between two ECEF locations
|
|
356
|
+
* @param srcDb
|
|
357
|
+
* @param targetDb
|
|
358
|
+
* @returns Transform that converts relative coordinates in the source iModel to relative coordinates in the target iModel.
|
|
359
|
+
* @note This can only be used if both source and target iModels are linearly located
|
|
360
|
+
*/
|
|
361
|
+
calculateEcefTransform(): Transform | undefined;
|
|
362
|
+
static convertHelmertToTransform(helmert: Helmert2DWithZOffset | undefined): Transform;
|
|
363
|
+
calculateTransformFromHelmertTransforms(): Transform | undefined;
|
|
404
364
|
private _deletedSourceRelationshipData?;
|
|
405
365
|
/** Returns true if a change within sourceElement is detected.
|
|
406
366
|
* @param sourceElement The Element from the source iModel
|
|
407
367
|
* @note A subclass can override this method to provide custom change detection behavior.
|
|
408
368
|
*/
|
|
409
369
|
protected hasElementChanged(sourceElement: Element): boolean;
|
|
410
|
-
protected completePartiallyCommittedElements(): void
|
|
411
|
-
protected completePartiallyCommittedAspects(): void
|
|
370
|
+
protected completePartiallyCommittedElements(): Promise<void>;
|
|
371
|
+
protected completePartiallyCommittedAspects(): Promise<void>;
|
|
412
372
|
private doAllReferencesExistInTarget;
|
|
413
373
|
private assertReferenceExistsInSource;
|
|
414
374
|
/** Cause the specified Element and its child Elements (if applicable) to be exported from the source iModel and imported into the target iModel.
|
|
@@ -424,27 +384,28 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
424
384
|
/** Override of [IModelExportHandler.shouldExportElement]($transformer) that is called to determine if an element should be exported from the source iModel.
|
|
425
385
|
* @note Reaching this point means that the element has passed the standard exclusion checks in IModelExporter.
|
|
426
386
|
*/
|
|
427
|
-
shouldExportElement(_sourceElement: Element): boolean
|
|
387
|
+
shouldExportElement(_sourceElement: Element): Promise<boolean>;
|
|
428
388
|
/**
|
|
429
389
|
* If they haven't been already, import all of the required references
|
|
430
390
|
* @internal do not call, override or implement this, it will be removed
|
|
431
391
|
*/
|
|
432
392
|
preExportElement(sourceElement: Element): Promise<void>;
|
|
433
393
|
private getElemTransformState;
|
|
394
|
+
private queryElementIdByCode;
|
|
434
395
|
/** Override of [IModelExportHandler.onExportElement]($transformer) that imports an element into the target iModel when it is exported from the source iModel.
|
|
435
396
|
* This override calls [[onTransformElement]] and then [IModelImporter.importElement]($transformer) to update the target iModel.
|
|
436
397
|
*/
|
|
437
|
-
onExportElement(sourceElement: Element): void
|
|
398
|
+
onExportElement(sourceElement: Element): Promise<void>;
|
|
438
399
|
/** Override of [IModelExportHandler.onDeleteElement]($transformer) that is called when [IModelExporter]($transformer) detects that an Element has been deleted from the source iModel.
|
|
439
400
|
* This override propagates the delete to the target iModel via [IModelImporter.deleteElement]($transformer).
|
|
440
401
|
*/
|
|
441
|
-
onDeleteElement(sourceElementId: Id64String): void
|
|
402
|
+
onDeleteElement(sourceElementId: Id64String): Promise<void>;
|
|
442
403
|
/** Override of [IModelExportHandler.onExportModel]($transformer) that is called when a Model should be exported from the source iModel.
|
|
443
404
|
* This override calls [[onTransformModel]] and then [IModelImporter.importModel]($transformer) to update the target iModel.
|
|
444
405
|
*/
|
|
445
|
-
onExportModel(sourceModel: Model): void
|
|
406
|
+
onExportModel(sourceModel: Model): Promise<void>;
|
|
446
407
|
/** Override of [IModelExportHandler.onDeleteModel]($transformer) that is called when [IModelExporter]($transformer) detects that a [Model]($backend) has been deleted from the source iModel. */
|
|
447
|
-
onDeleteModel(sourceModelId: Id64String): void
|
|
408
|
+
onDeleteModel(sourceModelId: Id64String): Promise<void>;
|
|
448
409
|
/** Schedule modeled partition deletion */
|
|
449
410
|
private scheduleModeledPartitionDeletion;
|
|
450
411
|
/** Cause the model container, contents, and sub-models to be exported from the source iModel and imported into the target iModel.
|
|
@@ -468,27 +429,6 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
468
429
|
* @note A subclass can override this method to provide custom transform behavior.
|
|
469
430
|
*/
|
|
470
431
|
onTransformModel(sourceModel: Model, targetModeledElementId: Id64String): ModelProps;
|
|
471
|
-
/**
|
|
472
|
-
* Called at the end of a transformation,
|
|
473
|
-
* updates the target scope element to say that transformation up through the
|
|
474
|
-
* source's changeset has been performed. Also stores all changesets that occurred
|
|
475
|
-
* during the transformation as "pending synchronization changeset indices" @see TargetScopeProvenanceJsonProps
|
|
476
|
-
*
|
|
477
|
-
* You generally should not call this function yourself and use [[process]] with [[IModelTransformOptions.argsForProcessChanges]] provided instead.
|
|
478
|
-
* It is public for unsupported use cases of custom synchronization transforms.
|
|
479
|
-
* @note If [[IModelTransformOptions.argsForProcessChanges]] is not defined in this transformation, this function will return early without updating the sync version,
|
|
480
|
-
* unless the `initializeReverseSyncVersion` option is set to `true`
|
|
481
|
-
*
|
|
482
|
-
* The `initializeReverseSyncVersion` is added to set the reverse synchronization version during a forward synchronization.
|
|
483
|
-
* When set to `true`, it saves the reverse sync version as the current changeset of the targetDb. This is typically used for the first transformation between a master and branch iModel.
|
|
484
|
-
* Setting `initializeReverseSyncVersion` to `true` has the effect of making it so any changesets in the branch iModel at the time of the first transformation will be ignored during any future reverse synchronizations from the branch to the master iModel.
|
|
485
|
-
*
|
|
486
|
-
* Note that typically, the reverseSyncVersion is saved as the last changeset merged from the branch into master.
|
|
487
|
-
* Setting initializeReverseSyncVersion to true during a forward transformation could overwrite this correct reverseSyncVersion and should only be done during the first transformation between a master and branch iModel.
|
|
488
|
-
*/
|
|
489
|
-
updateSynchronizationVersion({ initializeReverseSyncVersion, }?: {
|
|
490
|
-
initializeReverseSyncVersion?: boolean | undefined;
|
|
491
|
-
}): void;
|
|
492
432
|
private finalizeTransformation;
|
|
493
433
|
/** Imports all relationships that subclass from the specified base class.
|
|
494
434
|
* @param baseRelClassFullName The specified base relationship class.
|
|
@@ -498,51 +438,44 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
498
438
|
/** Override of [IModelExportHandler.shouldExportRelationship]($transformer) that is called to determine if a [Relationship]($backend) should be exported.
|
|
499
439
|
* @note Reaching this point means that the relationship has passed the standard exclusion checks in [IModelExporter]($transformer).
|
|
500
440
|
*/
|
|
501
|
-
shouldExportRelationship(_sourceRelationship: Relationship): boolean
|
|
441
|
+
shouldExportRelationship(_sourceRelationship: Relationship): Promise<boolean>;
|
|
502
442
|
/** Override of [IModelExportHandler.onExportRelationship]($transformer) that imports a relationship into the target iModel when it is exported from the source iModel.
|
|
503
443
|
* This override calls [[onTransformRelationship]] and then [IModelImporter.importRelationship]($transformer) to update the target iModel.
|
|
504
444
|
*/
|
|
505
|
-
onExportRelationship(sourceRelationship: Relationship): void
|
|
445
|
+
onExportRelationship(sourceRelationship: Relationship): Promise<void>;
|
|
506
446
|
/** Override of [IModelExportHandler.onDeleteRelationship]($transformer) that is called when [IModelExporter]($transformer) detects that a [Relationship]($backend) has been deleted from the source iModel.
|
|
507
447
|
* This override propagates the delete to the target iModel via [IModelImporter.deleteRelationship]($transformer).
|
|
508
448
|
*/
|
|
509
|
-
onDeleteRelationship(sourceRelInstanceId: Id64String): void
|
|
449
|
+
onDeleteRelationship(sourceRelInstanceId: Id64String): Promise<void>;
|
|
510
450
|
private _yieldManager;
|
|
511
|
-
/** Detect Relationship deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against relationships in the source iModel.
|
|
512
|
-
* @deprecated in 1.x. Don't use this anymore
|
|
513
|
-
* @see [[process]] with [[IModelTransformOptions.argsForProcessChanges]] provided.
|
|
514
|
-
* @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.
|
|
515
|
-
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
516
|
-
*/
|
|
517
|
-
detectRelationshipDeletes(): Promise<void>;
|
|
518
451
|
/** Transform the specified sourceRelationship into RelationshipProps for the target iModel.
|
|
519
452
|
* @param sourceRelationship The Relationship from the source iModel to be transformed.
|
|
520
453
|
* @returns RelationshipProps for the target iModel.
|
|
521
454
|
* @note A subclass can override this method to provide custom transform behavior.
|
|
522
455
|
*/
|
|
523
456
|
protected onTransformRelationship(sourceRelationship: Relationship): RelationshipProps;
|
|
524
|
-
shouldExportElementAspect(aspect: ElementAspect): boolean
|
|
457
|
+
shouldExportElementAspect(aspect: ElementAspect): Promise<boolean>;
|
|
525
458
|
/** Override of [IModelExportHandler.onExportElementUniqueAspect]($transformer) that imports an ElementUniqueAspect into the target iModel when it is exported from the source iModel.
|
|
526
459
|
* This override calls [[onTransformElementAspect]] and then [IModelImporter.importElementUniqueAspect]($transformer) to update the target iModel.
|
|
527
460
|
*/
|
|
528
|
-
onExportElementUniqueAspect(sourceAspect: ElementUniqueAspect): void
|
|
461
|
+
onExportElementUniqueAspect(sourceAspect: ElementUniqueAspect): Promise<void>;
|
|
529
462
|
/** Override of [IModelExportHandler.onExportElementMultiAspects]($transformer) that imports ElementMultiAspects into the target iModel when they are exported from the source iModel.
|
|
530
463
|
* This override calls [[onTransformElementAspect]] for each ElementMultiAspect and then [IModelImporter.importElementMultiAspects]($transformer) to update the target iModel.
|
|
531
464
|
* @note ElementMultiAspects are handled as a group to make it easier to differentiate between insert, update, and delete.
|
|
532
465
|
*/
|
|
533
|
-
onExportElementMultiAspects(sourceAspects: ElementMultiAspect[]): void
|
|
466
|
+
onExportElementMultiAspects(sourceAspects: ElementMultiAspect[]): Promise<void>;
|
|
534
467
|
/** Transform the specified sourceElementAspect into ElementAspectProps for the target iModel.
|
|
535
468
|
* @param sourceElementAspect The ElementAspect from the source iModel to be transformed.
|
|
536
469
|
* @returns ElementAspectProps for the target iModel.
|
|
537
470
|
* @note A subclass can override this method to provide custom transform behavior.
|
|
538
471
|
*/
|
|
539
|
-
protected onTransformElementAspect(sourceElementAspect: ElementAspect): ElementAspectProps
|
|
472
|
+
protected onTransformElementAspect(sourceElementAspect: ElementAspect): Promise<ElementAspectProps>;
|
|
540
473
|
/** The directory where schemas will be exported, a random temporary directory */
|
|
541
474
|
protected _schemaExportDir: string;
|
|
542
475
|
/** Override of [IModelExportHandler.shouldExportSchema]($transformer) that is called to determine if a schema should be exported
|
|
543
476
|
* @note the default behavior doesn't import schemas older than those already in the target
|
|
544
477
|
*/
|
|
545
|
-
shouldExportSchema(schemaKey: ECSchemaMetaData.SchemaKey): boolean
|
|
478
|
+
shouldExportSchema(schemaKey: ECSchemaMetaData.SchemaKey): Promise<boolean>;
|
|
546
479
|
private _longNamedSchemasMap;
|
|
547
480
|
/** Override of [IModelExportHandler.onExportSchema]($transformer) that serializes a schema to disk for [[processSchemas]] to import into
|
|
548
481
|
* the target iModel when it is exported from the source iModel.
|
|
@@ -564,7 +497,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
564
497
|
*/
|
|
565
498
|
processFonts(): Promise<void>;
|
|
566
499
|
/** Override of [IModelExportHandler.onExportFont]($transformer) that imports a font into the target iModel when it is exported from the source iModel. */
|
|
567
|
-
onExportFont(font: FontProps, _isUpdate: boolean | undefined): void
|
|
500
|
+
onExportFont(font: FontProps, _isUpdate: boolean | undefined): Promise<void>;
|
|
568
501
|
/** Cause all CodeSpecs to be exported from the source iModel and imported into the target iModel.
|
|
569
502
|
* @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
|
|
570
503
|
*/
|
|
@@ -576,9 +509,9 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
576
509
|
/** Override of [IModelExportHandler.shouldExportCodeSpec]($transformer) that is called to determine if a CodeSpec should be exported from the source iModel.
|
|
577
510
|
* @note Reaching this point means that the CodeSpec has passed the standard exclusion checks in [IModelExporter]($transformer).
|
|
578
511
|
*/
|
|
579
|
-
shouldExportCodeSpec(_sourceCodeSpec: CodeSpec): boolean
|
|
512
|
+
shouldExportCodeSpec(_sourceCodeSpec: CodeSpec): Promise<boolean>;
|
|
580
513
|
/** Override of [IModelExportHandler.onExportCodeSpec]($transformer) that imports a CodeSpec into the target iModel when it is exported from the source iModel. */
|
|
581
|
-
onExportCodeSpec(sourceCodeSpec: CodeSpec): void
|
|
514
|
+
onExportCodeSpec(sourceCodeSpec: CodeSpec): Promise<void>;
|
|
582
515
|
/** Recursively import all Elements and sub-Models that descend from the specified Subject */
|
|
583
516
|
processSubject(sourceSubjectId: Id64String, targetSubjectId: Id64String): Promise<void>;
|
|
584
517
|
/** state to prevent reinitialization, @see [[initialize]] */
|
|
@@ -621,6 +554,8 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
621
554
|
*/
|
|
622
555
|
private processDeletedOp;
|
|
623
556
|
private _tryInitChangesetData;
|
|
557
|
+
/** Asserts that the EditTxn is active before any write operations. */
|
|
558
|
+
private assertEditTxnActive;
|
|
624
559
|
/**
|
|
625
560
|
* The behavior of process is influenced by [[IModelTransformOptions.argsForProcessChanges]] being defined or not defined during construction passed of the IModelTransformer.
|
|
626
561
|
* @section When argsForProcessChanges are defined:
|
|
@@ -649,9 +584,6 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
649
584
|
* @note [[processSchemas]] is not called automatically since the target iModel may want a different collection of schemas.
|
|
650
585
|
*/
|
|
651
586
|
private processAll;
|
|
652
|
-
/** previous provenance, either a federation guid, a `${sourceFedGuid}/${targetFedGuid}` pair, or required aspect props */
|
|
653
|
-
private _lastProvenanceEntityInfo;
|
|
654
|
-
private markLastProvenance;
|
|
655
587
|
/** Export changes from the source iModel and import the transformed entities into the target iModel.
|
|
656
588
|
* Inserts, updates, and deletes are determined by inspecting the changeset(s).
|
|
657
589
|
* @note the transformer assumes that you saveChanges after processing changes. You should not
|
|
@@ -682,12 +614,10 @@ export declare class TemplateModelCloner extends IModelTransformer {
|
|
|
682
614
|
/** Accumulates the mapping of sourceElementIds to targetElementIds from the elements in the template model that were cloned. */
|
|
683
615
|
private _sourceIdToTargetIdMap?;
|
|
684
616
|
/** Construct a new TemplateModelCloner
|
|
685
|
-
* @param
|
|
686
|
-
* @param targetDb Optionally specify the target IModelDb where the cloned template will be inserted.
|
|
687
|
-
* Typically this is left unspecified, and the default is to use the sourceDb as the target
|
|
617
|
+
* @param editTxn The [[EditTxn]] to use for all read and write operations. The source and target db are both derived from `editTxn.iModel`. Must be started before constructing.
|
|
688
618
|
* @note The expectation is that the template definitions are within the same iModel where instances will be placed.
|
|
689
619
|
*/
|
|
690
|
-
constructor(
|
|
620
|
+
constructor(editTxn: EditTxn);
|
|
691
621
|
/** Place a template from the sourceDb at the specified placement in the target model within the targetDb.
|
|
692
622
|
* @param sourceTemplateModelId The Id of the template model in the sourceDb
|
|
693
623
|
* @param targetModelId The Id of the target model (must be a subclass of GeometricModel3d) where the cloned component will be inserted.
|
|
@@ -705,6 +635,6 @@ export declare class TemplateModelCloner extends IModelTransformer {
|
|
|
705
635
|
*/
|
|
706
636
|
placeTemplate2d(sourceTemplateModelId: Id64String, targetModelId: Id64String, placement: Placement2d): Promise<Map<Id64String, Id64String>>;
|
|
707
637
|
/** Cloning from a template requires this override of onTransformElement. */
|
|
708
|
-
onTransformElement(sourceElement: Element): ElementProps
|
|
638
|
+
onTransformElement(sourceElement: Element): Promise<ElementProps>;
|
|
709
639
|
}
|
|
710
640
|
//# sourceMappingURL=IModelTransformer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,
|
|
1
|
+
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
|