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

Sat, 03 Aug 2019 13:46:43 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 03 Aug 2019 13:46:43 +0200
changeset 7
686991ae6e2f
parent 0
38775db5fdf5
child 40
b42bfc9e9983
permissions
-rw-r--r--

add configureable make variables

/*
 * 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 java.util.LinkedList;
import java.util.List;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 *
 * @author olaf
 */
public class TargetData {
    private List<Define> defines = new LinkedList<>();
    private List<String> dependencies = new LinkedList<>();
    private StringBuilder make = new StringBuilder();

    public static TargetData parse(Element element) throws Exception {
        TargetData data = new TargetData();
        
        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")) {
                    String def = elm.getAttribute("name");
                    String defval = elm.getAttribute("value");
                    if(def == null) {
                        throw new Exception("define element requires name attribute");
                    }
                    data.addDefine(new Define(def, defval));
                } else if(n.equals("dependencies")) {
                    String deps = Xml.getContent(elm);
                    String[] dependencies = deps.split(",");
                    for(String dependency : dependencies) {
                        dependency = dependency.trim();
                        data.addDependency(dependency);
                    }
                } else if(n.equals("make")) {
                    String m = Xml.getContent(elm);
                    data.addMake(m);
                }
            }
        }
        
        return data;
    }
    
    public List<Define> getDefines() {
        return defines;
    }

    public List<String> getDependencies() {
        return dependencies;
    }

    public String getMake() {
        return make.toString();
    }
    
    public void addDefine(Define d) {
        defines.add(d);
    }
    
    public void addDependency(String d) {
        dependencies.add(d);
    }
    
    public void addMake(String m) {
        make.append(m.trim());
        make.append('\n');
    }
}

mercurial