@finos/legend-extension-dsl-data-quality 1.0.61 → 2.0.1

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.
Files changed (178) hide show
  1. package/lib/components/{DSL_DataQuality_ClassElementDriver.d.ts → DSL_DataQuality_ElementDriver.d.ts} +17 -7
  2. package/lib/components/DSL_DataQuality_ElementDriver.d.ts.map +1 -0
  3. package/lib/components/{DSL_DataQuality_ClassElementDriver.js → DSL_DataQuality_ElementDriver.js} +70 -23
  4. package/lib/components/DSL_DataQuality_ElementDriver.js.map +1 -0
  5. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.d.ts.map +1 -1
  6. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.js +20 -39
  7. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.js.map +1 -1
  8. package/lib/components/{DSL_NewDataQualityClassValidationElement.d.ts → DSL_NewDataQualityValidationElement.d.ts} +2 -2
  9. package/lib/components/DSL_NewDataQualityValidationElement.d.ts.map +1 -0
  10. package/lib/components/DSL_NewDataQualityValidationElement.js +80 -0
  11. package/lib/components/DSL_NewDataQualityValidationElement.js.map +1 -0
  12. package/lib/components/DataQualityRelationTrialRuns.d.ts +22 -0
  13. package/lib/components/DataQualityRelationTrialRuns.d.ts.map +1 -0
  14. package/lib/components/DataQualityRelationTrialRuns.js +87 -0
  15. package/lib/components/DataQualityRelationTrialRuns.js.map +1 -0
  16. package/lib/components/{DSL_NewDataQualityServiceValidationElement.d.ts → DataQualityRelationValidationConfigurationEditor.d.ts} +2 -2
  17. package/lib/components/DataQualityRelationValidationConfigurationEditor.d.ts.map +1 -0
  18. package/lib/components/DataQualityRelationValidationConfigurationEditor.js +99 -0
  19. package/lib/components/DataQualityRelationValidationConfigurationEditor.js.map +1 -0
  20. package/lib/components/DataQualityRelationValidationEditor.d.ts +30 -0
  21. package/lib/components/DataQualityRelationValidationEditor.d.ts.map +1 -0
  22. package/lib/components/DataQualityRelationValidationEditor.js +89 -0
  23. package/lib/components/DataQualityRelationValidationEditor.js.map +1 -0
  24. package/lib/components/DataQualityResultPanel.d.ts.map +1 -1
  25. package/lib/components/DataQualityResultPanel.js +1 -1
  26. package/lib/components/DataQualityResultPanel.js.map +1 -1
  27. package/lib/components/DataQualityResultValues.d.ts +0 -2
  28. package/lib/components/DataQualityResultValues.d.ts.map +1 -1
  29. package/lib/components/DataQualityResultValues.js.map +1 -1
  30. package/lib/components/DataQualitySideBar.js +2 -2
  31. package/lib/components/DataQualitySideBar.js.map +1 -1
  32. package/lib/components/DataQualityValidationDetailPanel.d.ts +36 -0
  33. package/lib/components/DataQualityValidationDetailPanel.d.ts.map +1 -0
  34. package/lib/components/DataQualityValidationDetailPanel.js +39 -0
  35. package/lib/components/DataQualityValidationDetailPanel.js.map +1 -0
  36. package/lib/components/DataQualityValidationParametersEditor.d.ts +15 -0
  37. package/lib/components/DataQualityValidationParametersEditor.d.ts.map +1 -0
  38. package/lib/components/DataQualityValidationParametersEditor.js +129 -0
  39. package/lib/components/DataQualityValidationParametersEditor.js.map +1 -0
  40. package/lib/components/states/ConstraintState.d.ts +2 -0
  41. package/lib/components/states/ConstraintState.d.ts.map +1 -1
  42. package/lib/components/states/ConstraintState.js +2 -0
  43. package/lib/components/states/ConstraintState.js.map +1 -1
  44. package/lib/components/states/DataQualityClassValidationState.d.ts +2 -2
  45. package/lib/components/states/DataQualityClassValidationState.d.ts.map +1 -1
  46. package/lib/components/states/DataQualityClassValidationState.js +4 -4
  47. package/lib/components/states/DataQualityClassValidationState.js.map +1 -1
  48. package/lib/components/states/DataQualityRelationResultState.d.ts +46 -0
  49. package/lib/components/states/DataQualityRelationResultState.d.ts.map +1 -0
  50. package/lib/components/states/DataQualityRelationResultState.js +194 -0
  51. package/lib/components/states/DataQualityRelationResultState.js.map +1 -0
  52. package/lib/components/states/DataQualityRelationValidationConfigurationState.d.ts +73 -0
  53. package/lib/components/states/DataQualityRelationValidationConfigurationState.d.ts.map +1 -0
  54. package/lib/components/states/DataQualityRelationValidationConfigurationState.js +255 -0
  55. package/lib/components/states/DataQualityRelationValidationConfigurationState.js.map +1 -0
  56. package/lib/components/states/DataQualityRelationValidationLambdaEditorState.d.ts +32 -0
  57. package/lib/components/states/DataQualityRelationValidationLambdaEditorState.d.ts.map +1 -0
  58. package/lib/components/states/DataQualityRelationValidationLambdaEditorState.js +79 -0
  59. package/lib/components/states/DataQualityRelationValidationLambdaEditorState.js.map +1 -0
  60. package/lib/components/states/DataQualityRelationValidationState.d.ts +38 -0
  61. package/lib/components/states/DataQualityRelationValidationState.d.ts.map +1 -0
  62. package/lib/components/states/DataQualityRelationValidationState.js +119 -0
  63. package/lib/components/states/DataQualityRelationValidationState.js.map +1 -0
  64. package/lib/components/states/DataQualityResultState.d.ts.map +1 -1
  65. package/lib/components/states/DataQualityResultState.js +6 -3
  66. package/lib/components/states/DataQualityResultState.js.map +1 -1
  67. package/lib/components/states/DataQualityState.js +1 -1
  68. package/lib/components/states/DataQualityState.js.map +1 -1
  69. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.d.ts +5 -1
  70. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.d.ts.map +1 -1
  71. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.js +4 -0
  72. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.js.map +1 -1
  73. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.d.ts.map +1 -1
  74. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.js +2 -1
  75. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.js.map +1 -1
  76. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.d.ts +36 -3
  77. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.d.ts.map +1 -1
  78. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js +58 -4
  79. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js.map +1 -1
  80. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.d.ts +2 -1
  81. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.d.ts.map +1 -1
  82. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.js +2 -1
  83. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.js.map +1 -1
  84. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.d.ts +13 -2
  85. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.d.ts.map +1 -1
  86. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.js +36 -2
  87. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.js.map +1 -1
  88. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.d.ts.map +1 -1
  89. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.js +5 -2
  90. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.js.map +1 -1
  91. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.d.ts +5 -1
  92. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.d.ts.map +1 -1
  93. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.js +29 -2
  94. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.js.map +1 -1
  95. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.d.ts +6 -5
  96. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.d.ts.map +1 -1
  97. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.js.map +1 -1
  98. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.d.ts +1 -1
  99. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.d.ts.map +1 -1
  100. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.js +34 -40
  101. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.js.map +1 -1
  102. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.d.ts +8 -6
  103. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.d.ts.map +1 -1
  104. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.js +19 -12
  105. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.js.map +1 -1
  106. package/lib/graph-manager/protocol/pure/v1/{V1_DataQualityConstraintsConfiguration.d.ts → V1_DataQualityValidationConfiguration.d.ts} +26 -4
  107. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.d.ts.map +1 -0
  108. package/lib/graph-manager/protocol/pure/v1/{V1_DataQualityConstraintsConfiguration.js → V1_DataQualityValidationConfiguration.js} +49 -4
  109. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.js.map +1 -0
  110. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.d.ts +7 -3
  111. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.d.ts.map +1 -1
  112. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js +43 -3
  113. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js.map +1 -1
  114. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.d.ts +6 -3
  115. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.d.ts.map +1 -1
  116. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js +39 -2
  117. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js.map +1 -1
  118. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.d.ts +5 -2
  119. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.d.ts.map +1 -1
  120. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js +27 -9
  121. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js.map +1 -1
  122. package/lib/index.css +2 -2
  123. package/lib/index.css.map +1 -1
  124. package/lib/package.json +1 -1
  125. package/package.json +7 -7
  126. package/src/components/{DSL_DataQuality_ClassElementDriver.tsx → DSL_DataQuality_ElementDriver.tsx} +87 -18
  127. package/src/components/DSL_DataQuality_LegendStudioApplicationPlugin.tsx +33 -48
  128. package/src/components/DSL_NewDataQualityValidationElement.tsx +208 -0
  129. package/src/components/DataQualityRelationTrialRuns.tsx +288 -0
  130. package/src/components/DataQualityRelationValidationConfigurationEditor.tsx +364 -0
  131. package/src/components/DataQualityRelationValidationEditor.tsx +290 -0
  132. package/src/components/DataQualityResultPanel.tsx +1 -4
  133. package/src/components/DataQualityResultValues.tsx +1 -5
  134. package/src/components/DataQualitySideBar.tsx +2 -2
  135. package/src/components/DataQualityValidationDetailPanel.tsx +182 -0
  136. package/src/components/DataQualityValidationParametersEditor.tsx +355 -0
  137. package/src/components/states/ConstraintState.ts +2 -0
  138. package/src/components/states/DataQualityClassValidationState.ts +5 -5
  139. package/src/components/states/DataQualityRelationResultState.ts +274 -0
  140. package/src/components/states/DataQualityRelationValidationConfigurationState.ts +429 -0
  141. package/src/components/states/DataQualityRelationValidationLambdaEditorState.ts +138 -0
  142. package/src/components/states/DataQualityRelationValidationState.ts +180 -0
  143. package/src/components/states/DataQualityResultState.ts +6 -8
  144. package/src/components/states/DataQualityState.ts +1 -1
  145. package/src/graph/metamodel/DSL_DataQuality_HashUtils.ts +4 -0
  146. package/src/graph/metamodel/DSL_DataQuality_PureGraphPlugin.ts +2 -0
  147. package/src/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.ts +79 -3
  148. package/src/graph-manager/DSL_DataQuality_GraphManagerHelper.ts +13 -0
  149. package/src/graph-manager/DSL_DataQuality_GraphModifierHelper.ts +107 -0
  150. package/src/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.ts +8 -0
  151. package/src/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.ts +54 -1
  152. package/src/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.ts +5 -3
  153. package/src/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.ts +72 -81
  154. package/src/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.ts +20 -23
  155. package/src/graph-manager/protocol/pure/v1/{V1_DataQualityConstraintsConfiguration.ts → V1_DataQualityValidationConfiguration.ts} +63 -4
  156. package/src/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.ts +116 -2
  157. package/src/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.ts +78 -1
  158. package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.ts +55 -8
  159. package/style/_data-quality-relation-validation-builder.scss +454 -0
  160. package/style/index.scss +6 -0
  161. package/tsconfig.json +13 -6
  162. package/lib/components/DSL_DataQuality_ClassElementDriver.d.ts.map +0 -1
  163. package/lib/components/DSL_DataQuality_ClassElementDriver.js.map +0 -1
  164. package/lib/components/DSL_DataQuality_ServiceElementDriver.d.ts +0 -27
  165. package/lib/components/DSL_DataQuality_ServiceElementDriver.d.ts.map +0 -1
  166. package/lib/components/DSL_DataQuality_ServiceElementDriver.js +0 -41
  167. package/lib/components/DSL_DataQuality_ServiceElementDriver.js.map +0 -1
  168. package/lib/components/DSL_NewDataQualityClassValidationElement.d.ts.map +0 -1
  169. package/lib/components/DSL_NewDataQualityClassValidationElement.js +0 -64
  170. package/lib/components/DSL_NewDataQualityClassValidationElement.js.map +0 -1
  171. package/lib/components/DSL_NewDataQualityServiceValidationElement.d.ts.map +0 -1
  172. package/lib/components/DSL_NewDataQualityServiceValidationElement.js +0 -41
  173. package/lib/components/DSL_NewDataQualityServiceValidationElement.js.map +0 -1
  174. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityConstraintsConfiguration.d.ts.map +0 -1
  175. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityConstraintsConfiguration.js.map +0 -1
  176. package/src/components/DSL_DataQuality_ServiceElementDriver.tsx +0 -57
  177. package/src/components/DSL_NewDataQualityClassValidationElement.tsx +0 -156
  178. package/src/components/DSL_NewDataQualityServiceValidationElement.tsx +0 -74
