src/main/java/de/unixwork/uwproj/Project.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 109
1e852be12654
permissions
-rw-r--r--

minimize application code

0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 package de.unixwork.uwproj;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 import org.w3c.dom.Element;
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 8
diff changeset
4
72
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
5 import java.util.*;
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 public class Project {
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
8 private final HashMap<String, List<Dependency>> namedDependencies = new HashMap<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
9 private final List<Dependency> dependencies = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
10 private final List<Target> targets = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
11 private final List<Option> options = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
12 private final List<Feature> features = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
13
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
14 private final List<ConfigVar> configVarsList = new LinkedList<>();
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
15
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
16 private final Set<String> lang = new HashSet<>();
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
17
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
18 public Project(Element root) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
19 Util.getChildElements(root).forEach(element -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
20 switch (element.getNodeName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
21 case "config" -> Util.getChildElements(element).forEach(v -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
22 if (v.getNodeName().equals("var")) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
23 configVarsList.add(new ConfigVar(v));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
24 }
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
25 });
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
26 case "dependency" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
27 final var dependency = new Dependency(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
28 lang.addAll(dependency.getLang());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
29 if (dependency.hasName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
30 namedDependencies.computeIfAbsent(dependency.getId(), k -> new LinkedList<>()).add(dependency);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
31 } else {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
32 dependencies.add(dependency);
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
33 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
34 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
35 case "target" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
36 final var target = new Target(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
37 targets.add(target);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
38 features.addAll(target.getFeatures());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
39 options.addAll(target.getOptions());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
40 }
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
41 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
42 });
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
43
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
44 // add default target, if no target was specified
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
45 if (targets.isEmpty()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
46 targets.add(Target.defaultTarget());
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
47 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
48
74
30b70a68ad26 make alldependencies element work - fixes #304
Mike Becker <universe@uap-core.de>
parents: 72
diff changeset
49 // check if some targets want all named dependencies
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
50 targets.stream().filter(Target::wantsAllDependencies)
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
51 .forEach(t -> t.replaceAllDependencies(namedDependencies.keySet()));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 public List<NamedDependency> getNamedDependencies() {
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
55 var ret = new LinkedList<NamedDependency>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
56 for (var entry : namedDependencies.entrySet()) {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
57 ret.add(new NamedDependency(entry.getKey(), entry.getValue()));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 return ret;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
61
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 public List<Dependency> getDependencies() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 return dependencies;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 public List<Target> getTargets() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 return targets;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
69
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 public List<Option> getOptions() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 return options;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
73
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 public List<Feature> getFeatures() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 return features;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
77
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
78 public List<ConfigVar> getVars() {
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
79 return configVarsList;
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
80 }
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
81
72
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
82 public Collection<String> getLang() {
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
83 return lang;
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
84 }
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 }

mercurial