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

Sun, 28 Jan 2024 14:02:41 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 28 Jan 2024 14:02:41 +0100
changeset 113
24f32dbd88cd
parent 103
01ec9f32835e
permissions
-rw-r--r--

minimize application code

package de.unixwork.uwproj;

import org.w3c.dom.Element;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public final class Dependency {
    private final String id;
    private final String name;
    private final String platform;
    private final String toolchain;
    private final 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 List<String> make = new LinkedList<>();

    private final List<String> lang = new LinkedList<>();

    public Dependency(Element element) {
        name = element.getAttribute("name");
        id = Util.shId(name);
        platform = element.getAttribute("platform");
        toolchain = element.getAttribute("toolchain");
        not = element.getAttribute("not");

        Util.getChildElements(element).forEach(elm -> {
            switch (elm.getNodeName()) {
                case "cflags", "cxxflags", "ldflags" -> flags.add(new ConfigVar(elm, true));
                case "pkgconfig" -> pkgconfig.add(new PkgConfigPackage(elm));
                case "test" -> tests.add(Util.getContent(elm));
                case "make" -> make.add(Util.getContent(elm));
                case "lang" -> lang.add(Util.getContent(elm).toLowerCase());
            }
        });
    }

    /**
     * Returns the ID of this dependency, if it has a name.
     * @return the ID that can be used for shell scripts - empty if dependency has not a name
     */
    public String getId() {
        return id;
    }

    public boolean hasName() {
        return !name.isEmpty();
    }

    public String getName() {
        return name;
    }

    public String getPlatform() {
        return platform;
    }

    public String getFullName() {
        String fname = name;
        if (!platform.isBlank()) {
            fname += " platform=\"" + platform + '"';
        }
        if (!toolchain.isBlank()) {
            fname += " toolchain=\"" + toolchain + '"';
        }
        return fname;
    }

    public List<String> getNotList() {
        return Arrays.stream(not.split(","))
                .map(String::trim)
                .filter(Predicate.not(String::isEmpty))
                .collect(Collectors.toList());
    }

    public String getToolchain() { return toolchain; }

    public List<ConfigVar> getFlags() {
        return flags;
    }

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

    public List<String> getTests() {
        return tests;
    }

    public String getMake() {
        return String.join("\n", make);
    }

    public List<String> getLang() {
        return lang;
    }
}

mercurial