@@ -19,30 +19,33 @@ import { type PlainObject, assertType } from '@finos/legend-shared';
19
19
  import {
20
20
  V1_DataQualityClassValidationsConfiguration,
21
21
  V1_DataQualityServiceValidationsConfiguration,
22
- } from './v1/V1_DataQualityConstraintsConfiguration.js';
22
+ V1_DataQualityRelationValidationsConfiguration,
23
+ V1_DataQualityValidationsConfiguration,
24
+ } from './v1/V1_DataQualityValidationConfiguration.js';
23
25
  import {
24
26
  DataQualityClassValidationsConfiguration,
25
27
  DataQualityServiceValidationConfiguration,
28
+ DataQualityRelationValidationConfiguration,
26
29
  } from '../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
27
- import {
28
- getOwnDataQualityClassValidationsConfiguration,
29
- getOwnDataQualityServiceValidationsConfiguration,
30
- } from '../../DSL_DataQuality_GraphManagerHelper.js';
31
30
  import {
32
31
  V1_DATA_QUALITY_PROTOCOL_TYPE,
33
32
  V1_DATA_QUALITY_SERVICE_PROTOCOL_TYPE,
33
+ V1_DATA_QUALITY_RELATION_PROTOCOL_TYPE,
34
34
  V1_deserializeDataQualityClassValidation,
35
35
  V1_deserializeDataQualityServiceValidation,
36
+ V1_deserializeDataQualityRelationValidation,
36
37
  V1_serializeDataQualityClassValidation,
37
38
  V1_serializeDataQualityServiceValidation,
39
+ V1_serializeDataQualityRelationValidation,
38
40
  } from './v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js';
