buildAdxString method
Build the ADX string.
Implementation
String buildAdxString() {
// Build the list of <USERDEF>.
List<UserdefMeta> userdefs = getUserdefMetaList(data);
// Build the XML document.
final b = XmlBuilder();
b.processing('xml', 'version="1.0" encoding="UTF-8"');
b.element(
'ADX',
nest: () {
// HEADER
b.element(
'HEADER',
nest: () {
b.element('ADIF_VER', nest: adifVer);
// CREATED_TIMESTAMP
if (createdTimestamp != null) {
b.element(
'CREATED_TIMESTAMP',
nest: DateFormat('yyyyMMdd hhmmss').format(createdTimestamp!),
);
}
// PROGRAMID
if (programid != null) {
b.element('PROGRAMID', nest: programid!);
}
// PROGRAMVERSION
if (programversion != null) {
b.element('PROGRAMVERSION', nest: programversion!);
}
// USERDEF
for (var i = 0; i < userdefs.length; i++) {
b.element(
'USERDEF',
attributes: {
'FIELDID': (i + 1).toString(),
'TYPE': userdefs[i].type,
if (userdefs[i].enums != null)
'ENUMS': '{${userdefs[i].enums!.join(',')}}',
if (userdefs[i].range != null)
'RANGE':
'{${userdefs[i].range!.$1}:${userdefs[i].range!.$2}}',
},
nest: userdefs[i].name,
);
}
},
);
// RECORDS
b.element(
'RECORDS',
nest: () {
for (var qso in data) {
b.element(
'RECORD',
nest: () {
// ADIF-defined fields.
for (var adifField in qso.adifdefs) {
b.element(adifField.fieldName, nest: adifField.getString());
}
// Application-defined fields.
for (var appField in qso.appdefs) {
b.element(
'APP',
attributes: {
'PROGRAMID': programid ?? '',
'FIELDNAME': appField.fieldName,
'TYPE': appField.value.getType(),
},
nest: appField.value.getString(),
);
}
// User-defined fields.
for (var userField in qso.userdefs) {
b.element(
'USERDEF',
attributes: {'FIELDNAME': userField.fieldName},
nest: userField.value.getString(),
);
}
},
);
}
},
);
},
);
return b.buildDocument().toXmlString(pretty: true, indent: ' ');
}