-
René Schöne authoredRené Schöne authored
Helpers.jrag 2.83 KiB
aspect Helpers {
// --- of ---
public static ValueElement ValueElement.of(int value) {
return new ValueElement(false, String.valueOf(value));
}
public static ValueElement ValueElement.of(boolean value) {
return new ValueElement(false, String.valueOf(value));
}
public static ValueElement ValueElement.of(String value) {
return new ValueElement(false, value);
}
public static StringElement StringElement.of(String value) {
return new StringElement(false, value);
}
// --- addKeyValuePair ---
public void MappingElement.addKeyValuePair(String key, Element value) {
addKeyValuePair(new KeyValuePair(key, value));
}
// --- put ---
public MappingElement MappingElement.put(String key, int value) {
addKeyValuePair(key, ValueElement.of(value));
return this;
}
public MappingElement MappingElement.put(String key, boolean value) {
addKeyValuePair(key, ValueElement.of(value));
return this;
}
public MappingElement MappingElement.put(String key, String value) {
addKeyValuePair(key, makeStringElement(value));
return this;
}
public MappingElement MappingElement.put(String key, Element inner) {
addKeyValuePair(key, inner);
return this;
}
// --- add ---
public ListElement ListElement.add(int value) {
addElement(ValueElement.of(value));
return this;
}
public ListElement ListElement.add(boolean value) {
addElement(ValueElement.of(value));
return this;
}
public ListElement ListElement.add(String value) {
addElement(makeStringElement(value));
return this;
}
public ListElement ListElement.add(Element inner) {
addElement(inner);
return this;
}
// --- helper methods for put/add ---
protected SimpleElement ComplexElement.makeStringElement(String value) {
if (value == null || value.equals("null")) {
return StringElement.of("null");
}
if (value.trim().isEmpty()) {
return StringElement.of(value);
}
// simple test, check for special characters
return containsAny(value, ":#,[{\"\n") ?
StringElement.of(value.replace("\n", "\\n").replace("\"", "\\\"")) :
ValueElement.of(value);
}
protected boolean ComplexElement.containsAny(String s, String searchChars) {
// from https://stackoverflow.com/a/54399334/2493208
java.util.Set<Character> charsToTestFor = searchChars.chars()
.mapToObj(ch -> Character.valueOf((char) ch))
.collect(java.util.stream.Collectors.toSet());
return s.chars().anyMatch(ch -> charsToTestFor.contains(Character.valueOf((char) ch)));
}
// --- getValue ---
public java.util.Optional<Element> MappingElement.getValue(String key) {
for (KeyValuePair pair : getKeyValuePairList()) {
if (pair.getKey().equals(key)) {
return java.util.Optional.of(pair.getValue());
}
}
return java.util.Optional.empty();
}
}