geonetwork-ui 2.3.0-dev.376e0e90 → 2.3.0-dev.f736344f

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 (114) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +52 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +48 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +18 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +64 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +130 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +62 -58
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +58 -75
  12. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +14 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +14 -76
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  15. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  16. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
  17. package/fesm2022/geonetwork-ui.mjs +245 -822
  18. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  19. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  20. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  21. package/libs/api/metadata-converter/src/lib/gn4/{gn4.converter.d.ts → gn4.metadata.mapper.d.ts} +5 -5
  22. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -0
  23. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
  24. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +1 -0
  25. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +1 -0
  26. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +1 -0
  27. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +4 -0
  28. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -0
  29. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +6 -34
  30. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  31. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -39
  32. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  33. package/libs/api/metadata-converter/src/lib/{base.converter.d.ts → metadata-base.mapper.d.ts} +3 -3
  34. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +1 -0
  35. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -14
  36. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  37. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  38. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  39. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +4 -6
  40. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  44. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +5 -32
  45. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +4 -11
  46. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +7 -33
  47. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
  48. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
  49. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.converter.ts → gn4.metadata.mapper.ts} +2 -2
  50. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +196 -0
  51. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +82 -121
  52. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +95 -175
  53. package/src/libs/api/metadata-converter/src/lib/{base.converter.ts → metadata-base.mapper.ts} +2 -2
  54. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +16 -84
  55. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  56. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +4 -9
  57. package/src/libs/feature/editor/src/lib/services/editor.service.ts +16 -27
  58. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +0 -14
  59. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +0 -15
  60. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +0 -52
  61. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +0 -4
  62. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +0 -2
  63. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +0 -123
  64. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +0 -116
  65. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +0 -138
  66. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +0 -2
  67. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +0 -242
  68. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +0 -18
  69. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +0 -14
  70. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +0 -48
  71. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +0 -18
  72. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +0 -64
  73. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +0 -1
  74. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +0 -3
  75. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +0 -1
  76. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +0 -1
  77. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +0 -4
  78. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +0 -1
  79. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +0 -2
  80. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +0 -1
  81. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +0 -9
  82. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +0 -1
  83. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +0 -20
  84. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +0 -1
  85. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +0 -21
  86. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +0 -1
  87. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +0 -2
  88. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +0 -1
  89. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +0 -11
  90. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +0 -1
  91. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +0 -8
  92. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +0 -1
  93. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +0 -1
  94. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +0 -1
  95. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +0 -1
  96. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +0 -1
  97. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +0 -16
  98. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +0 -580
  99. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +0 -3
  100. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +0 -1
  101. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +0 -176
  102. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +0 -329
  103. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +0 -513
  104. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +0 -1
  105. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +0 -327
  106. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +0 -20
  107. /package/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/keyword.mapper.d.ts +0 -0
  108. /package/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/role.mapper.d.ts +0 -0
  109. /package/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/status.mapper.d.ts +0 -0
  110. /package/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/update-frequency.mapper.d.ts +0 -0
  111. /package/src/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/keyword.mapper.ts +0 -0
  112. /package/src/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/role.mapper.ts +0 -0
  113. /package/src/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/status.mapper.ts +0 -0
  114. /package/src/libs/api/metadata-converter/src/lib/iso19139/{utils → codelists}/update-frequency.mapper.ts +0 -0