39
41
  import {
40
- V1_transformDataQualityExecutionContext,
41
- V1_transformDataQualityGraphFetchTree,
42
+ V1_transformDataQualityClassValidationConfiguration,
43
+ V1_transformDataQualityRelationValidationConfiguration,
42
44
  } from './v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js';
43
45
  import {
44
- V1_buildDataQualityExecutionContext,
45
- V1_buildDataQualityGraphFetchTree,
46
+ V1_buildDataQualityClassValidationConfiguration,
47
+ V1_buildDataQualityRelationValidationConfiguration,
48
+ V1_buildDataQualityServiceValidationConfiguration,
46
49
  } from './v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js';
47
50
  import { V1_DataQualityRootGraphFetchTree } from './v1/model/graphFetch/V1_DataQualityRootGraphFetchTree.js';
48
51
  import {
@@ -55,17 +58,12 @@ import {
55
58
  type V1_PackageableElement,
56
59
  type PackageableElement,
57
60
  type V1_GraphFetchTree,
61
+ type V1_GraphFetchSerializer,
62
+ type V1_GraphFetchDeserializer,
58
63
  V1_buildFullPath,
59
- V1_buildRawLambdaWithResolvedPaths,
60
- V1_initPackageableElement,
61
- V1_transformRawLambda,
62
64
  V1_ElementBuilder,
63
- V1_ProcessingContext,
64
65
  PureProtocolProcessorPlugin,
65
- type V1_GraphFetchSerializer,
66
- type V1_GraphFetchDeserializer,
67
66
  } from '@finos/legend-graph';
68
- import type { DataQualityRootGraphFetchTree } from '../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityGraphFetchTree.js';
69
67
  import { V1_DataQualityPropertyGraphFetchTree } from './v1/model/graphFetch/V1_DataQualityPropertyGraphFetchTree.js';
70
68
  import { deserialize, serialize } from 'serializr';
71
69
  import {
@@ -121,41 +119,54 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
121
119
  elementProtocol,
122
120
  V1_DataQualityClassValidationsConfiguration,
123
121
  );
122
+ V1_buildDataQualityClassValidationConfiguration(
123
+ elementProtocol,
124
+ context,
125
+ );
126
+ },
127
+ }),
128
+ new V1_ElementBuilder<V1_DataQualityRelationValidationsConfiguration>({
129
+ elementClassName: V1_DATA_QUALITY_RELATION_PROTOCOL_TYPE,
130
+ _class: V1_DataQualityRelationValidationsConfiguration,
131
+ firstPass: (
132
+ elementProtocol: V1_PackageableElement,
133
+ context: V1_GraphBuilderContext,
134
+ ): PackageableElement => {
135
+ assertType(
136
+ elementProtocol,
137
+ V1_DataQualityRelationValidationsConfiguration,
138
+ );
139
+ const element = new DataQualityRelationValidationConfiguration(
140
+ elementProtocol.name,
141
+ );
124
142
  const path = V1_buildFullPath(
125
143
  elementProtocol.package,
126
144
  elementProtocol.name,
127
145
  );
128
- const element = getOwnDataQualityClassValidationsConfiguration(
146
+ context.currentSubGraph.setOwnElementInExtension(
129
147
  path,
130
- context.currentSubGraph,
148
+ element,
149
+ DataQualityRelationValidationConfiguration,
150
+ );
151
+ return element;
152
+ },
153
+ secondPass: (
154
+ elementProtocol: V1_PackageableElement,
155
+ context: V1_GraphBuilderContext,
156
+ ): void => {
157
+ assertType(
158
+ elementProtocol,
159
+ V1_DataQualityRelationValidationsConfiguration,
131
160
  );
132
- element.context = V1_buildDataQualityExecutionContext(
133
- elementProtocol.context,
161
+ V1_buildDataQualityRelationValidationConfiguration(
162
+ elementProtocol,
134
163
  context,
135
164
  );
136
- element.dataQualityRootGraphFetchTree =
137
- elementProtocol.dataQualityRootGraphFetchTree
138
- ? (V1_buildDataQualityGraphFetchTree(
139
- elementProtocol.dataQualityRootGraphFetchTree,
140
- context,
141
- undefined,
142
- [],
143
- new V1_ProcessingContext(''),
144
- true,
145
- ) as DataQualityRootGraphFetchTree)
146
- : undefined;
147
- element.filter = elementProtocol.filter
148
- ? V1_buildRawLambdaWithResolvedPaths(
149
- elementProtocol.filter.parameters,
150
- elementProtocol.filter.body,
151
- context,
152
- )
153
- : undefined;
154
165
  },
155
166
  }),
156
- //TODO handle service validations
167
+
157
168
  new V1_ElementBuilder<V1_DataQualityServiceValidationsConfiguration>({
158
- elementClassName: 'dataQualityServiceValidations',
169
+ elementClassName: V1_DATA_QUALITY_SERVICE_PROTOCOL_TYPE,
159
170
  _class: V1_DataQualityServiceValidationsConfiguration,
160
171
  firstPass: (
161
172
  elementProtocol: V1_PackageableElement,
@@ -187,27 +198,10 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
187
198
  elementProtocol,
188
199
  V1_DataQualityServiceValidationsConfiguration,
189
200
  );
190
- const path = V1_buildFullPath(
191
- elementProtocol.package,
192
- elementProtocol.name,
193
- );
194
- const element = getOwnDataQualityServiceValidationsConfiguration(
195
- path,
196
- context.currentSubGraph,
201
+ V1_buildDataQualityServiceValidationConfiguration(
202
+ elementProtocol,
203
+ context,
197
204
  );
198
- element.contextName = elementProtocol.contextName;
199
- element.serviceName = elementProtocol.serviceName;
200
- element.dataQualityRootGraphFetchTree =
201
- elementProtocol.dataQualityRootGraphFetchTree
202
- ? (V1_buildDataQualityGraphFetchTree(
203
- elementProtocol.dataQualityRootGraphFetchTree,
204
- context,
205
- undefined,
206
- [],
207
- new V1_ProcessingContext(''),
208
- true,
209
- ) as DataQualityRootGraphFetchTree)
210
- : undefined;
211
205
  },
212
206
  }),
213
207
  ];
@@ -216,7 +210,7 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
216
210
  override V1_getExtraElementClassifierPathGetters(): V1_ElementProtocolClassifierPathGetter[] {
217
211
  return [
218
212
  (protocol: V1_PackageableElement): string | undefined => {
219
- if (protocol instanceof V1_DataQualityClassValidationsConfiguration) {
213
+ if (protocol instanceof V1_DataQualityValidationsConfiguration) {
220
214
  return DATA_QUALITY_CLASSIFIER_PATH;
221
215
  }
222
216
  return undefined;
@@ -236,6 +230,11 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
236
230
  if (protocol instanceof V1_DataQualityServiceValidationsConfiguration) {
237
231
  return V1_serializeDataQualityServiceValidation(protocol, plugins);
238
232
  }
233
+ if (
234
+ protocol instanceof V1_DataQualityRelationValidationsConfiguration
235
+ ) {
236
+ return V1_serializeDataQualityRelationValidation(protocol, plugins);
237
+ }
239
238
  return undefined;
240
239
  },
241
240
  ];
@@ -292,6 +291,9 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
292
291
  if (json._type === V1_DATA_QUALITY_SERVICE_PROTOCOL_TYPE) {
293
292
  return V1_deserializeDataQualityServiceValidation(json, plugins);
294
293
  }
294
+ if (json._type === V1_DATA_QUALITY_RELATION_PROTOCOL_TYPE) {
295
+ return V1_deserializeDataQualityRelationValidation(json, plugins);
296
+ }
295
297
  return undefined;
296
298
  },
297
299
  ];
@@ -304,27 +306,16 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
304
306
  context: V1_GraphTransformerContext,
305
307
  ): V1_PackageableElement | undefined => {
306
308
  if (metamodel instanceof DataQualityClassValidationsConfiguration) {
307
- const protocol = new V1_DataQualityClassValidationsConfiguration();
308
- V1_initPackageableElement(protocol, metamodel);
309
- protocol.name = metamodel.name;
310
- protocol.package = metamodel.package?.path ?? '';
311
- protocol.dataQualityRootGraphFetchTree =
312
- metamodel.dataQualityRootGraphFetchTree
313
- ? (V1_transformDataQualityGraphFetchTree(
314
- metamodel.dataQualityRootGraphFetchTree,
315
- [],
316
- new Map<string, unknown[]>(),
317
- false,
318
- false,
319
- ) as V1_DataQualityRootGraphFetchTree)
320
- : undefined;
321
- protocol.context = V1_transformDataQualityExecutionContext(
322
- metamodel.context,
309
+ return V1_transformDataQualityClassValidationConfiguration(
310
+ metamodel,
311
+ context,
312
+ );
313
+ }
314
+ if (metamodel instanceof DataQualityRelationValidationConfiguration) {
315
+ return V1_transformDataQualityRelationValidationConfiguration(
316
+ metamodel,
317
+ context,
323
318
  );
324
- protocol.filter = metamodel.filter
325
- ? V1_transformRawLambda(metamodel.filter, context)
326
- : undefined;
327
- return protocol;
328
319
  }
329
320
  return undefined;
330
321
  },
@@ -24,7 +24,6 @@ import {
24
24
  type V1_ExecutionResult,
25
25
  type V1_PureModelContext,
26
26
  type V1_RootGraphFetchTree,
27
- type ParameterValue,
28
27
  type V1_ParameterValue,
29
28
  LegendSDLC,
30
29
  PureClientVersion,
@@ -60,6 +59,7 @@ import {
60
59
  V1_transformRootGraphFetchTreeToDataQualityRootGraphFetchTree,
61
60
  } from './transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js';
62
61
  import type { DataQualityRootGraphFetchTree } from '../../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityGraphFetchTree.js';
62
+ import type { DQExecuteInputOptions } from '../../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
63
63
 
64
64
  const DQ_GENERATE_EXECUTION_PLAN = 'generate execution plan';
65
65
  const DQ_EXECUTE_PLAN = 'execute plan';
@@ -72,6 +72,7 @@ export class V1_DQExecuteInput {
72
72
  lambdaParameterValues: V1_ParameterValue[] = [];
73
73
  packagePath!: string;
74
74
  queryLimit: number | undefined;
75
+ validationName: string | undefined;
75
76
 
76
77
  static readonly serialization = new SerializationFactory(
77
78
  createModelSchema(V1_DQExecuteInput, {
@@ -80,6 +81,7 @@ export class V1_DQExecuteInput {
80
81
  lambdaParameterValues: customListWithSchema(V1_parameterValueModelSchema),
81
82
  packagePath: primitive(),
82
83
  queryLimit: optional(primitive()),
84
+ validationName: optional(primitive()),
83
85
  }),
84
86
  );
85
87
  }
@@ -156,35 +158,35 @@ export class V1_DSL_Data_Quality_PureGraphManagerExtension extends DSL_DataQuali
156
158
 
157
159
  createExecutionInput(
158
160
  graph: PureModel,
159
- lambdaParameterValues: ParameterValue[],
160
161
  packagePath: string,
161
- clientVersion: string | undefined,
162
- previewLimit: number | undefined,
163
162
  dqExecuteInput: V1_DQExecuteInput,
163
+ options: DQExecuteInputOptions,
164
164
  ): V1_DQExecuteInput {
165
- dqExecuteInput.clientVersion = clientVersion;
165
+ dqExecuteInput.clientVersion =
166
+ options.clientVersion ??
167
+ V1_DSL_Data_Quality_PureGraphManagerExtension.DEV_PROTOCOL_VERSION;
166
168
  dqExecuteInput.model = graph.origin
167
169
  ? this.buildPureModelSDLCPointer(graph.origin, undefined)
168
170
  : this.graphManager.getFullGraphModelData(graph);
169
- dqExecuteInput.lambdaParameterValues = lambdaParameterValues.map(
170
- V1_transformParameterValue,
171
- );
171
+ dqExecuteInput.lambdaParameterValues = options.lambdaParameterValues
172
+ ? options.lambdaParameterValues.map(V1_transformParameterValue)
173
+ : [];
172
174
  dqExecuteInput.packagePath = packagePath;
173
- dqExecuteInput.queryLimit = previewLimit;
175
+ dqExecuteInput.queryLimit = options.previewLimit;
176
+ dqExecuteInput.validationName = options.validationName;
174
177
  return dqExecuteInput;
175
178
  }
176
179
 
177
180
  generatePlan = async (
178
181
  graph: PureModel,
179
182
  packagePath: string,
183
+ options: DQExecuteInputOptions,
180
184
  ): Promise<RawExecutionPlan> => {
181
185
  const input = this.createExecutionInput(
182
186
  graph,
183
- [],
184
187
  packagePath,
185
- V1_DSL_Data_Quality_PureGraphManagerExtension.DEV_PROTOCOL_VERSION,
186
- undefined,
187
188
  new V1_DQExecuteInput(),
189
+ options,
188
190
  );
189
191
 
190
192
  const serializedInput = V1_DQExecuteInput.serialization.toJson(input);
@@ -209,17 +211,14 @@ export class V1_DSL_Data_Quality_PureGraphManagerExtension extends DSL_DataQuali
209
211
 
210
212
  execute = async (
211
213
  graph: PureModel,
212
- lambdaParameterValues: ParameterValue[],
213
214
  packagePath: string,
214
- previewLimit: number,
215
+ options: DQExecuteInputOptions,
215
216
  ): Promise<ExecutionResult> => {
216
217
  const input = this.createExecutionInput(
217
218
  graph,
218
- lambdaParameterValues,
219
219
  packagePath,
220
- V1_DSL_Data_Quality_PureGraphManagerExtension.DEV_PROTOCOL_VERSION,
221
- previewLimit,
222
220
  new V1_DQExecuteInput(),
221
+ options,
223
222
  );
224
223
 
225
224
  try {
@@ -251,14 +250,13 @@ export class V1_DSL_Data_Quality_PureGraphManagerExtension extends DSL_DataQuali
251
250
  debugExecutionPlanGeneration = async (
252
251
  graph: PureModel,
253
252
  packagePath: string,
253
+ options: DQExecuteInputOptions,
254
254
  ): Promise<{ plan: RawExecutionPlan; debug: string }> => {
255
255
  const input = this.createExecutionInput(
256
256
  graph,
257
- [],
258
257
  packagePath,
259
- V1_DSL_Data_Quality_PureGraphManagerExtension.DEV_PROTOCOL_VERSION,
260
- undefined,
261
258
  new V1_DQExecuteInput(),
259
+ options,
262
260
  );
263
261
 
264
262
  const serializedInput = V1_DQExecuteInput.serialization.toJson(input);
@@ -288,6 +286,7 @@ export class V1_DSL_Data_Quality_PureGraphManagerExtension extends DSL_DataQuali
288
286
  fetchStructuralValidations = async (
289
287
  graph: PureModel,
290
288
  packagePath: string,
289
+ options: DQExecuteInputOptions,
291
290
  ): Promise<RootGraphFetchTree> => {
292
291
  // TODO: improve abstraction so that we do not need to access the engine server client directly
293
292
  const engineServerClient = guaranteeType(
@@ -297,11 +296,9 @@ export class V1_DSL_Data_Quality_PureGraphManagerExtension extends DSL_DataQuali
297
296
  ).getEngineServerClient();
298
297
  const input = this.createExecutionInput(
299
298
  graph,
300
- [],
301
299
  packagePath,
302
- V1_DSL_Data_Quality_PureGraphManagerExtension.DEV_PROTOCOL_VERSION,
303
- undefined,
304
300
  new V1_DQExecuteInput(),
301
+ options,
305
302
  );
306
303
 
307
304
  const serializedInput = V1_DQExecuteInput.serialization.toJson(input);
@@ -15,16 +15,19 @@
15
15
  */
16
16
 
17
17
  import {
18
- type V1_PackageableElementVisitor,
19
18
  type V1_PackageableElementPointer,
19
+ type V1_PackageableElementVisitor,
20
20
  type V1_RawLambda,
21
- type V1_TaggedValue,
22
21
  type V1_StereotypePtr,
22
+ type V1_TaggedValue,
23
+ type V1_RawVariable,
24
+ hashRawLambda,
23
25
  V1_PackageableElement,
24
26
  } from '@finos/legend-graph';
25
27
  import { type Hashable, hashArray } from '@finos/legend-shared';
26
28
  import { DATA_QUALITY_HASH_STRUCTURE } from '../../../../graph/metamodel/DSL_DataQuality_HashUtils.js';
27
29
  import { type V1_DataQualityRootGraphFetchTree } from './model/graphFetch/V1_DataQualityRootGraphFetchTree.js';
30
+ import { RelationValidationType } from '../../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
28
31
 
29
32
  export abstract class V1_DataQualityExecutionContext implements Hashable {
30
33
  abstract get hashCode(): string;
@@ -56,8 +59,29 @@ export class V1_MappingAndRuntimeDataQualityExecutionContext extends V1_DataQual
56
59
  }
57
60
  }
58
61
 
62
+ export class V1_DataQualityRelationValidation implements Hashable {
63
+ name!: string;
64
+ description: string | undefined;
65
+ assertion!: V1_RawLambda;
66
+ type: RelationValidationType = RelationValidationType.ROW_LEVEL;
67
+ rowMapFunction: V1_RawLambda | undefined;
68
+
69
+ get hashCode(): string {
70
+ return hashArray([
71
+ DATA_QUALITY_HASH_STRUCTURE.DATA_QUALITY_RELATION_VALIDATION,
72
+ this.name,
73
+ this.type,
74
+ this.description ?? '',
75
+ this.assertion,
76
+ this.rowMapFunction ?? '',
77
+ ]);
78
+ }
79
+ }
80
+
81
+ export abstract class V1_DataQualityValidationsConfiguration extends V1_PackageableElement {}
82
+
59
83
  export class V1_DataQualityClassValidationsConfiguration
60
- extends V1_PackageableElement
84
+ extends V1_DataQualityValidationsConfiguration
61
85
  implements Hashable
62
86
  {
63
87
  context!: V1_DataQualityExecutionContext;
@@ -83,7 +107,7 @@ export class V1_DataQualityClassValidationsConfiguration
83
107
  }
84
108
 
85
109
  export class V1_DataQualityServiceValidationsConfiguration
86
- extends V1_PackageableElement
110
+ extends V1_DataQualityValidationsConfiguration
87
111
  implements Hashable
88
112
  {
89
113
  contextName?: string | undefined;
@@ -105,3 +129,38 @@ export class V1_DataQualityServiceValidationsConfiguration
105
129
  return visitor.visit_PackageableElement(this);
106
130
  }
107
131
  }
132
+
133
+ export class V1_DataQualityRelationQueryLambda implements Hashable {
134
+ body?: object | undefined;
135
+ parameters: V1_RawVariable[] = [];
136
+
137
+ get hashCode(): string {
138
+ return hashArray([
139
+ DATA_QUALITY_HASH_STRUCTURE.DATA_QUALITY_RELATION_VALIDATION_QUERY,
140
+ hashArray(this.parameters),
141
+ hashRawLambda(undefined, this.body),
142
+ ]);
143
+ }
144
+ }
145
+
146
+ export class V1_DataQualityRelationValidationsConfiguration
147
+ extends V1_DataQualityValidationsConfiguration
148
+ implements Hashable
149
+ {
150
+ query!: V1_DataQualityRelationQueryLambda;
151
+ validations: V1_DataQualityRelationValidation[] = [];
152
+
153
+ override get hashCode(): string {
154
+ return hashArray([
155
+ DATA_QUALITY_HASH_STRUCTURE.DATA_QUALITY_RELATION_VALIDATION_CONFIGURATION,
156
+ this.query,
157
+ hashArray(this.validations),
158
+ ]);
159
+ }
160
+
161
+ accept_PackageableElementVisitor<T>(
162
+ visitor: V1_PackageableElementVisitor<T>,
163
+ ): T {
164
+ return visitor.visit_PackageableElement(this);
165
+ }
166
+ }
@@ -26,11 +26,17 @@ import {
26
26
  } from '../../../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityGraphFetchTree.js';
27
27
  import {
28
28
  type V1_DataQualityExecutionContext,
29
+ type V1_DataQualityClassValidationsConfiguration,
30
+ type V1_DataQualityRelationValidation,
31
+ type V1_DataQualityRelationValidationsConfiguration,
32
+ type V1_DataQualityServiceValidationsConfiguration,
29
33
  V1_DataSpaceDataQualityExecutionContext,
30
34
  V1_MappingAndRuntimeDataQualityExecutionContext,
31
- } from '../V1_DataQualityConstraintsConfiguration.js';
35
+ } from '../V1_DataQualityValidationConfiguration.js';
32
36
  import {
33
37
  type DataQualityExecutionContext,
38
+ DataQualityRelationQueryLambda,
39
+ DataQualityRelationValidation,
34
40
  DataSpaceDataQualityExecutionContext,
35
41
  MappingAndRuntimeDataQualityExecutionContext,
36
42
  } from '../../../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
@@ -44,13 +50,21 @@ import {
44
50
  type PropertyGraphFetchTree,
45
51
  type RootGraphFetchTree,
46
52
  type V1_GraphFetchTree,
47
- type V1_ProcessingContext,
48
53
  type V1_PropertyGraphFetchTree,
49
54
  type V1_RootGraphFetchTree,
55
+ V1_ProcessingContext,
50
56
  V1_buildPropertyGraphFetchTree,
51
57
  V1_buildRootGraphFetchTree,
58
+ V1_buildRawLambdaWithResolvedPaths,
59
+ V1_buildFullPath,
60
+ V1_buildVariable,
52
61
  } from '@finos/legend-graph';
53
62
  import type { DataSpace } from '@finos/legend-extension-dsl-data-space/graph';
63
+ import {
64
+ getOwnDataQualityClassValidationsConfiguration,
65
+ getOwnDataQualityServiceValidationsConfiguration,
66
+ getOwnDataQualityRelationValidationsConfiguration,
67
+ } from '../../../../DSL_DataQuality_GraphManagerHelper.js';
54
68
 
55
69
  export function V1_buildDataQualityExecutionContext(
56
70
  dataQualityExecutionContext: V1_DataQualityExecutionContext,
@@ -146,6 +160,30 @@ export function V1_buildDataQualityGraphFetchTree(
146
160
  );
147
161
  }
148
162
 
163
+ export function V1_buildDataQualityRelationValidation(
164
+ validation: V1_DataQualityRelationValidation,
165
+ context: V1_GraphBuilderContext,
166
+ ): DataQualityRelationValidation {
167
+ const _validation = new DataQualityRelationValidation(
168
+ validation.name,
169
+ V1_buildRawLambdaWithResolvedPaths(
170
+ validation.assertion.parameters,
171
+ validation.assertion.body,
172
+ context,
173
+ ),
174
+ );
175
+ _validation.description = validation.description;
176
+ _validation.type = validation.type;
177
+ _validation.rowMapFunction = validation.rowMapFunction
178
+ ? V1_buildRawLambdaWithResolvedPaths(
179
+ validation.rowMapFunction.parameters,
180
+ validation.rowMapFunction.body,
181
+ context,
182
+ )
183
+ : validation.rowMapFunction;
184
+ return _validation;
185
+ }
186
+
149
187
  function transformGraphFetchTreeToDataQualityGraphFetchTree(
150
188
  graphFetchTree: GraphFetchTree,
151
189
  V1_graphFetchTree: V1_GraphFetchTree,
@@ -239,3 +277,79 @@ function V1_transformPropertyGraphFetchTreeToDataQualityPropertyGraphFetchTree(
239
277
  );
240
278
  return dataQualityPropertyGraphFetchTree;
241
279
  }
280
+
281
+ export function V1_buildDataQualityClassValidationConfiguration(
282
+ elementProtocol: V1_DataQualityClassValidationsConfiguration,
283
+ context: V1_GraphBuilderContext,
284
+ ): void {
285
+ const path = V1_buildFullPath(elementProtocol.package, elementProtocol.name);
286
+ const element = getOwnDataQualityClassValidationsConfiguration(
287
+ path,
288
+ context.currentSubGraph,
289
+ );
290
+ element.context = V1_buildDataQualityExecutionContext(
291
+ elementProtocol.context,
292
+ context,
293
+ );
294
+ element.dataQualityRootGraphFetchTree =
295
+ elementProtocol.dataQualityRootGraphFetchTree
296
+ ? (V1_buildDataQualityGraphFetchTree(
297
+ elementProtocol.dataQualityRootGraphFetchTree,
298
+ context,
299
+ undefined,
300
+ [],
301
+ new V1_ProcessingContext(''),
302
+ true,
303
+ ) as DataQualityRootGraphFetchTree)
304
+ : undefined;
305
+ element.filter = elementProtocol.filter
306
+ ? V1_buildRawLambdaWithResolvedPaths(
307
+ elementProtocol.filter.parameters,
308
+ elementProtocol.filter.body,
309
+ context,
310
+ )
311
+ : undefined;
312
+ }
313
+
314
+ export function V1_buildDataQualityRelationValidationConfiguration(
315
+ elementProtocol: V1_DataQualityRelationValidationsConfiguration,
316
+ context: V1_GraphBuilderContext,
317
+ ): void {
318
+ const path = V1_buildFullPath(elementProtocol.package, elementProtocol.name);
319
+ const element = getOwnDataQualityRelationValidationsConfiguration(
320
+ path,
321
+ context.currentSubGraph,
322
+ );
323
+ element.query = new DataQualityRelationQueryLambda();
324
+ element.query.body = elementProtocol.query.body;
325
+ element.query.parameters = elementProtocol.query.parameters.map((param) =>
326
+ V1_buildVariable(param, context),
327
+ );
328
+ element.validations = elementProtocol.validations.map((validation) =>
329
+ V1_buildDataQualityRelationValidation(validation, context),
330
+ );
331
+ }
332
+
333
+ export function V1_buildDataQualityServiceValidationConfiguration(
334
+ elementProtocol: V1_DataQualityServiceValidationsConfiguration,
335
+ context: V1_GraphBuilderContext,
336
+ ): void {
337
+ const path = V1_buildFullPath(elementProtocol.package, elementProtocol.name);
338
+ const element = getOwnDataQualityServiceValidationsConfiguration(
339
+ path,
340
+ context.currentSubGraph,
341
+ );
342
+ element.contextName = elementProtocol.contextName;
343
+ element.serviceName = elementProtocol.serviceName;
344
+ element.dataQualityRootGraphFetchTree =
345
+ elementProtocol.dataQualityRootGraphFetchTree
346
+ ? (V1_buildDataQualityGraphFetchTree(
347
+ elementProtocol.dataQualityRootGraphFetchTree,
348
+ context,
349
+ undefined,
350
+ [],
351
+ new V1_ProcessingContext(''),
352
+ true,
353
+ ) as DataQualityRootGraphFetchTree)
354
+ : undefined;
355
+ }