Allow for configurable entry tag name
This commit is contained in:
parent
47af6fbb9f
commit
144efb5610
@ -357,7 +357,7 @@ public class OpenRocketSaver extends RocketSaver {
|
|||||||
if (config != null) {
|
if (config != null) {
|
||||||
for (String key : config.keySet()) {
|
for (String key : config.keySet()) {
|
||||||
Object value = config.get(key, null);
|
Object value = config.get(key, null);
|
||||||
writeEntry(key, value);
|
writeEntry("entry", key, value, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
indent--;
|
indent--;
|
||||||
@ -427,38 +427,60 @@ public class OpenRocketSaver extends RocketSaver {
|
|||||||
indent--;
|
indent--;
|
||||||
writeln("</photostudio>");
|
writeln("</photostudio>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void writeEntry(String key, Object value) throws IOException {
|
/**
|
||||||
|
* Write an entry element, which has a key and type attribute, and a value, to the output.
|
||||||
|
* For example: <entry key="key" type="string">value</entry>
|
||||||
|
* @param tagName The tag name (e.g. 'entry')
|
||||||
|
* @param key The key attribute value
|
||||||
|
* @param value The value to store
|
||||||
|
* @param saveNumbersWithExplicitType If true, numbers will be stored with an explicit type attribute ('integer' or 'double'),
|
||||||
|
* if false, save simply as 'number'
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private void writeEntry(String tagName, String key, Object value, boolean saveNumbersWithExplicitType) throws IOException {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String keyAttr;
|
String keyAttr;
|
||||||
|
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
keyAttr = "key=\"" + key + "\" ";
|
keyAttr = "key=\"" + key + "\" ";
|
||||||
} else {
|
} else {
|
||||||
keyAttr = "";
|
keyAttr = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String openTag = "<" + tagName + " ";
|
||||||
|
final String closeTag = "</" + tagName + ">";
|
||||||
if (value instanceof Boolean) {
|
if (value instanceof Boolean) {
|
||||||
writeln("<entry " + keyAttr + "type=\"boolean\">" + value + "</entry>");
|
writeln(openTag + keyAttr + "type=\"boolean\">" + value + closeTag);
|
||||||
} else if (value instanceof Number) {
|
} else if (value instanceof Number) {
|
||||||
writeln("<entry " + keyAttr + "type=\"number\">" + value + "</entry>");
|
if (saveNumbersWithExplicitType) {
|
||||||
|
if (value instanceof Integer) {
|
||||||
|
writeln(openTag + keyAttr + "type=\"integer\">" + value + closeTag);
|
||||||
|
} else if (value instanceof Double) {
|
||||||
|
writeln(openTag + keyAttr + "type=\"double\">" + value + closeTag);
|
||||||
|
} else {
|
||||||
|
writeln(openTag + keyAttr + "type=\"number\">" + value + closeTag);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writeln(openTag + keyAttr + "type=\"number\">" + value + closeTag);
|
||||||
|
}
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
writeln("<entry " + keyAttr + "type=\"string\">" + TextUtil.escapeXML((String) value) + "</entry>");
|
writeln(openTag + keyAttr + "type=\"string\">" + TextUtil.escapeXML(value) + closeTag);
|
||||||
} else if (value instanceof List) {
|
} else if (value instanceof List<?> list) {
|
||||||
List<?> list = (List<?>) value;
|
// Nested element
|
||||||
writeln("<entry " + keyAttr + "type=\"list\">");
|
writeln(openTag + keyAttr + "type=\"list\">");
|
||||||
indent++;
|
indent++;
|
||||||
for (Object o : list) {
|
for (Object o : list) {
|
||||||
writeEntry(null, o);
|
writeEntry(tagName, null, o, saveNumbersWithExplicitType);
|
||||||
}
|
}
|
||||||
indent--;
|
indent--;
|
||||||
writeln("</entry>");
|
writeln(closeTag);
|
||||||
} else {
|
} else {
|
||||||
// Unknown type
|
// Unknown type
|
||||||
log.error("Unknown configuration value type " + value.getClass() + " value=" + value);
|
log.error("Unknown configuration value type {} value={}", value.getClass(), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user