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

Tue, 30 Jan 2024 21:32:11 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 30 Jan 2024 21:32:11 +0100
changeset 114
0fa5a6f08245
parent 113
24f32dbd88cd
permissions
-rw-r--r--

remove unnecessary double-quotes in vars.mk - fixes #370

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;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 0
diff changeset
5 import java.util.LinkedList;
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 0
diff changeset
6 import java.util.List;
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
7 import java.util.stream.Collectors;
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
8
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
9 import static de.unixwork.uwproj.Util.shId;
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 0
diff changeset
10
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
11 public final class Option {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
12 private final String arg;
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
13
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
14 private final LinkedList<OptionValue> values = new LinkedList<>();
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
15 private final LinkedList<OptionDefault> defaults = new LinkedList<>();
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
16
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
17 public Option(Element element) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
18 arg = element.getAttribute("arg");
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
19 Util.getChildElements(element).forEach(elm -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
20 switch (elm.getNodeName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
21 case "value" -> values.add(new OptionValue(this,
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
22 elm.getAttribute("str"),
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
23 new TargetData(elm)));
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
24 case "default" -> defaults.add(new OptionDefault(this,
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
25 elm.getAttribute("value"),
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
26 elm.getAttribute("platform")));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 41
diff changeset
28 });
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 public String getArgument() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 return arg;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 public String getVarName() {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
36 return shId("OPT_" + arg.toUpperCase());
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
38
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 public String getArgValue() {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
40 return "${ARG:" + (3 + arg.length()) + "}";
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
42
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 public List<OptionValue> getValues() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 return values;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
46
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 public List<OptionDefault> getDefaults() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 return defaults;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
50
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 public String getValueFunc(String value) {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
52 return shId("checkopt_" + arg + "_" + value);
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 }
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
54
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 public String getValuesString() {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
56 if (values.size() == 1) {
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 return values.get(0).getValue();
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 } else {
41
75ee588d5d9e some more code cleanup
Mike Becker <universe@uap-core.de>
parents: 40
diff changeset
59 return "(" + values.stream().map(OptionValue::getValue).collect(Collectors.joining("|")) + ")";
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 }

mercurial