@finos/legend-graph 32.0.6 → 32.0.7
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/graph/Core_HashUtils.d.ts +2 -0
- package/lib/graph/Core_HashUtils.d.ts.map +1 -1
- package/lib/graph/Core_HashUtils.js +2 -0
- package/lib/graph/Core_HashUtils.js.map +1 -1
- package/lib/graph/helpers/DomainHelper.d.ts +3 -1
- package/lib/graph/helpers/DomainHelper.d.ts.map +1 -1
- package/lib/graph/helpers/DomainHelper.js +8 -2
- package/lib/graph/helpers/DomainHelper.js.map +1 -1
- package/lib/graph/helpers/PureLanguageHelper.d.ts +2 -0
- package/lib/graph/helpers/PureLanguageHelper.d.ts.map +1 -1
- package/lib/graph/helpers/PureLanguageHelper.js +7 -1
- package/lib/graph/helpers/PureLanguageHelper.js.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/function/ConcreteFunctionDefinition.d.ts +3 -4
- package/lib/graph/metamodel/pure/packageableElements/function/ConcreteFunctionDefinition.d.ts.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/function/ConcreteFunctionDefinition.js +1 -1
- package/lib/graph/metamodel/pure/packageableElements/function/ConcreteFunctionDefinition.js.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/PropertyMapping.d.ts +2 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/PropertyMapping.d.ts.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/PropertyMapping.js.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/SetImplementation.d.ts +2 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/SetImplementation.d.ts.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/SetImplementation.js +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/SetImplementation.js.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.d.ts +40 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.d.ts.map +1 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.js +47 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.js.map +1 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.d.ts +28 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.d.ts.map +1 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.js +51 -0
- package/lib/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.js.map +1 -0
- package/lib/graph-manager/action/changeDetection/DSL_Mapping_ObserverHelper.d.ts.map +1 -1
- package/lib/graph-manager/action/changeDetection/DSL_Mapping_ObserverHelper.js +6 -0
- package/lib/graph-manager/action/changeDetection/DSL_Mapping_ObserverHelper.js.map +1 -1
- package/lib/graph-manager/action/changeDetection/DomainObserverHelper.js +1 -1
- package/lib/graph-manager/action/changeDetection/DomainObserverHelper.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_ClassMapping.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_PropertyMapping.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_PropertyMapping.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_PropertyMapping.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.d.ts +26 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.js +48 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.d.ts +38 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.js +47 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DomainTransformer.d.ts +3 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DomainTransformer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DomainTransformer.js +7 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DomainTransformer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js +39 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingFirstPassBuilder.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingFirstPassBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingFirstPassBuilder.js +6 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingFirstPassBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingSecondPassBuilder.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingSecondPassBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingSecondPassBuilder.js +16 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingSecondPassBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.js +3 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js +2 -2
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.d.ts +3 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.js +9 -2
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.js +38 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_ValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_ValueSpecificationBuilderHelper.js +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_ValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js +38 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
- package/src/graph/Core_HashUtils.ts +2 -0
- package/src/graph/helpers/DomainHelper.ts +13 -3
- package/src/graph/helpers/PureLanguageHelper.ts +13 -3
- package/src/graph/metamodel/pure/packageableElements/function/ConcreteFunctionDefinition.ts +4 -5
- package/src/graph/metamodel/pure/packageableElements/mapping/PropertyMapping.ts +4 -0
- package/src/graph/metamodel/pure/packageableElements/mapping/SetImplementation.ts +5 -1
- package/src/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.ts +58 -0
- package/src/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.ts +72 -0
- package/src/graph-manager/action/changeDetection/DSL_Mapping_ObserverHelper.ts +14 -0
- package/src/graph-manager/action/changeDetection/DomainObserverHelper.ts +1 -1
- package/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_ClassMapping.ts +4 -0
- package/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_PropertyMapping.ts +4 -0
- package/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.ts +60 -0
- package/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.ts +57 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DomainTransformer.ts +16 -3
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts +71 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingFirstPassBuilder.ts +18 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ClassMappingSecondPassBuilder.ts +46 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.ts +6 -1
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.ts +3 -6
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.ts +20 -1
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.ts +91 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_ValueSpecificationBuilderHelper.ts +1 -3
- package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.ts +59 -0
- package/src/index.ts +1 -0
- package/tsconfig.json +4 -0
|
@@ -67,6 +67,9 @@ import {
|
|
|
67
67
|
import type { DSL_Mapping_PureProtocolProcessorPlugin_Extension } from '../../../../extensions/DSL_Mapping_PureProtocolProcessorPlugin_Extension.js';
|
|
68
68
|
import type { V1_MergeOperationClassMapping } from '../../../model/packageableElements/mapping/V1_MergeOperationClassMapping.js';
|
|
69
69
|
import type { V1_INTERNAL__UnknownClassMapping } from '../../../model/packageableElements/mapping/V1_INTERNAL__UnknownClassMapping.js';
|
|
70
|
+
import type { V1_RelationFunctionClassMapping } from '../../../model/packageableElements/mapping/V1_RelationFunctionClassMapping.js';
|
|
71
|
+
import { RelationFunctionInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.js';
|
|
72
|
+
import { generateFunctionPrettyName } from '../../../../../../../graph/helpers/PureLanguageHelper.js';
|
|
70
73
|
|
|
71
74
|
export class V1_ClassMappingSecondPassBuilder
|
|
72
75
|
implements V1_ClassMappingVisitor<void>
|
|
@@ -365,4 +368,47 @@ export class V1_ClassMappingSecondPassBuilder
|
|
|
365
368
|
|
|
366
369
|
return aggragetionAwareInstanceSetImplementation;
|
|
367
370
|
}
|
|
371
|
+
|
|
372
|
+
visit_RelationFunctionClassMapping(
|
|
373
|
+
classMapping: V1_RelationFunctionClassMapping,
|
|
374
|
+
): SetImplementation {
|
|
375
|
+
assertNonEmptyString(
|
|
376
|
+
classMapping.class,
|
|
377
|
+
`Relation function class mapping 'class' field is missing or empty`,
|
|
378
|
+
);
|
|
379
|
+
const relationFunctionInstanceSetImplementation = guaranteeType(
|
|
380
|
+
getOwnClassMappingById(
|
|
381
|
+
this.parent,
|
|
382
|
+
V1_getInferredClassMappingId(
|
|
383
|
+
this.context.resolveClass(classMapping.class).value,
|
|
384
|
+
classMapping,
|
|
385
|
+
).value,
|
|
386
|
+
),
|
|
387
|
+
RelationFunctionInstanceSetImplementation,
|
|
388
|
+
);
|
|
389
|
+
relationFunctionInstanceSetImplementation.relationFunction =
|
|
390
|
+
guaranteeNonNullable(
|
|
391
|
+
this.context.graph.functions.find(
|
|
392
|
+
(fn) =>
|
|
393
|
+
generateFunctionPrettyName(fn, {
|
|
394
|
+
fullPath: true,
|
|
395
|
+
spacing: false,
|
|
396
|
+
notIncludeParamName: true,
|
|
397
|
+
}).replaceAll(/\s/gu, '') ===
|
|
398
|
+
classMapping.relationFunction.path.replaceAll(/\s/gu, ''),
|
|
399
|
+
),
|
|
400
|
+
);
|
|
401
|
+
relationFunctionInstanceSetImplementation.propertyMappings =
|
|
402
|
+
classMapping.propertyMappings.map((propertyMapping) =>
|
|
403
|
+
propertyMapping.accept_PropertyMappingVisitor(
|
|
404
|
+
new V1_PropertyMappingBuilder(
|
|
405
|
+
this.context,
|
|
406
|
+
relationFunctionInstanceSetImplementation,
|
|
407
|
+
relationFunctionInstanceSetImplementation,
|
|
408
|
+
getAllEnumerationMappings(this.parent),
|
|
409
|
+
),
|
|
410
|
+
),
|
|
411
|
+
);
|
|
412
|
+
return relationFunctionInstanceSetImplementation;
|
|
413
|
+
}
|
|
368
414
|
}
|
package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.ts
CHANGED
|
@@ -81,6 +81,8 @@ import { INTERNAL__UnknownElement } from '../../../../../../../graph/metamodel/p
|
|
|
81
81
|
import type { V1_HostedService } from '../../../model/packageableElements/function/V1_HostedService.js';
|
|
82
82
|
import { HostedService } from '../../../../../../../graph/metamodel/pure/packageableElements/function/HostedService.js';
|
|
83
83
|
import { V1_buildFunctionActivatorActions } from './helpers/V1_LegendLambdaHelper.js';
|
|
84
|
+
import { GenericTypeImplicitReference } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/GenericTypeReference.js';
|
|
85
|
+
import { GenericType } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/GenericType.js';
|
|
84
86
|
|
|
85
87
|
export class V1_ElementFirstPassBuilder
|
|
86
88
|
implements V1_PackageableElementVisitor<PackageableElement>
|
|
@@ -438,7 +440,10 @@ export class V1_ElementFirstPassBuilder
|
|
|
438
440
|
const func = new ConcreteFunctionDefinition(
|
|
439
441
|
name,
|
|
440
442
|
// This is just a stub to fill in when we first create the function
|
|
441
|
-
|
|
443
|
+
GenericTypeImplicitReference.create(
|
|
444
|
+
PackageableElementImplicitReference.create(PrimitiveType.STRING, ''),
|
|
445
|
+
new GenericType(PrimitiveType.STRING),
|
|
446
|
+
),
|
|
442
447
|
Multiplicity.ZERO_MANY,
|
|
443
448
|
);
|
|
444
449
|
const path = V1_buildFullPath(element.package, name);
|
|
@@ -86,10 +86,7 @@ import { V1_buildEmbeddedData } from './helpers/V1_DataElementBuilderHelper.js';
|
|
|
86
86
|
import { V1_buildTestSuite } from './helpers/V1_TestBuilderHelper.js';
|
|
87
87
|
import { ServiceTestSuite } from '../../../../../../../graph/metamodel/pure/packageableElements/service/ServiceTestSuite.js';
|
|
88
88
|
import { V1_DataElementReference } from '../../../model/data/V1_EmbeddedData.js';
|
|
89
|
-
import {
|
|
90
|
-
V1_buildFunctionSignature,
|
|
91
|
-
V1_getGenericTypeFullPath,
|
|
92
|
-
} from '../../../helpers/V1_DomainHelper.js';
|
|
89
|
+
import { V1_buildFunctionSignature } from '../../../helpers/V1_DomainHelper.js';
|
|
93
90
|
import { getFunctionName } from '../../../../../../../graph/helpers/DomainHelper.js';
|
|
94
91
|
import { GraphBuilderError } from '../../../../../../GraphManagerUtils.js';
|
|
95
92
|
import { PostValidation } from '../../../../../../../graph/metamodel/pure/packageableElements/service/PostValidation.js';
|
|
@@ -371,8 +368,8 @@ export class V1_ElementSecondPassBuilder
|
|
|
371
368
|
const func = this.context.currentSubGraph.getOwnFunction(
|
|
372
369
|
V1_buildFullPath(protocol.package, V1_buildFunctionSignature(protocol)),
|
|
373
370
|
);
|
|
374
|
-
func.returnType = this.context.
|
|
375
|
-
|
|
371
|
+
func.returnType = this.context.resolveGenericTypeFromProtocol(
|
|
372
|
+
protocol.returnGenericType,
|
|
376
373
|
);
|
|
377
374
|
func.returnMultiplicity = this.context.graph.getMultiplicity(
|
|
378
375
|
protocol.returnMultiplicity.lowerBound,
|
package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_GraphBuilderContext.ts
CHANGED
|
@@ -35,7 +35,10 @@ import {
|
|
|
35
35
|
ImportAwareCodeSection,
|
|
36
36
|
} from '../../../../../../../graph/metamodel/pure/packageableElements/section/Section.js';
|
|
37
37
|
import { StereotypeImplicitReference } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/StereotypeReference.js';
|
|
38
|
-
import {
|
|
38
|
+
import {
|
|
39
|
+
GenericTypeImplicitReference,
|
|
40
|
+
type GenericTypeReference,
|
|
41
|
+
} from '../../../../../../../graph/metamodel/pure/packageableElements/domain/GenericTypeReference.js';
|
|
39
42
|
import type { Type } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/Type.js';
|
|
40
43
|
import type { Class } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/Class.js';
|
|
41
44
|
import type { Enumeration } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/Enumeration.js';
|
|
@@ -85,6 +88,7 @@ import {
|
|
|
85
88
|
getOwnProperty,
|
|
86
89
|
getStereotype,
|
|
87
90
|
getTag,
|
|
91
|
+
newGenericType,
|
|
88
92
|
} from '../../../../../../../graph/helpers/DomainHelper.js';
|
|
89
93
|
import {
|
|
90
94
|
getFilter,
|
|
@@ -96,6 +100,8 @@ import {
|
|
|
96
100
|
} from '../../../../../../../graph/helpers/STO_FlatData_Helper.js';
|
|
97
101
|
import type { PropertyOwner } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/AbstractProperty.js';
|
|
98
102
|
import type { DataElement } from '../../../../../../../graph/metamodel/pure/packageableElements/data/DataElement.js';
|
|
103
|
+
import type { V1_GenericType } from '../../../model/packageableElements/type/V1_GenericType.js';
|
|
104
|
+
import { V1_getGenericTypeFullPath } from '../../../helpers/V1_DomainHelper.js';
|
|
99
105
|
|
|
100
106
|
export const V1_buildFullPath = (
|
|
101
107
|
packagePath: string | undefined,
|
|
@@ -315,6 +321,19 @@ export class V1_GraphBuilderContext {
|
|
|
315
321
|
return GenericTypeImplicitReference.create(ownerReference, value);
|
|
316
322
|
};
|
|
317
323
|
|
|
324
|
+
resolveGenericTypeFromProtocol = (
|
|
325
|
+
genericType: V1_GenericType,
|
|
326
|
+
): GenericTypeReference => {
|
|
327
|
+
const ownerReference = this.resolveType(
|
|
328
|
+
V1_getGenericTypeFullPath(genericType),
|
|
329
|
+
);
|
|
330
|
+
const typeArguments = genericType.typeArguments.map((g) =>
|
|
331
|
+
this.resolveGenericTypeFromProtocol(g),
|
|
332
|
+
);
|
|
333
|
+
const value = newGenericType(ownerReference.value, typeArguments);
|
|
334
|
+
return GenericTypeImplicitReference.create(ownerReference, value);
|
|
335
|
+
};
|
|
336
|
+
|
|
318
337
|
resolveOwnProperty = (
|
|
319
338
|
pointer: V1_PropertyPointer,
|
|
320
339
|
): PropertyImplicitReference => {
|
package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_PropertyMappingBuilder.ts
CHANGED
|
@@ -105,6 +105,9 @@ import { FlatDataAssociationPropertyMapping } from '../../../../../../../graph/m
|
|
|
105
105
|
import type { V1_INTERNAL__UnknownPropertyMapping } from '../../../model/packageableElements/mapping/V1_INTERNAL__UnknownPropertyMapping.js';
|
|
106
106
|
import { INTERNAL__UnknownPropertyMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/INTERNAL__UnknownPropertyMapping.js';
|
|
107
107
|
import { INTERNAL__PseudoMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/INTERNAL__PseudoMapping.js';
|
|
108
|
+
import type { V1_RelationFunctionPropertyMapping } from '../../../model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.js';
|
|
109
|
+
import { RelationFunctionPropertyMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.js';
|
|
110
|
+
import { RelationColumn } from '../../../../../../../graph/metamodel/pure/packageableElements/relation/RelationType.js';
|
|
108
111
|
|
|
109
112
|
const TEMPORARY__resolveSetImplementationByID = (
|
|
110
113
|
mapping: Mapping,
|
|
@@ -1181,4 +1184,92 @@ export class V1_PropertyMappingBuilder
|
|
|
1181
1184
|
}
|
|
1182
1185
|
return aggregationAwarePropertyMapping;
|
|
1183
1186
|
}
|
|
1187
|
+
|
|
1188
|
+
visit_RelationFunctionPropertyMapping(
|
|
1189
|
+
protocol: V1_RelationFunctionPropertyMapping,
|
|
1190
|
+
): PropertyMapping {
|
|
1191
|
+
assertNonNullable(
|
|
1192
|
+
protocol.property,
|
|
1193
|
+
`Relation Function property mapping 'property' field is missing`,
|
|
1194
|
+
);
|
|
1195
|
+
assertNonEmptyString(
|
|
1196
|
+
protocol.property.property,
|
|
1197
|
+
`Relation Function property mapping 'property.property' field is missing or empty`,
|
|
1198
|
+
);
|
|
1199
|
+
let propertyOwner: Class | Association;
|
|
1200
|
+
let property: AbstractProperty;
|
|
1201
|
+
let localMapping: LocalMappingPropertyInfo | undefined;
|
|
1202
|
+
if (protocol.localMappingProperty) {
|
|
1203
|
+
const localMappingProperty = protocol.localMappingProperty;
|
|
1204
|
+
const mappingClass = new MappingClass(
|
|
1205
|
+
`${this.topParent?._PARENT.path}_${this.topParent?.id}${protocol.property.property}`,
|
|
1206
|
+
);
|
|
1207
|
+
const _multiplicity = this.context.graph.getMultiplicity(
|
|
1208
|
+
localMappingProperty.multiplicity.lowerBound,
|
|
1209
|
+
localMappingProperty.multiplicity.upperBound,
|
|
1210
|
+
);
|
|
1211
|
+
const _property = new Property(
|
|
1212
|
+
protocol.property.property,
|
|
1213
|
+
_multiplicity,
|
|
1214
|
+
this.context.resolveGenericType(localMappingProperty.type),
|
|
1215
|
+
mappingClass,
|
|
1216
|
+
);
|
|
1217
|
+
property = PropertyImplicitReference.create(
|
|
1218
|
+
PackageableElementImplicitReference.create(
|
|
1219
|
+
mappingClass,
|
|
1220
|
+
protocol.property.class,
|
|
1221
|
+
),
|
|
1222
|
+
_property,
|
|
1223
|
+
).value;
|
|
1224
|
+
localMapping = new LocalMappingPropertyInfo();
|
|
1225
|
+
localMapping.localMappingProperty = true;
|
|
1226
|
+
localMapping.localMappingPropertyMultiplicity = _multiplicity;
|
|
1227
|
+
localMapping.localMappingPropertyType = this.context.resolveType(
|
|
1228
|
+
localMappingProperty.type,
|
|
1229
|
+
);
|
|
1230
|
+
propertyOwner = property._OWNER;
|
|
1231
|
+
} else {
|
|
1232
|
+
if (protocol.property.class) {
|
|
1233
|
+
propertyOwner = this.context.resolveClass(
|
|
1234
|
+
protocol.property.class,
|
|
1235
|
+
).value;
|
|
1236
|
+
} else {
|
|
1237
|
+
throw new GraphBuilderError(
|
|
1238
|
+
`Can't find property owner class for property '${protocol.property.property}'`,
|
|
1239
|
+
);
|
|
1240
|
+
}
|
|
1241
|
+
property =
|
|
1242
|
+
propertyOwner instanceof Class
|
|
1243
|
+
? getClassProperty(propertyOwner, protocol.property.property)
|
|
1244
|
+
: getOwnProperty(propertyOwner, protocol.property.property);
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
const sourceSetImplementation = guaranteeNonNullable(
|
|
1248
|
+
resolvePropertyMappingSourceImplementation(
|
|
1249
|
+
this.immediateParent,
|
|
1250
|
+
protocol,
|
|
1251
|
+
this.topParent,
|
|
1252
|
+
this.context,
|
|
1253
|
+
),
|
|
1254
|
+
);
|
|
1255
|
+
const propertyType = property.genericType.value.rawType;
|
|
1256
|
+
const propertyMapping = new RelationFunctionPropertyMapping(
|
|
1257
|
+
this.topParent ?? this.immediateParent,
|
|
1258
|
+
PropertyImplicitReference.create(
|
|
1259
|
+
PackageableElementImplicitReference.create(
|
|
1260
|
+
propertyOwner,
|
|
1261
|
+
protocol.property.class ?? '',
|
|
1262
|
+
),
|
|
1263
|
+
property,
|
|
1264
|
+
),
|
|
1265
|
+
SetImplementationImplicitReference.create(
|
|
1266
|
+
sourceSetImplementation,
|
|
1267
|
+
protocol.source,
|
|
1268
|
+
),
|
|
1269
|
+
undefined,
|
|
1270
|
+
new RelationColumn(protocol.column, propertyType),
|
|
1271
|
+
);
|
|
1272
|
+
propertyMapping.localMappingProperty = localMapping;
|
|
1273
|
+
return propertyMapping;
|
|
1274
|
+
}
|
|
1184
1275
|
}
|
|
@@ -628,9 +628,7 @@ export const V1_buildBaseSimpleFunctionExpression = (
|
|
|
628
628
|
expression.func = func;
|
|
629
629
|
if (func) {
|
|
630
630
|
const val = func.value;
|
|
631
|
-
expression.genericType =
|
|
632
|
-
new GenericType(val.returnType.value),
|
|
633
|
-
);
|
|
631
|
+
expression.genericType = val.returnType;
|
|
634
632
|
expression.multiplicity = val.returnMultiplicity;
|
|
635
633
|
}
|
|
636
634
|
expression.parametersValues = processedParameters;
|
|
@@ -134,6 +134,8 @@ import { V1_MappingTest } from '../../../model/packageableElements/mapping/V1_Ma
|
|
|
134
134
|
import type { V1_TestSuite } from '../../../model/test/V1_TestSuite.js';
|
|
135
135
|
import { V1_INTERNAL__UnknownClassMapping } from '../../../model/packageableElements/mapping/V1_INTERNAL__UnknownClassMapping.js';
|
|
136
136
|
import { V1_INTERNAL__UnknownMappingInclude } from '../../../model/packageableElements/mapping/V1_INTERNAL__UnknownMappingInclude.js';
|
|
137
|
+
import { V1_RelationFunctionClassMapping } from '../../../model/packageableElements/mapping/V1_RelationFunctionClassMapping.js';
|
|
138
|
+
import { V1_RelationFunctionPropertyMapping } from '../../../model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.js';
|
|
137
139
|
|
|
138
140
|
enum V1_ClassMappingType {
|
|
139
141
|
OPERATION = 'operation',
|
|
@@ -143,6 +145,7 @@ enum V1_ClassMappingType {
|
|
|
143
145
|
ROOT_RELATIONAL = 'relational',
|
|
144
146
|
RELATIONAL = 'embedded',
|
|
145
147
|
AGGREGATION_AWARE = 'aggregationAware',
|
|
148
|
+
RELATION_FUNCTION = 'relation',
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
enum V1_PropertyMappingType {
|
|
@@ -156,6 +159,7 @@ enum V1_PropertyMappingType {
|
|
|
156
159
|
OTHERWISE_EMBEDDED_RELATIONAL = 'otherwiseEmbeddedPropertyMapping',
|
|
157
160
|
AGGREGATION_AWARE = 'AggregationAwarePropertyMapping',
|
|
158
161
|
XSTORE = 'xStorePropertyMapping',
|
|
162
|
+
RELATION_FUNCTION = 'relationFunctionPropertyMapping',
|
|
159
163
|
}
|
|
160
164
|
|
|
161
165
|
// ------------------------------------- Shared -------------------------------------
|
|
@@ -658,6 +662,57 @@ const aggregationAwareClassMappingModelSchema = (
|
|
|
658
662
|
root: primitive(),
|
|
659
663
|
});
|
|
660
664
|
|
|
665
|
+
// ------------------------------------- Relation Function Mapping -------------------------------------
|
|
666
|
+
|
|
667
|
+
const relationFunctionPropertyMappingModelSchema = createModelSchema(
|
|
668
|
+
V1_RelationFunctionPropertyMapping,
|
|
669
|
+
{
|
|
670
|
+
_type: usingConstantValueSchema(V1_PropertyMappingType.RELATION_FUNCTION),
|
|
671
|
+
localMappingProperty: usingModelSchema(
|
|
672
|
+
V1_localMappingPropertyInfoModelSchema,
|
|
673
|
+
),
|
|
674
|
+
property: usingModelSchema(V1_propertyPointerModelSchema),
|
|
675
|
+
source: optional(primitive()),
|
|
676
|
+
target: optional(primitive()),
|
|
677
|
+
column: primitive(),
|
|
678
|
+
},
|
|
679
|
+
);
|
|
680
|
+
|
|
681
|
+
function V1_serializeRelationFunctionPropertyMapping(
|
|
682
|
+
protocol: V1_RelationFunctionPropertyMapping,
|
|
683
|
+
): PlainObject<V1_RelationFunctionPropertyMapping> {
|
|
684
|
+
return serialize(relationFunctionPropertyMappingModelSchema, protocol);
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
function V1_deserializeRelationFunctionPropertyMapping(
|
|
688
|
+
json: PlainObject<V1_RelationFunctionPropertyMapping>,
|
|
689
|
+
): V1_RelationFunctionPropertyMapping | typeof SKIP {
|
|
690
|
+
switch (json._type) {
|
|
691
|
+
case V1_PropertyMappingType.RELATION_FUNCTION:
|
|
692
|
+
return deserialize(relationFunctionPropertyMappingModelSchema, json);
|
|
693
|
+
default:
|
|
694
|
+
return SKIP;
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
const relationFunctionClassMappingModelSchema = createModelSchema(
|
|
699
|
+
V1_RelationFunctionClassMapping,
|
|
700
|
+
{
|
|
701
|
+
_type: usingConstantValueSchema(V1_ClassMappingType.RELATION_FUNCTION),
|
|
702
|
+
class: primitive(),
|
|
703
|
+
extendsClassMappingId: optional(primitive()),
|
|
704
|
+
id: optional(primitive()),
|
|
705
|
+
propertyMappings: list(
|
|
706
|
+
custom(
|
|
707
|
+
V1_serializeRelationFunctionPropertyMapping,
|
|
708
|
+
V1_deserializeRelationFunctionPropertyMapping,
|
|
709
|
+
),
|
|
710
|
+
),
|
|
711
|
+
root: primitive(),
|
|
712
|
+
relationFunction: usingModelSchema(V1_packageableElementPointerModelSchema),
|
|
713
|
+
},
|
|
714
|
+
);
|
|
715
|
+
|
|
661
716
|
// ------------------------------------- Class Mapping -------------------------------------
|
|
662
717
|
|
|
663
718
|
function V1_serializeClassMapping(
|
|
@@ -680,6 +735,8 @@ function V1_serializeClassMapping(
|
|
|
680
735
|
return serialize(relationalClassMappingModelSchema, value);
|
|
681
736
|
} else if (value instanceof V1_AggregationAwareClassMapping) {
|
|
682
737
|
return serialize(aggregationAwareClassMappingModelSchema(plugins), value);
|
|
738
|
+
} else if (value instanceof V1_RelationFunctionClassMapping) {
|
|
739
|
+
return serialize(relationFunctionClassMappingModelSchema, value);
|
|
683
740
|
}
|
|
684
741
|
const extraClassMappingSerializers = plugins.flatMap(
|
|
685
742
|
(plugin) =>
|
|
@@ -730,6 +787,8 @@ function V1_deserializeClassMapping(
|
|
|
730
787
|
aggregationAwareClassMappingModelSchema(plugins),
|
|
731
788
|
json,
|
|
732
789
|
);
|
|
790
|
+
case V1_ClassMappingType.RELATION_FUNCTION:
|
|
791
|
+
return deserialize(relationFunctionClassMappingModelSchema, json);
|
|
733
792
|
default: {
|
|
734
793
|
const extraClassMappingDeserializers = plugins.flatMap(
|
|
735
794
|
(plugin) =>
|
package/src/index.ts
CHANGED
|
@@ -645,6 +645,7 @@ export * from './graph/metamodel/pure/packageableElements/mapping/EnumValueMappi
|
|
|
645
645
|
export { AssociationImplementation } from './graph/metamodel/pure/packageableElements/mapping/AssociationImplementation.js';
|
|
646
646
|
export { SetImplementationContainer } from './graph/metamodel/pure/packageableElements/mapping/SetImplementationContainer.js';
|
|
647
647
|
export { AggregationAwareSetImplementation } from './graph/metamodel/pure/packageableElements/mapping/aggregationAware/AggregationAwareSetImplementation.js';
|
|
648
|
+
export { RelationFunctionInstanceSetImplementation } from './graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.js';
|
|
648
649
|
export * from './graph/metamodel/pure/packageableElements/mapping/InferableMappingElementId.js';
|
|
649
650
|
export * from './graph/metamodel/pure/packageableElements/mapping/InferableMappingElementRoot.js';
|
|
650
651
|
export { SetImplementationExplicitReference } from './graph/metamodel/pure/packageableElements/mapping/SetImplementationReference.js';
|
package/tsconfig.json
CHANGED
|
@@ -234,6 +234,8 @@
|
|
|
234
234
|
"./src/graph/metamodel/pure/packageableElements/mapping/aggregationAware/AggregationAwareSetImplementation.ts",
|
|
235
235
|
"./src/graph/metamodel/pure/packageableElements/mapping/aggregationAware/AggregationFunctionSpecification.ts",
|
|
236
236
|
"./src/graph/metamodel/pure/packageableElements/mapping/aggregationAware/GroupByFunctionSpecification.ts",
|
|
237
|
+
"./src/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.ts",
|
|
238
|
+
"./src/graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionPropertyMapping.ts",
|
|
237
239
|
"./src/graph/metamodel/pure/packageableElements/mapping/xStore/XStoreAssociationImplementation.ts",
|
|
238
240
|
"./src/graph/metamodel/pure/packageableElements/mapping/xStore/XStorePropertyFetchDetails.ts",
|
|
239
241
|
"./src/graph/metamodel/pure/packageableElements/mapping/xStore/XStorePropertyMapping.ts",
|
|
@@ -601,6 +603,8 @@
|
|
|
601
603
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_MergeOperationClassMapping.ts",
|
|
602
604
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_OperationClassMapping.ts",
|
|
603
605
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_PropertyMapping.ts",
|
|
606
|
+
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionClassMapping.ts",
|
|
607
|
+
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.ts",
|
|
604
608
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_RelationalAssociationMapping.ts",
|
|
605
609
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/xStore/V1_XStoreAssociationMapping.ts",
|
|
606
610
|
"./src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/xStore/V1_XStorePropertyFetchDetails.ts",
|