@@ -1,513 +0,0 @@
1
- import {
2
- CatalogRecord,
3
- DatasetRecord,
4
- Individual,
5
- ServiceOnlineResource,
6
- } from '../../../../../../libs/common/domain/src/lib/model/record'
7
- import {
8
- addAttribute,
9
- allChildrenElement,
10
- appendChildren,
11
- appendChildTree,
12
- createChild,
13
- createElement,
14
- findChildElement,
15
- findChildOrCreate,
16
- findChildrenElement,
17
- findNestedChildOrCreate,
18
- findNestedElement,
19
- findNestedElements,
20
- readAttribute,
21
- removeAllChildren,
22
- removeChildren,
23
- removeChildrenByName,
24
- setTextContent,
25
- XmlElement,
26
- } from '../xml-utils'
27
- import {
28
- fallback,
29
- filterArray,
30
- getAtIndex,
31
- map,
32
- mapArray,
33
- noop,
34
- pipe,
35
- } from '../function-utils'
36
- import {
37
- appendDistribution,
38
- appendKeywords,
39
- createDistributionInfo,
40
- findOrCreateDistribution,
41
- findOrCreateIdentification,
42
- getProgressCode,
43
- getRoleCode,
44
- getServiceEndpointProtocol,
45
- removeKeywords,
46
- writeCharacterString,
47
- writeDateTime,
48
- writeLinkage,
49
- } from '../iso19139/write-parts'
50
- import { findIdentification } from '../iso19139/read-parts'
51
- import { namePartsToFull } from '../iso19139/utils/individual-name'
52
-
53
- export function writeUniqueIdentifier(
54
- record: CatalogRecord,
55
- rootEl: XmlElement
56
- ) {
57
- pipe(
58
- findChildOrCreate('mdb:metadataIdentifier'),
59
- findChildOrCreate('mcc:MD_Identifier'),
60
- findChildOrCreate('mcc:code'),
61
- writeCharacterString(record.uniqueIdentifier)
62
- )(rootEl)
63
- }
64
-
65
- export function writeKind(record: CatalogRecord, rootEl: XmlElement) {
66
- pipe(
67
- findNestedChildOrCreate(
68
- 'mdb:metadataScope',
69
- 'mdb:MD_MetadataScope',
70
- 'mdb:resourceScope',
71
- 'mcc:MD_ScopeCode'
72
- ),
73
- addAttribute(
74
- 'codeList',
75
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode'
76
- ),
77
- addAttribute('codeListValue', record.kind),
78
- setTextContent(record.kind)
79
- )(rootEl)
80
- }
81
-
82
- function removeRecordDate(type: 'revision' | 'creation' | 'publication') {
83
- return removeChildren(
84
- pipe(
85
- findChildrenElement('mdb:dateInfo', false),
86
- filterArray(
87
- pipe(
88
- findChildElement('cit:CI_DateTypeCode'),
89
- readAttribute('codeListValue'),
90
- map((value) => value === type)
91
- )
92
- )
93
- )
94
- )
95
- }
96
-
97
- function appendRecordDate(
98
- date: Date,
99
- type: 'revision' | 'creation' | 'publication'
100
- ) {
101
- return appendChildren(
102
- pipe(
103
- createElement('mdb:dateInfo'),
104
- createChild('cit:CI_Date'),
105
- appendChildren(
106
- pipe(createElement('cit:date'), writeDateTime(date)),
107
- pipe(
108
- createElement('cit:dateType'),
109
- createChild('cit:CI_DateTypeCode'),
110
- addAttribute(
111
- 'codeList',
112
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode'
113
- ),
114
- addAttribute('codeListValue', type),
115
- setTextContent(type)
116
- )
117
- )
118
- )
119
- )
120
- }
121
-
122
- export function writeRecordUpdated(record: CatalogRecord, rootEl: XmlElement) {
123
- removeRecordDate('revision')(rootEl)
124
- appendRecordDate(record.recordUpdated, 'revision')(rootEl)
125
- }
126
-
127
- export function writeRecordCreated(record: CatalogRecord, rootEl: XmlElement) {
128
- removeRecordDate('creation')(rootEl)
129
- if (!('recordCreated' in record)) return
130
- appendRecordDate(record.recordCreated, 'creation')(rootEl)
131
- }
132
-
133
- export function writeRecordPublished(
134
- record: CatalogRecord,
135
- rootEl: XmlElement
136
- ) {
137
- removeRecordDate('publication')(rootEl)
138
- if (!('recordPublished' in record)) return
139
- appendRecordDate(record.recordPublished, 'publication')(rootEl)
140
- }
141
-
142
- function removeResourceDate(type: 'revision' | 'creation' | 'publication') {
143
- return pipe(
144
- findIdentification(),
145
- findNestedElement('mri:citation', 'cit:CI_Citation'),
146
- removeChildren(
147
- pipe(
148
- findChildrenElement('cit:date', false),
149
- filterArray(
150
- pipe(
151
- findChildElement('cit:CI_DateTypeCode'),
152
- readAttribute('codeListValue'),
153
- map((value) => value === type)
154
- )
155
- )
156
- )
157
- )
158
- )
159
- }
160
-
161
- function appendResourceDate(
162
- date: Date,
163
- type: 'revision' | 'creation' | 'publication'
164
- ) {
165
- return pipe(
166
- findIdentification(),
167
- findNestedElement('mri:citation', 'cit:CI_Citation'),
168
- appendChildren(
169
- pipe(
170
- createElement('cit:date'),
171
- createChild('cit:CI_Date'),
172
- appendChildren(
173
- pipe(createElement('cit:date'), writeDateTime(date)),
174
- pipe(
175
- createElement('cit:dateType'),
176
- createChild('cit:CI_DateTypeCode'),
177
- addAttribute(
178
- 'codeList',
179
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode'
180
- ),
181
- addAttribute('codeListValue', type),
182
- setTextContent(type)
183
- )
184
- )
185
- )
186
- )
187
- )
188
- }
189
-
190
- export function writeResourceUpdated(
191
- record: CatalogRecord,
192
- rootEl: XmlElement
193
- ) {
194
- removeResourceDate('revision')(rootEl)
195
- if (!('resourceUpdated' in record)) return
196
- appendResourceDate(record.resourceUpdated, 'revision')(rootEl)
197
- }
198
-
199
- export function writeResourceCreated(
200
- record: CatalogRecord,
201
- rootEl: XmlElement
202
- ) {
203
- removeResourceDate('creation')(rootEl)
204
- if (!('resourceCreated' in record)) return
205
- appendResourceDate(record.resourceCreated, 'creation')(rootEl)
206
- }
207
-
208
- export function writeResourcePublished(
209
- record: CatalogRecord,
210
- rootEl: XmlElement
211
- ) {
212
- removeResourceDate('publication')(rootEl)
213
- if (!('resourcePublished' in record)) return
214
- appendResourceDate(record.resourcePublished, 'publication')(rootEl)
215
- }
216
-
217
- export function writeOwnerOrganization(
218
- record: CatalogRecord,
219
- rootEl: XmlElement
220
- ) {
221
- // if no contact matches the owner org, create an empty one
222
- const ownerContact: Individual = record.contacts.find(
223
- (contact) => contact.organization.name === record.ownerOrganization.name
224
- )
225
- pipe(
226
- findChildOrCreate('mdb:contact'),
227
- removeAllChildren(),
228
- appendResponsibleParty(
229
- ownerContact
230
- ? {
231
- ...ownerContact,
232
- // owner responsible party is always point of contact
233
- role: 'point_of_contact',
234
- }
235
- : {
236
- organization: record.ownerOrganization,
237
- email: 'missing@missing.com',
238
- role: 'point_of_contact',
239
- }
240
- )
241
- )(rootEl)
242
- }
243
-
244
- export function appendResponsibleParty(contact: Individual) {
245
- const fullName = namePartsToFull(contact.firstName, contact.lastName)
246
-
247
- const createIndividual = pipe(
248
- createElement('cit:individual'),
249
- createChild('cit:CI_Individual'),
250
- fullName
251
- ? appendChildren(
252
- pipe(createElement('cit:name'), writeCharacterString(fullName))
253
- )
254
- : noop,
255
- contact.position
256
- ? appendChildren(
257
- pipe(
258
- createElement('cit:positionName'),
259
- writeCharacterString(contact.position)
260
- )
261
- )
262
- : noop
263
- )
264
-
265
- const createContactInfo = pipe(
266
- createElement('cit:contactInfo'),
267
- createChild('cit:CI_Contact'),
268
- appendChildren(
269
- pipe(
270
- createElement('cit:address'),
271
- createChild('cit:CI_Address'),
272
- appendChildren(
273
- pipe(
274
- createElement('cit:electronicMailAddress'),
275
- writeCharacterString(contact.email)
276
- )
277
- ),
278
- contact.address
279
- ? appendChildren(
280
- pipe(
281
- createElement('cit:deliveryPoint'),
282
- writeCharacterString(contact.address)
283
- )
284
- )
285
- : noop
286
- )
287
- ),
288
- contact.organization?.website
289
- ? appendChildren(
290
- pipe(
291
- createElement('cit:onlineResource'),
292
- createChild('cit:CI_OnlineResource'),
293
- createChild('cit:linkage'),
294
- writeCharacterString(contact.organization.website.toString())
295
- )
296
- )
297
- : noop,
298
- contact.phone
299
- ? appendChildren(
300
- pipe(
301
- createElement('cit:phone'),
302
- createChild('cit:CI_Telephone'),
303
- createChild('cit:number'),
304
- writeCharacterString(contact.phone)
305
- )
306
- )
307
- : noop
308
- )
309
-
310
- const createRole = pipe(
311
- createElement('cit:role'),
312
- createChild('cit:CI_RoleCode'),
313
- addAttribute(
314
- 'codeList',
315
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode'
316
- ),
317
- addAttribute('codeListValue', getRoleCode(contact.role)),
318
- setTextContent(getRoleCode(contact.role))
319
- )
320
-
321
- const createParty = pipe(
322
- createElement('cit:party'),
323
- createChild('cit:CI_Organisation'),
324
- contact.organization?.name
325
- ? appendChildren(
326
- pipe(
327
- createElement('cit:name'),
328
- writeCharacterString(contact.organization?.name)
329
- )
330
- )
331
- : noop,
332
- appendChildren(createContactInfo, createIndividual)
333
- )
334
-
335
- return appendChildren(
336
- pipe(
337
- createElement('cit:CI_Responsibility'),
338
- appendChildren(createRole, createParty)
339
- )
340
- )
341
- }
342
-
343
- export function writeContacts(record: CatalogRecord, rootEl: XmlElement) {
344
- pipe(
345
- removeChildrenByName('mdb:contact'),
346
- appendChildren(
347
- ...record.contacts.map((contact) =>
348
- pipe(createElement('gmd:contact'), appendResponsibleParty(contact))
349
- )
350
- )
351
- )(rootEl)
352
- }
353
-
354
- export function writeContactsForResource(
355
- record: CatalogRecord,
356
- rootEl: XmlElement
357
- ) {
358
- const withoutDistributors = record.contactsForResource.filter(
359
- (c) => c.role !== 'distributor'
360
- )
361
- const distributors = record.contactsForResource.filter(
362
- (c) => c.role === 'distributor'
363
- )
364
- pipe(
365
- findOrCreateIdentification(),
366
- removeChildrenByName('mri:pointOfContact'),
367
- appendChildren(
368
- ...withoutDistributors.map((contact) =>
369
- pipe(
370
- createElement('mri:pointOfContact'),
371
- appendResponsibleParty(contact)
372
- )
373
- )
374
- )
375
- )(rootEl)
376
- if (!distributors.length) return
377
- pipe(
378
- findOrCreateDistribution(),
379
- removeChildrenByName('mrd:distributor'),
380
- createChild('mrd:distributor'),
381
- createChild('mrd:MD_Distributor'),
382
- appendChildren(
383
- ...distributors.map((contact) =>
384
- pipe(
385
- createElement('mrd:distributorContact'),
386
- appendResponsibleParty(contact)
387
- )
388
- )
389
- )
390
- )(rootEl)
391
- }
392
-
393
- export function writeKeywords(record: CatalogRecord, rootEl: XmlElement) {
394
- pipe(
395
- findOrCreateIdentification(),
396
- removeKeywords(),
397
- appendKeywords(record.keywords)
398
- )(rootEl)
399
- }
400
-
401
- export function writeLandingPage(record: DatasetRecord, rootEl: XmlElement) {
402
- pipe(
403
- findNestedChildOrCreate(
404
- 'mdb:metadataLinkage',
405
- 'cit:CI_OnlineResource',
406
- 'cit:linkage'
407
- ),
408
- writeLinkage(record.landingPage)
409
- )(rootEl)
410
- }
411
-
412
- export function writeLineage(record: DatasetRecord, rootEl: XmlElement) {
413
- pipe(
414
- findNestedChildOrCreate(
415
- 'mdb:resourceLineage',
416
- 'mrl:LI_Lineage',
417
- 'mrl:statement'
418
- ),
419
- writeCharacterString(record.lineage)
420
- )(rootEl)
421
- }
422
-
423
- export function writeStatus(record: DatasetRecord, rootEl: XmlElement) {
424
- const progressCode = getProgressCode(record.status)
425
- pipe(
426
- findOrCreateIdentification(),
427
- findNestedChildOrCreate('mri:status', 'mcc:MD_ProgressCode'),
428
- addAttribute(
429
- 'codeList',
430
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ProgressCode'
431
- ),
432
- addAttribute('codeListValue', progressCode),
433
- setTextContent(progressCode)
434
- )(rootEl)
435
- }
436
-
437
- export function writeSpatialRepresentation(
438
- record: DatasetRecord,
439
- rootEl: XmlElement
440
- ) {
441
- pipe(
442
- findOrCreateIdentification(),
443
- findNestedChildOrCreate(
444
- 'mri:spatialRepresentationType',
445
- 'mcc:MD_SpatialRepresentationTypeCode'
446
- ),
447
- addAttribute(
448
- 'codeList',
449
- 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode'
450
- ),
451
- addAttribute('codeListValue', record.spatialRepresentation),
452
- setTextContent(record.spatialRepresentation)
453
- )(rootEl)
454
- }
455
-
456
- // this will remove all transfer options and formats from distribution info
457
- // and remove empty distribution info
458
- function removeTransferOptions(rootEl: XmlElement) {
459
- // remove transfer options & formats
460
- pipe(
461
- findNestedElements('mdb:distributionInfo', 'mrd:MD_Distribution'),
462
- mapArray(
463
- pipe(
464
- removeChildren(findChildrenElement('mrd:distributionFormat', false)),
465
- removeChildren(findChildrenElement('mrd:transferOptions', false))
466
- )
467
- )
468
- )(rootEl)
469
- // remove empty distributions
470
- removeChildren(
471
- pipe(
472
- findChildrenElement('mdb:distributionInfo', false),
473
- filterArray(
474
- pipe(
475
- findChildElement('mrd:MD_Distribution'),
476
- allChildrenElement,
477
- map((children) => children.length === 0)
478
- )
479
- )
480
- )
481
- )(rootEl)
482
- }
483
-
484
- function appendDistributionFormat(mimeType: string) {
485
- return appendChildren(
486
- pipe(
487
- createElement('mrd:distributionFormat'),
488
- createChild('mrd:MD_Format'),
489
- createChild('mrd:formatSpecificationCitation'),
490
- createChild('cit:CI_Citation'),
491
- createChild('cit:title'),
492
- writeCharacterString(mimeType)
493
- )
494
- )
495
- }
496
-
497
- export function writeDistributions(record: DatasetRecord, rootEl: XmlElement) {
498
- removeTransferOptions(rootEl)
499
-
500
- // for each distribution, either find an existing distribution info or create a new one
501
- record.distributions.forEach((distribution, index) => {
502
- pipe(
503
- fallback(
504
- pipe(
505
- findNestedElements('gmd:distributionInfo', 'gmd:MD_Distribution'),
506
- getAtIndex(index)
507
- ),
508
- appendChildTree(createDistributionInfo())
509
- ),
510
- appendDistribution(distribution, appendDistributionFormat)
511
- )(rootEl)
512
- })
513
- }
@@ -1 +0,0 @@
1
- export * from './iso19139.converter'