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

changeset 41
75ee588d5d9e
parent 40
b42bfc9e9983
child 52
afcb57893858
equal deleted inserted replaced
40:b42bfc9e9983 41:75ee588d5d9e
4 import org.w3c.dom.Node; 4 import org.w3c.dom.Node;
5 import org.w3c.dom.NodeList; 5 import org.w3c.dom.NodeList;
6 6
7 import javax.xml.parsers.DocumentBuilderFactory; 7 import javax.xml.parsers.DocumentBuilderFactory;
8 import java.io.File; 8 import java.io.File;
9 import java.util.*; 9 import java.util.HashMap;
10 import java.util.LinkedList;
11 import java.util.List;
12 import java.util.Optional;
10 13
11 public class Project { 14 public class Project {
12 private final Properties properties = new Properties();
13
14 private final HashMap<String, List<Dependency>> namedDependencies = new HashMap<>(); 15 private final HashMap<String, List<Dependency>> namedDependencies = new HashMap<>();
15 private final List<Dependency> dependencies = new LinkedList<>(); 16 private final List<Dependency> dependencies = new LinkedList<>();
16 private final List<Target> targets = new LinkedList<>(); 17 private final List<Target> targets = new LinkedList<>();
17 private final List<Option> options = new LinkedList<>(); 18 private final List<Option> options = new LinkedList<>();
18 private final List<Feature> features = new LinkedList<>(); 19 private final List<Feature> features = new LinkedList<>();
26 newDocumentBuilder(). 27 newDocumentBuilder().
27 parse(file). 28 parse(file).
28 getDocumentElement(); 29 getDocumentElement();
29 NodeList dependency_nodes = root.getElementsByTagName("dependency"); 30 NodeList dependency_nodes = root.getElementsByTagName("dependency");
30 NodeList target_nodes = root.getElementsByTagName("target"); 31 NodeList target_nodes = root.getElementsByTagName("target");
31 NodeList property_nodes = root.getElementsByTagName("property");
32 NodeList config_nodes = root.getElementsByTagName("config"); 32 NodeList config_nodes = root.getElementsByTagName("config");
33 33
34 for (int i = 0; i < config_nodes.getLength(); i++) { 34 for (int i = 0; i < config_nodes.getLength(); i++) {
35 Element p = (Element) config_nodes.item(i); 35 NodeList cfgs = config_nodes.item(i).getChildNodes();
36 NodeList cfgs = p.getChildNodes();
37 for (int c = 0; c < cfgs.getLength(); c++) { 36 for (int c = 0; c < cfgs.getLength(); c++) {
38 Node node = cfgs.item(c); 37 Node node = cfgs.item(c);
39 if (node.getNodeType() == Node.ELEMENT_NODE) { 38 if (node.getNodeType() == Node.ELEMENT_NODE) {
40 if (node.getNodeName().equals("var")) { 39 if (node.getNodeName().equals("var")) {
41 Optional.ofNullable(ConfigVar.parse((Element) node)).ifPresent(v -> { 40 Optional.ofNullable(ConfigVar.parse((Element) node)).ifPresent(v -> {
50 for (int i = 0; i < dependency_nodes.getLength(); i++) { 49 for (int i = 0; i < dependency_nodes.getLength(); i++) {
51 addDependency(Dependency.parse((Element) dependency_nodes.item(i))); 50 addDependency(Dependency.parse((Element) dependency_nodes.item(i)));
52 } 51 }
53 for (int i = 0; i < target_nodes.getLength(); i++) { 52 for (int i = 0; i < target_nodes.getLength(); i++) {
54 targets.add(Target.parse(this, (Element) target_nodes.item(i))); 53 targets.add(Target.parse(this, (Element) target_nodes.item(i)));
55 }
56 for (int i = 0; i < property_nodes.getLength(); i++) {
57 var p = (Element) property_nodes.item(i);
58 String name = p.getAttribute("name");
59 String value = p.getAttribute("value");
60 if (!name.isBlank() && !value.isBlank()) {
61 properties.setProperty(name, value);
62 } else {
63 throw new Exception("Missing property name or value");
64 }
65 } 54 }
66 55
67 if (targets.isEmpty()) { 56 if (targets.isEmpty()) {
68 createDefaultTarget(); 57 createDefaultTarget();
69 } 58 }

mercurial