Skip to content

Commit fe5a5a6

Browse files
committed
Fix DDI converter in mock
1 parent b391d60 commit fe5a5a6

1 file changed

Lines changed: 17 additions & 56 deletions

File tree

mocks/ddi-xml-converter.js

Lines changed: 17 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,28 @@ function convertToDDIXML(jsonData, rootElementName) {
3535
root.att('xmlns', 'ddi:instance:3_3');
3636

3737
if (Array.isArray(jsonData)) {
38-
// Array of resources
38+
// Array of resources - add each directly to root
3939
jsonData.forEach(item => {
40-
const element = convertObjectToDDI(root, item);
41-
if (element) {
42-
root.importDocument(element);
43-
}
40+
convertObjectToDDI(root, item);
4441
});
4542
} else {
46-
// Single resource
47-
const element = convertObjectToDDI(root, jsonData);
48-
if (element) {
49-
root.importDocument(element);
50-
}
43+
// Single resource - add directly to root
44+
convertObjectToDDI(root, jsonData);
5145
}
5246

5347
return root.end({ pretty: true, indent: ' ', newline: '\n' });
5448
}
5549

5650
/**
57-
* Convert a single JSON object to DDI XML element
51+
* Convert a single JSON object to DDI XML element and add it to parent
5852
*/
5953
function convertObjectToDDI(parent, obj) {
6054
if (!obj || typeof obj !== 'object') {
6155
return null;
6256
}
6357

6458
const elementName = getDDIElementName(obj);
65-
const element = builder.create(elementName);
59+
const element = parent.ele(elementName);
6660

6761
// Handle isUniversallyUnique attribute
6862
if (obj.isUniversallyUnique === true) {
@@ -132,10 +126,7 @@ function convertObjectToDDI(parent, obj) {
132126

133127
// Handle concept (when resolved)
134128
if (obj.concept) {
135-
const conceptEle = convertObjectToDDI(element, obj.concept);
136-
if (conceptEle) {
137-
element.importDocument(conceptEle);
138-
}
129+
convertObjectToDDI(element, obj.concept);
139130
}
140131

141132
// Handle subclassOfReference
@@ -147,10 +138,7 @@ function convertObjectToDDI(parent, obj) {
147138

148139
// Handle subclassOf (when resolved)
149140
if (obj.subclassOf) {
150-
const subclassEle = convertObjectToDDI(element, obj.subclassOf);
151-
if (subclassEle) {
152-
element.importDocument(subclassEle);
153-
}
141+
convertObjectToDDI(element, obj.subclassOf);
154142
}
155143

156144
// Handle representation (for Variables)
@@ -168,10 +156,7 @@ function convertObjectToDDI(parent, obj) {
168156

169157
// Handle sourceVariable (when resolved)
170158
if (obj.sourceVariable) {
171-
const sourceVarEle = convertObjectToDDI(element, obj.sourceVariable);
172-
if (sourceVarEle) {
173-
element.importDocument(sourceVarEle);
174-
}
159+
convertObjectToDDI(element, obj.sourceVariable);
175160
}
176161

177162
// Handle concepts array (for ConceptScheme)
@@ -186,10 +171,7 @@ function convertObjectToDDI(parent, obj) {
186171
conceptRef.ele('r:URN', concept.urn || `urn:ddi:${concept.agencyID}:${concept.id}:${concept.version}`);
187172
} else {
188173
// It's a full Concept object
189-
const conceptEle = convertObjectToDDI(element, concept);
190-
if (conceptEle) {
191-
element.importDocument(conceptEle);
192-
}
174+
convertObjectToDDI(element, concept);
193175
}
194176
});
195177
}
@@ -206,10 +188,7 @@ function convertObjectToDDI(parent, obj) {
206188
varRef.ele('r:URN', variable.urn || `urn:ddi:${variable.agencyID}:${variable.id}:${variable.version}`);
207189
} else {
208190
// It's a full Variable object
209-
const varEle = convertObjectToDDI(element, variable);
210-
if (varEle) {
211-
element.importDocument(varEle);
212-
}
191+
convertObjectToDDI(element, variable);
213192
}
214193
});
215194
}
@@ -226,10 +205,7 @@ function convertObjectToDDI(parent, obj) {
226205
codeListRef.ele('r:URN', codeList.urn || `urn:ddi:${codeList.agencyID}:${codeList.id}:${codeList.version}`);
227206
} else {
228207
// It's a full CodeList object
229-
const codeListEle = convertObjectToDDI(element, codeList);
230-
if (codeListEle) {
231-
element.importDocument(codeListEle);
232-
}
208+
convertObjectToDDI(element, codeList);
233209
}
234210
});
235211
}
@@ -246,21 +222,15 @@ function convertObjectToDDI(parent, obj) {
246222
catRef.ele('r:URN', category.urn || `urn:ddi:${category.agencyID}:${category.id}:${category.version}`);
247223
} else {
248224
// It's a full Category object
249-
const catEle = convertObjectToDDI(element, category);
250-
if (catEle) {
251-
element.importDocument(catEle);
252-
}
225+
convertObjectToDDI(element, category);
253226
}
254227
});
255228
}
256229

257230
// Handle codes array (for CodeList)
258231
if (obj.codes && Array.isArray(obj.codes)) {
259232
obj.codes.forEach(code => {
260-
const codeEle = convertCodeToDDI(element, code);
261-
if (codeEle) {
262-
element.importDocument(codeEle);
263-
}
233+
convertCodeToDDI(element, code);
264234
});
265235
}
266236

@@ -273,10 +243,7 @@ function convertObjectToDDI(parent, obj) {
273243

274244
// Handle categoryScheme (when resolved)
275245
if (obj.categoryScheme) {
276-
const schemeEle = convertObjectToDDI(element, obj.categoryScheme);
277-
if (schemeEle) {
278-
element.importDocument(schemeEle);
279-
}
246+
convertObjectToDDI(element, obj.categoryScheme);
280247
}
281248

282249
// Handle categoryReference (for Code)
@@ -288,10 +255,7 @@ function convertObjectToDDI(parent, obj) {
288255

289256
// Handle category (when resolved)
290257
if (obj.category) {
291-
const catEle = convertObjectToDDI(element, obj.category);
292-
if (catEle) {
293-
element.importDocument(catEle);
294-
}
258+
convertObjectToDDI(element, obj.category);
295259
}
296260

297261
// Handle value (for Code)
@@ -320,10 +284,7 @@ function convertRepresentation(parent, representation) {
320284
}
321285

322286
if (representation.codeRepresentation.codeList) {
323-
const codeListEle = convertObjectToDDI(codeRep, representation.codeRepresentation.codeList);
324-
if (codeListEle) {
325-
codeRep.importDocument(codeListEle);
326-
}
287+
convertObjectToDDI(codeRep, representation.codeRepresentation.codeList);
327288
}
328289
}
329290

0 commit comments

Comments
 (0)