diff -r 206e91a8dd18 -r 24f32dbd88cd src/main/java/de/unixwork/uwproj/TargetData.java --- a/src/main/java/de/unixwork/uwproj/TargetData.java Sun Jan 28 13:26:47 2024 +0100 +++ b/src/main/java/de/unixwork/uwproj/TargetData.java Sun Jan 28 14:02:41 2024 +0100 @@ -1,47 +1,33 @@ 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 defines = new LinkedList<>(); private final List dependencies = new LinkedList<>(); - private final StringBuilder make = new StringBuilder(); - - public static TargetData parse(Element element) { - var target = new TargetData(); + private final List make = new LinkedList<>(); - 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)); - } + public TargetData(Element element) { + Util.getChildElements(element).forEach(elm -> { + switch (elm.getNodeName()) { + case "define" -> defines.add(new Define( + elm.getAttribute("name"), + elm.getAttribute("value") + )); + case "dependencies" -> Arrays.stream(Util.getContent(elm).split(",")) + .map(String::trim) + .filter(not(String::isBlank)) + .map(Util::shId) + .forEach(dependencies::add); + case "make" -> make.add(Util.getContent(elm)); } - } - - return target; + }); } public List getDefines() { @@ -53,23 +39,10 @@ } 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)); + return String.join("\n", make); } - 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'); + public boolean hasMake() { + return !make.isEmpty(); } }