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

Sun, 10 Sep 2023 12:52:10 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 10 Sep 2023 12:52:10 +0200
changeset 41
75ee588d5d9e
parent 40
b42bfc9e9983
child 65
6db50c6df6e3
permissions
-rw-r--r--

some more code cleanup

package de.unixwork.uwproj;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import java.util.*;
import java.util.stream.Collectors;

import static de.unixwork.uwproj.Util.isNullOrBlank;

public class Dependency {
    private String name;
    private String platform;
    private String not;

    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 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.isEmpty()) {
            d.setName(name);
        }
        if (!platform.isEmpty()) {
            d.setPlatform(platform);
        }
        if (!not.isEmpty()) {
            d.setNotString(not);
        }

        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("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(Util.getContent(elm));
                } else if (n.equals("make")) {
                    String m = Util.getContent(elm);
                    d.addMake(m);
                } else if (n.equals("lang")) {
                    d.lang.add(n.trim().toLowerCase());
                }
            }
        }

        return d;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPlatform() {
        return platform;
    }

    public String getFullName() {
        if (isNullOrBlank(platform)) {
            return name;
        } else {
            return name + " platform=\"" + platform + '"';
        }
    }

    public void setNotString(String not) {
        this.not = not;
    }

    public List<String> getNotList() {
        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<ConfigVar> getFlags() {
        return flags;
    }

    public void addFlags(ConfigVar var) {
        this.flags.add(var);
    }

    public List<PkgConfigPackage> getPkgconfig() {
        return pkgconfig;
    }

    public void addPkgconfig(PkgConfigPackage pkgconfig) {
        this.pkgconfig.add(pkgconfig);
    }

    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;
    }
}

mercurial