--- a/src/main/java/de/unixwork/uwproj/TargetData.java Wed Sep 06 22:55:42 2023 +0200 +++ b/src/main/java/de/unixwork/uwproj/TargetData.java Sun Sep 10 12:52:10 2023 +0200 @@ -4,6 +4,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -12,39 +13,33 @@ private final List<String> dependencies = new LinkedList<>(); private final StringBuilder make = new StringBuilder(); - public static TargetData parse(Element element) throws Exception { - TargetData data = new TargetData(); - + public static TargetData parse(Element element) { + var target = new TargetData(); + NodeList nodes = element.getChildNodes(); - for(int i=0;i<nodes.getLength();i++) { + for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { - Element elm = (Element)node; + Element elm = (Element) node; String n = elm.getNodeName(); - if(n.equals("define")) { - String def = elm.getAttribute("name"); - String defval = elm.getAttribute("value"); - if (def.isBlank()) { - throw new Exception("define element requires name attribute"); - } - data.addDefine(new Define(def, defval)); - } else if(n.equals("dependencies")) { - String deps = Util.getContent(elm); - String[] dependencies = deps.split(","); - for(String dependency : dependencies) { - dependency = dependency.trim(); - data.addDependency(dependency); - } - } else if(n.equals("make")) { - String m = Util.getContent(elm); - data.addMake(m); + 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) + .forEach(target::addDependency); + } else if (n.equals("make")) { + target.addMake(Util.getContent(elm)); } } } - - return data; + + return target; } - + public List<Define> getDefines() { return defines; } @@ -56,15 +51,18 @@ public String getMake() { return make.toString(); } - - public void addDefine(Define d) { - defines.add(d); + + 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) { dependencies.add(d); } - + public void addMake(String m) { make.append(m.trim()); make.append('\n');