src/main/java/de/unixwork/uwproj/TargetData.java

changeset 113
24f32dbd88cd
parent 92
5a32534f2604
--- 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<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();
+    private final List<String> 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<Define> 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();
     }
 }

mercurial