Sat, 27 Jan 2024 14:29:52 +0100
fixes invalid XSD detected by new schema validation
package de.unixwork.uwproj; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import static de.unixwork.uwproj.Util.shId; import static java.util.function.Predicate.not; public class TargetData { private final List<Define> defines = new LinkedList<>(); private final List<String> dependencies = new LinkedList<>(); private final StringBuilder make = new StringBuilder(); public static TargetData parse(Element element) { var target = new TargetData(); NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element elm = (Element) node; String n = elm.getNodeName(); if (n.equals("define")) { target.addDefine( elm.getAttribute("name"), elm.getAttribute("value") ); } else if (n.equals("dependencies")) { Arrays.stream(Util.getContent(elm).split(",")) .map(String::trim) .filter(not(String::isBlank)) .forEach(target::addDependency); } else if (n.equals("make")) { target.addMake(Util.getContent(elm)); } } } return target; } public List<Define> getDefines() { return defines; } public List<String> getDependencies() { return dependencies; } public String getMake() { return make.toString(); } public void addDefine(String name, String value) { if (name.isBlank()) { throw new IllegalArgumentException("define element requires name attribute"); } defines.add(new Define(name, value)); } public void addDependency(String d) { // we have to add the sanitized identifier to the list of dependencies dependencies.add(shId(d)); } public void addMake(String m) { make.append(m.trim()); make.append('\n'); } }