--- a/src/main/java/de/unixwork/uwproj/Dependency.java Wed Sep 06 21:08:04 2023 +0200 +++ b/src/main/java/de/unixwork/uwproj/Dependency.java Wed Sep 06 22:55:42 2023 +0200 @@ -1,79 +1,71 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package de.unixwork.uwproj; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import java.util.LinkedList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; -/** - * - * @author olaf - */ +import static de.unixwork.uwproj.Util.isNullOrBlank; + public class Dependency { private String name; private String platform; private String not; - - private List<Flags> flags = new LinkedList<>(); - private List<PkgConfigPackage> pkgconfig = new LinkedList<>(); - private List<String> tests = new LinkedList<>(); - private StringBuilder make = new StringBuilder(); - - private List<String> lang = new LinkedList<>(); - + + private final List<ConfigVar> flags = new LinkedList<>(); + private final List<PkgConfigPackage> pkgconfig = new LinkedList<>(); + private final List<String> tests = new LinkedList<>(); + private final StringBuilder make = new StringBuilder(); + + private final List<String> lang = new LinkedList<>(); + private boolean abortOnError = false; - + private int num = 0; - + public static Dependency parse(Element element) throws Exception { Dependency d = new Dependency(); - + String name = element.getAttribute("name"); String platform = element.getAttribute("platform"); String not = element.getAttribute("not"); - if(name.length() > 0) { + if (!name.isEmpty()) { d.setName(name); } - if(platform.length() > 0) { + if (!platform.isEmpty()) { d.setPlatform(platform); } - if(not.length() > 0) { + if (!not.isEmpty()) { d.setNotString(not); } - + 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("cflags") || n.equals("ldflags")) { - Flags f = Flags.parse(elm); - d.addFlags(f); - } else if(n.equals("pkgconfig")) { + if (n.equals("cflags") || n.equals("ldflags")) { + Optional.ofNullable(ConfigVar.parse(elm, true)).ifPresent(d::addFlags); + } else if (n.equals("pkgconfig")) { PkgConfigPackage pcp = PkgConfigPackage.parse(elm); d.addPkgconfig(pcp); - } else if(n.equals("test")) { - d.tests.add(Xml.getContent(elm)); - } else if(n.equals("make")) { - String m = Xml.getContent(elm); + } else if (n.equals("test")) { + d.tests.add(Util.getContent(elm)); + } else if (n.equals("make")) { + String m = Util.getContent(elm); d.addMake(m); - } else if(n.equals("lang")) { + } else if (n.equals("lang")) { d.lang.add(n.trim().toLowerCase()); } } } - + return d; } - + public String getName() { return name; } @@ -85,40 +77,35 @@ public String getPlatform() { return platform; } - + public String getFullName() { - if(platform == null || platform.length() == 0) { + if (isNullOrBlank(platform)) { return name; } else { - return name+" platform=\""+platform+'"'; + return name + " platform=\"" + platform + '"'; } } - + public void setNotString(String not) { this.not = not; } - + public List<String> getNotList() { - List<String> notPlatforms = new LinkedList<>(); - if(not != null) { - String[] n = not.split(","); - for(String s : n) { - notPlatforms.add(s); - } - } - return notPlatforms; + return isNullOrBlank(not) ? + Collections.emptyList() : + Arrays.stream(not.split(",")).map(String::trim).collect(Collectors.toList()); } public void setPlatform(String platform) { this.platform = platform; } - public List<Flags> getFlags() { + public List<ConfigVar> getFlags() { return flags; } - public void addFlags(Flags flags) { - this.flags.add(flags); + public void addFlags(ConfigVar var) { + this.flags.add(var); } public List<PkgConfigPackage> getPkgconfig() { @@ -136,28 +123,28 @@ public void setAbortOnError(boolean abortOnError) { this.abortOnError = abortOnError; } - + public int getNum() { return num; } - + public void setNum(int num) { this.num = num; } - + public List<String> getTests() { return tests; } - + public void addMake(String m) { make.append(m.trim()); make.append('\n'); } - + public String getMake() { return make.toString(); } - + public List<String> getLang() { return lang; }