Sun, 28 Jan 2024 14:02:41 +0100
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 | } |