@finos/legend-extension-dsl-data-quality 1.0.60 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }