@finos/legend-extension-dsl-persistence 2.0.8 → 2.0.11

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 (139) hide show
  1. package/lib/components/studio/DSLPersistence_CodeSnippets.d.ts +1 -0
  2. package/lib/components/studio/DSLPersistence_CodeSnippets.d.ts.map +1 -1
  3. package/lib/components/studio/DSLPersistence_CodeSnippets.js +5 -1
  4. package/lib/components/studio/DSLPersistence_CodeSnippets.js.map +1 -1
  5. package/lib/components/studio/{DSLPersistence_LegendStudioPlugin.d.ts → DSLPersistence_LegendStudioApplicationPlugin.d.ts} +3 -3
  6. package/lib/components/studio/DSLPersistence_LegendStudioApplicationPlugin.d.ts.map +1 -0
  7. package/lib/components/studio/{DSLPersistence_LegendStudioPlugin.js → DSLPersistence_LegendStudioApplicationPlugin.js} +39 -8
  8. package/lib/components/studio/DSLPersistence_LegendStudioApplicationPlugin.js.map +1 -0
  9. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts +2 -1
  10. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts.map +1 -1
  11. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js +1 -0
  12. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js.map +1 -1
  13. package/lib/graph/DSLPersistence_PureGraphPlugin.d.ts.map +1 -1
  14. package/lib/graph/DSLPersistence_PureGraphPlugin.js +2 -1
  15. package/lib/graph/DSLPersistence_PureGraphPlugin.js.map +1 -1
  16. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts +3 -0
  17. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts.map +1 -1
  18. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js +3 -0
  19. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js.map +1 -1
  20. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts +1 -0
  21. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts.map +1 -1
  22. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js +13 -1
  23. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js.map +1 -1
  24. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts +18 -0
  25. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts.map +1 -0
  26. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js +29 -0
  27. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js.map +1 -0
  28. package/lib/index.css +2 -2
  29. package/lib/index.css.map +1 -1
  30. package/lib/index.d.ts +9 -2
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +12 -2
  33. package/lib/index.js.map +1 -1
  34. package/lib/models/DSLPersistence_ModelUtils.d.ts +5 -0
  35. package/lib/models/DSLPersistence_ModelUtils.d.ts.map +1 -1
  36. package/lib/models/DSLPersistence_ModelUtils.js +9 -0
  37. package/lib/models/DSLPersistence_ModelUtils.js.map +1 -1
  38. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts +29 -0
  39. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts.map +1 -0
  40. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js +37 -0
  41. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js.map +1 -0
  42. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts +23 -0
  43. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  44. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js +25 -0
  45. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js.map +1 -0
  46. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts +34 -0
  47. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts.map +1 -0
  48. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js +49 -0
  49. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js.map +1 -0
  50. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts +3 -2
  51. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts.map +1 -1
  52. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js +6 -1
  53. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js.map +1 -1
  54. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.d.ts +2 -2
  55. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.d.ts.map +1 -1
  56. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js +1 -1
  57. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js.map +1 -1
  58. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts +1 -0
  59. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts.map +1 -1
  60. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js +33 -0
  61. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js.map +1 -1
  62. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts +30 -0
  63. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
  64. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js +17 -0
  65. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js.map +1 -0
  66. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts +28 -0
  67. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts.map +1 -0
  68. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js +37 -0
  69. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js.map +1 -0
  70. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts +23 -0
  71. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  72. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js +25 -0
  73. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js.map +1 -0
  74. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts +34 -0
  75. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts.map +1 -0
  76. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js +49 -0
  77. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js.map +1 -0
  78. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts +2 -1
  79. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts.map +1 -1
  80. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js +6 -1
  81. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js.map +1 -1
  82. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts +2 -0
  83. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts.map +1 -1
  84. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js +2 -1
  85. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js.map +1 -1
  86. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts +36 -0
  87. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts.map +1 -0
  88. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js +75 -0
  89. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js.map +1 -0
  90. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.d.ts.map +1 -1
  91. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js +7 -2
  92. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js.map +1 -1
  93. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.d.ts.map +1 -1
  94. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js +11 -4
  95. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js.map +1 -1
  96. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts +35 -0
  97. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts.map +1 -0
  98. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js +74 -0
  99. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js.map +1 -0
  100. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts +31 -0
  101. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts.map +1 -0
  102. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js +118 -0
  103. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js.map +1 -0
  104. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts +3 -3
  105. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts.map +1 -1
  106. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js +3 -5
  107. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js.map +1 -1
  108. package/lib/package.json +5 -5
  109. package/package.json +12 -12
  110. package/src/components/studio/DSLPersistence_CodeSnippets.ts +6 -1
  111. package/src/components/studio/{DSLPersistence_LegendStudioPlugin.tsx → DSLPersistence_LegendStudioApplicationPlugin.tsx} +51 -12
  112. package/src/components/studio/DSLPersistence_LegendStudioDocumentation.ts +1 -0
  113. package/src/graph/DSLPersistence_PureGraphPlugin.ts +2 -1
  114. package/src/graphManager/DSLPersistence_GraphManagerHelper.ts +20 -0
  115. package/src/graphManager/DSLPersistence_PureGraphManagerPlugin.ts +12 -1
  116. package/src/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.ts +38 -0
  117. package/src/index.ts +14 -2
  118. package/src/models/DSLPersistence_ModelUtils.ts +14 -0
  119. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.ts +50 -0
  120. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.ts +30 -0
  121. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.ts +61 -0
  122. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.ts +8 -2
  123. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.ts +3 -7
  124. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.ts +52 -0
  125. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts +57 -0
  126. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.ts +51 -0
  127. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.ts +31 -0
  128. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.ts +64 -0
  129. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.ts +7 -2
  130. package/src/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.ts +13 -1
  131. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.ts +141 -0
  132. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts +11 -6
  133. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts +15 -12
  134. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.ts +151 -0
  135. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.ts +242 -0
  136. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.ts +20 -31
  137. package/tsconfig.json +12 -1
  138. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.d.ts.map +0 -1
  139. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.js.map +0 -1
@@ -15,12 +15,13 @@
15
15
  */
16
16
 
17
17
  import packageJson from '../../../package.json';
18
- import { MeteorIcon } from '@finos/legend-art';
18
+ import type { DocumentationEntry } from '@finos/legend-application';
19
+ import { MeteorIcon, PuzzlePieceIcon } from '@finos/legend-art';
19
20
  import type { PackageableElement } from '@finos/legend-graph';
20
21
  import {
21
- LegendStudioPlugin,
22
+ LegendStudioApplicationPlugin,
22
23
  UnsupportedElementEditorState,
23
- type DSL_LegendStudioPlugin_Extension,
24
+ type DSL_LegendStudioApplicationPlugin_Extension,
24
25
  type EditorStore,
25
26
  type ElementEditorState,
26
27
  type ElementEditorStateCreator,
@@ -36,21 +37,29 @@ import {
36
37
  type PureGrammarParserDocumentationGetter,
37
38
  } from '@finos/legend-studio';
38
39
  import { Persistence } from '../../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
40
+ import { PersistenceContext } from '../../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
39
41
  import {
42
+ PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL,
40
43
  PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL,
41
44
  PURE_GRAMMAR_PERSISTENCE_PARSER_NAME,
42
45
  } from '../../graphManager/DSLPersistence_PureGraphManagerPlugin.js';
46
+ import {
47
+ BLANK_PERSISTENCE_CONTEXT_SNIPPET,
48
+ BLANK_PERSISTENCE_SNIPPET,
49
+ } from './DSLPersistence_CodeSnippets.js';
43
50
  import { DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY } from './DSLPersistence_LegendStudioDocumentation.js';
44
- import { BLANK_PERSISTENCE_SNIPPET } from './DSLPersistence_CodeSnippets.js';
45
- import type { LegendApplicationDocumentationEntry } from '@finos/legend-application';
46
51
 
47
52
  const PERSISTENCE_ELEMENT_TYPE = 'PERSISTENCE';
53
+ const PERSISTENCE_CONTEXT_ELEMENT_TYPE = 'PERSISTENCE_CONTEXT';
54
+
48
55
  const PERSISTENCE_ELEMENT_PROJECT_EXPLORER_DND_TYPE =
49
56
  'PROJECT_EXPLORER_PERSISTENCE';
57
+ const PERSISTENCE_CONTEXT_ELEMENT_PROJECT_EXPLORER_DND_TYPE =
58
+ 'PROJECT_EXPLORER_PERSISTENCE_CONTEXT';
50
59
 
51
- export class DSLPersistence_LegendStudioPlugin
52
- extends LegendStudioPlugin
53
- implements DSL_LegendStudioPlugin_Extension
60
+ export class DSLPersistence_LegendStudioApplicationPlugin
61
+ extends LegendStudioApplicationPlugin
62
+ implements DSL_LegendStudioApplicationPlugin_Extension
54
63
  {
55
64
  constructor() {
56
65
  super(packageJson.extensions.studioPlugin, packageJson.version);
@@ -59,12 +68,13 @@ export class DSLPersistence_LegendStudioPlugin
59
68
  override getExtraRequiredDocumentationKeys(): string[] {
60
69
  return [
61
70
  DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_ELEMENT_PERSISTENCE,
71
+ DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_ELEMENT_PERSISTENCE_CONTEXT,
62
72
  DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_PARSER,
63
73
  ];
64
74
  }
65
75
 
66
76
  getExtraSupportedElementTypes(): string[] {
67
- return [PERSISTENCE_ELEMENT_TYPE];
77
+ return [PERSISTENCE_ELEMENT_TYPE, PERSISTENCE_CONTEXT_ELEMENT_TYPE];
68
78
  }
69
79
 
70
80
  getExtraElementTypeGetters(): ElementTypeGetter[] {
@@ -72,6 +82,8 @@ export class DSLPersistence_LegendStudioPlugin
72
82
  (element: PackageableElement): string | undefined => {
73
83
  if (element instanceof Persistence) {
74
84
  return PERSISTENCE_ELEMENT_TYPE;
85
+ } else if (element instanceof PersistenceContext) {
86
+ return PERSISTENCE_CONTEXT_ELEMENT_TYPE;
75
87
  }
76
88
  return undefined;
77
89
  },
@@ -87,6 +99,12 @@ export class DSLPersistence_LegendStudioPlugin
87
99
  <MeteorIcon />
88
100
  </div>
89
101
  );
102
+ } else if (type === PERSISTENCE_CONTEXT_ELEMENT_TYPE) {
103
+ return (
104
+ <div className="icon icon--persistence-context">
105
+ <PuzzlePieceIcon />
106
+ </div>
107
+ );
90
108
  }
91
109
  return undefined;
92
110
  },
@@ -102,6 +120,8 @@ export class DSLPersistence_LegendStudioPlugin
102
120
  ): PackageableElement | undefined => {
103
121
  if (type === PERSISTENCE_ELEMENT_TYPE) {
104
122
  return new Persistence(name);
123
+ } else if (type === PERSISTENCE_CONTEXT_ELEMENT_TYPE) {
124
+ return new PersistenceContext(name);
105
125
  }
106
126
  return undefined;
107
127
  },
@@ -116,6 +136,8 @@ export class DSLPersistence_LegendStudioPlugin
116
136
  ): ElementEditorState | undefined => {
117
137
  if (element instanceof Persistence) {
118
138
  return new UnsupportedElementEditorState(editorStore, element);
139
+ } else if (element instanceof PersistenceContext) {
140
+ return new UnsupportedElementEditorState(editorStore, element);
119
141
  }
120
142
  return undefined;
121
143
  },
@@ -127,6 +149,8 @@ export class DSLPersistence_LegendStudioPlugin
127
149
  (element: PackageableElement): string | undefined => {
128
150
  if (element instanceof Persistence) {
129
151
  return PERSISTENCE_ELEMENT_PROJECT_EXPLORER_DND_TYPE;
152
+ } else if (element instanceof PersistenceContext) {
153
+ return PERSISTENCE_CONTEXT_ELEMENT_PROJECT_EXPLORER_DND_TYPE;
130
154
  }
131
155
  return undefined;
132
156
  },
@@ -134,7 +158,10 @@ export class DSLPersistence_LegendStudioPlugin
134
158
  }
135
159
 
136
160
  getExtraGrammarTextEditorDnDTypes(): string[] {
137
- return [PERSISTENCE_ELEMENT_PROJECT_EXPLORER_DND_TYPE];
161
+ return [
162
+ PERSISTENCE_ELEMENT_PROJECT_EXPLORER_DND_TYPE,
163
+ PERSISTENCE_CONTEXT_ELEMENT_PROJECT_EXPLORER_DND_TYPE,
164
+ ];
138
165
  }
139
166
 
140
167
  getExtraPureGrammarParserElementDocumentationGetters(): PureGrammarParserElementDocumentationGetter[] {
@@ -143,12 +170,19 @@ export class DSLPersistence_LegendStudioPlugin
143
170
  editorStore: EditorStore,
144
171
  parserKeyword: string,
145
172
  elementKeyword: string,
146
- ): LegendApplicationDocumentationEntry | undefined => {
173
+ ): DocumentationEntry | undefined => {
147
174
  if (parserKeyword === PURE_GRAMMAR_PERSISTENCE_PARSER_NAME) {
148
175
  if (elementKeyword === PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL) {
149
176
  return editorStore.applicationStore.documentationService.getDocEntry(
150
177
  DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_ELEMENT_PERSISTENCE,
151
178
  );
179
+ } else if (
180
+ elementKeyword ===
181
+ PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL
182
+ ) {
183
+ return editorStore.applicationStore.documentationService.getDocEntry(
184
+ DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_ELEMENT_PERSISTENCE_CONTEXT,
185
+ );
152
186
  }
153
187
  }
154
188
  return undefined;
@@ -161,7 +195,7 @@ export class DSLPersistence_LegendStudioPlugin
161
195
  (
162
196
  editorStore: EditorStore,
163
197
  parserKeyword: string,
164
- ): LegendApplicationDocumentationEntry | undefined => {
198
+ ): DocumentationEntry | undefined => {
165
199
  if (parserKeyword === PURE_GRAMMAR_PERSISTENCE_PARSER_NAME) {
166
200
  return editorStore.applicationStore.documentationService.getDocEntry(
167
201
  DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_PARSER,
@@ -201,6 +235,11 @@ export class DSLPersistence_LegendStudioPlugin
201
235
  description: '(blank)',
202
236
  insertText: BLANK_PERSISTENCE_SNIPPET,
203
237
  },
238
+ {
239
+ text: PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL,
240
+ description: '(blank)',
241
+ insertText: BLANK_PERSISTENCE_CONTEXT_SNIPPET,
242
+ },
204
243
  ]
205
244
  : undefined,
206
245
  ];
@@ -17,4 +17,5 @@
17
17
  export enum DSL_PERSISTENCE_LEGEND_STUDIO_DOCUMENTATION_KEY {
18
18
  GRAMMAR_PARSER = 'dsl-persistence.grammar.parser',
19
19
  GRAMMAR_ELEMENT_PERSISTENCE = 'dsl-persistence.grammar.element.persistence',
20
+ GRAMMAR_ELEMENT_PERSISTENCE_CONTEXT = 'dsl-persistence.grammar.element.persistence-context',
20
21
  }
@@ -16,6 +16,7 @@
16
16
 
17
17
  import packageJson from '../../package.json';
18
18
  import { Persistence } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
19
+ import { PersistenceContext } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
19
20
  import type { Clazz } from '@finos/legend-shared';
20
21
  import { type PackageableElement, PureGraphPlugin } from '@finos/legend-graph';
21
22
 
@@ -25,6 +26,6 @@ export class DSLPersistence_PureGraphPlugin extends PureGraphPlugin {
25
26
  }
26
27
 
27
28
  override getExtraPureGraphExtensionClasses(): Clazz<PackageableElement>[] {
28
- return [Persistence];
29
+ return [Persistence, PersistenceContext];
29
30
  }
30
31
  }
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import { Persistence } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
18
+ import { PersistenceContext } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
18
19
  import type { BasicModel, PureModel } from '@finos/legend-graph';
19
20
  import { guaranteeNonNullable } from '@finos/legend-shared';
20
21
 
@@ -25,6 +26,16 @@ export const getPersistence = (path: string, graph: PureModel): Persistence =>
25
26
  `Can't find persistence '${path}'`,
26
27
  );
27
28
 
29
+ export const getPersistenceContext = (
30
+ path: string,
31
+ graph: PureModel,
32
+ ): PersistenceContext =>
33
+ graph.getExtensionElement(
34
+ path,
35
+ PersistenceContext,
36
+ `Can't find persistence context '${path}'`,
37
+ );
38
+
28
39
  export const getOwnPersistence = (
29
40
  path: string,
30
41
  graph: BasicModel,
@@ -33,3 +44,12 @@ export const getOwnPersistence = (
33
44
  graph.getOwnNullableExtensionElement(path, Persistence),
34
45
  `Can't find persistence '${path}'`,
35
46
  );
47
+
48
+ export const getOwnPersistenceContext = (
49
+ path: string,
50
+ graph: BasicModel,
51
+ ): PersistenceContext =>
52
+ guaranteeNonNullable(
53
+ graph.getOwnNullableExtensionElement(path, PersistenceContext),
54
+ `Can't find persistence context '${path}'`,
55
+ );
@@ -16,7 +16,9 @@
16
16
 
17
17
  import packageJson from '../../package.json';
18
18
  import { Persistence } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
19
+ import { PersistenceContext } from '../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
19
20
  import { observe_Persistence } from './action/changeDetection/DSLPersistence_ObserverHelper.js';
21
+ import { observe_PersistenceContext } from './action/changeDetection/DSLPersistenceContext_ObserverHelper.js';
20
22
  import {
21
23
  PureGraphManagerPlugin,
22
24
  type PackageableElement,
@@ -27,6 +29,8 @@ import {
27
29
 
28
30
  export const PURE_GRAMMAR_PERSISTENCE_PARSER_NAME = 'Persistence';
29
31
  export const PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL = 'Persistence';
32
+ export const PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL =
33
+ 'PersistenceContext';
30
34
 
31
35
  export class DSLPersistence_PureGraphManagerPlugin extends PureGraphManagerPlugin {
32
36
  constructor() {
@@ -38,7 +42,10 @@ export class DSLPersistence_PureGraphManagerPlugin extends PureGraphManagerPlugi
38
42
  }
39
43
 
40
44
  override getExtraPureGrammarKeywords(): string[] {
41
- return [PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL];
45
+ return [
46
+ PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL,
47
+ PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL,
48
+ ];
42
49
  }
43
50
 
44
51
  override getExtraPureGrammarElementLabelers(): PureGrammarElementLabeler[] {
@@ -46,6 +53,8 @@ export class DSLPersistence_PureGraphManagerPlugin extends PureGraphManagerPlugi
46
53
  (element: PackageableElement): string | undefined => {
47
54
  if (element instanceof Persistence) {
48
55
  return PURE_GRAMMAR_PERSISTENCE_ELEMENT_TYPE_LABEL;
56
+ } else if (element instanceof PersistenceContext) {
57
+ return PURE_GRAMMAR_PERSISTENCE_CONTEXT_ELEMENT_TYPE_LABEL;
49
58
  }
50
59
  return undefined;
51
60
  },
@@ -60,6 +69,8 @@ export class DSLPersistence_PureGraphManagerPlugin extends PureGraphManagerPlugi
60
69
  ): PackageableElement | undefined => {
61
70
  if (element instanceof Persistence) {
62
71
  return observe_Persistence(element);
72
+ } else if (element instanceof PersistenceContext) {
73
+ return observe_PersistenceContext(element);
63
74
  }
64
75
  return undefined;
65
76
  },
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { PersistenceContext } from '../../../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
18
+ import {
19
+ observe_Abstract_PackageableElement,
20
+ skipObserved,
21
+ } from '@finos/legend-graph';
22
+ import { makeObservable, observable, override } from 'mobx';
23
+
24
+ export const observe_PersistenceContext = skipObserved(
25
+ (metamodel: PersistenceContext): PersistenceContext => {
26
+ observe_Abstract_PackageableElement(metamodel);
27
+
28
+ makeObservable<PersistenceContext, '_elementHashCode'>(metamodel, {
29
+ persistence: observable,
30
+ platform: observable,
31
+ serviceParameters: observable,
32
+ sinkConnection: observable,
33
+ _elementHashCode: override,
34
+ });
35
+
36
+ return metamodel;
37
+ },
38
+ );
package/src/index.ts CHANGED
@@ -15,17 +15,29 @@
15
15
  */
16
16
 
17
17
  export * from './DSLPersistence_Extension.js';
18
- export { DSLPersistence_LegendStudioPlugin } from './components/studio/DSLPersistence_LegendStudioPlugin.js';
18
+ export { DSLPersistence_LegendStudioApplicationPlugin } from './components/studio/DSLPersistence_LegendStudioApplicationPlugin.js';
19
19
 
20
20
  // ---------- PACKAGEABLE ELEMENT ----------
21
21
 
22
22
  // metamodels
23
23
  export { Persistence } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
24
+ export { PersistenceContext } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
25
+ export { PersistencePlatform } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
24
26
 
25
27
  // v1 protocols
26
28
  export { V1_Persistence } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Persistence.js';
29
+ export { V1_PersistenceContext } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
30
+ export { V1_PersistencePlatform } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
27
31
 
28
32
  // ---------- TRANSFORMATION ----------
29
33
 
30
- export { V1_transformPersistence } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js';
34
+ // extension
35
+ export * from './models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
36
+
37
+ // builders
31
38
  export { V1_buildPersistence } from './models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js';
39
+ export { V1_buildPersistenceContext } from './models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js';
40
+
41
+ // transformers
42
+ export { V1_transformPersistence } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js';
43
+ export { V1_transformPersistenceContext } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js';
@@ -15,6 +15,20 @@
15
15
  */
16
16
 
17
17
  export enum PERSISTENCE_HASH_STRUCTURE {
18
+ // ----- PERSISTENCE CONTEXT -----
19
+
20
+ PERSISTENCE_CONTEXT = 'PERSISTENCE_CONTEXT',
21
+
22
+ // platform
23
+ DEFAULT_PERSISTENCE_PLATFORM = 'DEFAULT_PERSISTENCE_PLATFORM',
24
+
25
+ // service parameter
26
+ SERVICE_PARAMETER = 'SERVICE_PARAMETER',
27
+ PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER = 'PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER',
28
+ CONNECTION_VALUE_SERVICE_PARAMETER = 'CONNECTION_VALUE_SERVICE_PARAMETER',
29
+
30
+ // ----- PERSISTENCE -----
31
+
18
32
  PERSISTENCE = 'PERSISTENCE',
19
33
 
20
34
  // trigger
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { Persistence } from './DSLPersistence_Persistence.js';
18
+ import type { PersistencePlatform } from './DSLPersistence_PersistencePlatform.js';
19
+ import type { ServiceParameter } from './DSLPersistence_ServiceParameter.js';
20
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
21
+ import {
22
+ type Connection,
23
+ PackageableElement,
24
+ type PackageableElementReference,
25
+ type PackageableElementVisitor,
26
+ } from '@finos/legend-graph';
27
+ import { type Hashable, hashArray } from '@finos/legend-shared';
28
+
29
+ export class PersistenceContext extends PackageableElement implements Hashable {
30
+ persistence!: PackageableElementReference<Persistence>;
31
+ platform!: PersistencePlatform;
32
+ serviceParameters: ServiceParameter[] = [];
33
+ sinkConnection?: Connection;
34
+
35
+ protected override get _elementHashCode(): string {
36
+ return hashArray([
37
+ PERSISTENCE_HASH_STRUCTURE.PERSISTENCE_CONTEXT,
38
+ this.persistence.valueForSerialization ?? '',
39
+ this.platform,
40
+ hashArray(this.serviceParameters),
41
+ this.sinkConnection ?? '',
42
+ ]);
43
+ }
44
+
45
+ accept_PackageableElementVisitor<T>(
46
+ visitor: PackageableElementVisitor<T>,
47
+ ): T {
48
+ return visitor.visit_PackageableElement(this);
49
+ }
50
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
18
+ import { type Hashable, hashArray } from '@finos/legend-shared';
19
+
20
+ export abstract class PersistencePlatform implements Hashable {
21
+ abstract get hashCode(): string;
22
+ }
23
+ export class DefaultPersistencePlatform
24
+ extends PersistencePlatform
25
+ implements Hashable
26
+ {
27
+ override get hashCode(): string {
28
+ return hashArray([PERSISTENCE_HASH_STRUCTURE.DEFAULT_PERSISTENCE_PLATFORM]);
29
+ }
30
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
18
+ import type { Connection, ValueSpecification } from '@finos/legend-graph';
19
+ import { type Hashable, hashArray } from '@finos/legend-shared';
20
+
21
+ export class ServiceParameter implements Hashable {
22
+ name!: string;
23
+ value!: ServiceParameterValue;
24
+
25
+ get hashCode(): string {
26
+ return hashArray([
27
+ PERSISTENCE_HASH_STRUCTURE.SERVICE_PARAMETER,
28
+ this.name,
29
+ this.value,
30
+ ]);
31
+ }
32
+ }
33
+
34
+ export abstract class ServiceParameterValue implements Hashable {
35
+ abstract get hashCode(): string;
36
+ }
37
+
38
+ export class PrimitiveTypeValue
39
+ extends ServiceParameterValue
40
+ implements Hashable
41
+ {
42
+ primitiveType!: ValueSpecification;
43
+
44
+ override get hashCode(): string {
45
+ return hashArray([
46
+ PERSISTENCE_HASH_STRUCTURE.PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER,
47
+ //TODO: ledav -- hash value specification
48
+ ]);
49
+ }
50
+ }
51
+
52
+ export class ConnectionValue extends ServiceParameterValue implements Hashable {
53
+ connection!: Connection;
54
+
55
+ override get hashCode(): string {
56
+ return hashArray([
57
+ PERSISTENCE_HASH_STRUCTURE.CONNECTION_VALUE_SERVICE_PARAMETER,
58
+ this.connection,
59
+ ]);
60
+ }
61
+ }
@@ -18,6 +18,7 @@ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelU
18
18
  import type {
19
19
  Binding,
20
20
  Connection,
21
+ Database,
21
22
  PackageableElementReference,
22
23
  } from '@finos/legend-graph';
23
24
  import { type Hashable, hashArray } from '@finos/legend-shared';
@@ -27,11 +28,15 @@ export abstract class Sink implements Hashable {
27
28
  }
28
29
 
29
30
  export class RelationalSink extends Sink implements Hashable {
31
+ //TODO: ledav -- make required once persistence changes are rolled out in engine
32
+ database?: PackageableElementReference<Database>;
33
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
30
34
  connection?: Connection;
31
35
 
32
36
  override get hashCode(): string {
33
37
  return hashArray([
34
38
  PERSISTENCE_HASH_STRUCTURE.RELATIONAL_SINK,
39
+ this.database?.valueForSerialization ?? '',
35
40
  this.connection ?? '',
36
41
  ]);
37
42
  }
@@ -39,13 +44,14 @@ export class RelationalSink extends Sink implements Hashable {
39
44
 
40
45
  export class ObjectStorageSink extends Sink implements Hashable {
41
46
  binding!: PackageableElementReference<Binding>;
42
- connection!: Connection;
47
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
48
+ connection?: Connection;
43
49
 
44
50
  override get hashCode(): string {
45
51
  return hashArray([
46
52
  PERSISTENCE_HASH_STRUCTURE.OBJECT_STORAGE_SINK,
47
53
  this.binding.valueForSerialization ?? '',
48
- this.connection,
54
+ this.connection ?? '',
49
55
  ]);
50
56
  }
51
57
  }
@@ -17,18 +17,14 @@
17
17
  import type { DeduplicationStrategy } from './DSLPersistence_DeduplicationStrategy.js';
18
18
  import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
19
19
  import { type Hashable, hashArray } from '@finos/legend-shared';
20
- import type {
21
- Class,
22
- OptionalPackageableElementReference,
23
- PackageableElementReference,
24
- } from '@finos/legend-graph';
20
+ import type { Class, PackageableElementReference } from '@finos/legend-graph';
25
21
 
26
22
  export abstract class TargetShape implements Hashable {
27
23
  abstract get hashCode(): string;
28
24
  }
29
25
 
30
26
  export class FlatTarget extends TargetShape implements Hashable {
31
- modelClass!: OptionalPackageableElementReference<Class>;
27
+ modelClass?: PackageableElementReference<Class> | undefined;
32
28
  targetName!: string;
33
29
  partitionFields: string[] = [];
34
30
  deduplicationStrategy!: DeduplicationStrategy;
@@ -36,7 +32,7 @@ export class FlatTarget extends TargetShape implements Hashable {
36
32
  override get hashCode(): string {
37
33
  return hashArray([
38
34
  PERSISTENCE_HASH_STRUCTURE.FLAT_TARGET,
39
- this.modelClass.valueForSerialization ?? '',
35
+ this.modelClass?.valueForSerialization ?? '',
40
36
  this.targetName,
41
37
  hashArray(this.partitionFields),
42
38
  this.deduplicationStrategy,