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

changeset 41
75ee588d5d9e
parent 40
b42bfc9e9983
child 113
24f32dbd88cd
--- a/src/main/java/de/unixwork/uwproj/Option.java	Wed Sep 06 22:55:42 2023 +0200
+++ b/src/main/java/de/unixwork/uwproj/Option.java	Sun Sep 10 12:52:10 2023 +0200
@@ -6,45 +6,47 @@
 
 import java.util.LinkedList;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import static de.unixwork.uwproj.Util.shId;
 
 public class Option {
     private String arg;
-    
-    LinkedList<OptionValue> values = new LinkedList<>();
-    LinkedList<OptionDefault> defaults = new LinkedList<>();
-    
-    public static Option parse(Project project, Element element) throws Exception {
-        Option opt = new Option();
+
+    private final LinkedList<OptionValue> values = new LinkedList<>();
+    private final LinkedList<OptionDefault> defaults = new LinkedList<>();
+
+    public static Option parse(Element element) throws Exception {
+        var opt = new Option();
         String arg = element.getAttribute("arg");
-        if(arg.isEmpty()) {
+        if (arg.isBlank()) {
             throw new Exception("Option has no argument string");
         }
         opt.setArgument(arg);
-        
+
         NodeList nodes = element.getChildNodes();
-        for(int i=0;i<nodes.getLength();i++) {
+        for (int i = 0; i < nodes.getLength(); i++) {
             Node node = nodes.item(i);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
-                Element elm = (Element)node;
+                Element elm = (Element) node;
                 String n = elm.getNodeName();
-                if(n.equals("value")) {
-                    OptionValue value = new OptionValue(opt);
-                    value.setValue(elm.getAttribute("str"));
-                    value.setTargetData(TargetData.parse(elm));
-                    opt.values.add(value);
-                } else if(n.equals("default")) {
-                    String defValue = elm.getAttribute("value");
+                if (n.equals("value")) {
+                    opt.values.add(new OptionValue(opt,
+                            elm.getAttribute("str"),
+                            TargetData.parse(elm)
+                    ));
+                } else if (n.equals("default")) {
+                    var def = new OptionDefault(opt);
+                    def.setValueName(elm.getAttribute("value"));
                     String defPlatform = elm.getAttribute(("platform"));
-                    OptionDefault def = new OptionDefault(opt);
-                    def.setValueName(defValue);
-                    if(!defPlatform.isEmpty()) {
+                    if (!defPlatform.isBlank()) {
                         def.setPlatform(defPlatform);
                     }
                     opt.defaults.add(def);
                 }
             }
         }
-        
+
         return opt;
     }
 
@@ -55,45 +57,32 @@
     public void setArgument(String arg) {
         this.arg = arg;
     }
-    
+
     public String getVarName() {
-        return "OPT_" + arg.toUpperCase();
+        return shId("OPT_" + arg.toUpperCase());
     }
-    
+
     public String getArgValue() {
-        return "${ARG:"+(3+arg.length())+"}";
+        return "${ARG:" + (3 + arg.length()) + "}";
     }
-    
+
     public List<OptionValue> getValues() {
         return values;
     }
-    
+
     public List<OptionDefault> getDefaults() {
         return defaults;
     }
-    
+
     public String getValueFunc(String value) {
-        return "checkopt_"+arg+"_"+value;
+        return shId("checkopt_" + arg + "_" + value);
     }
-    
+
     public String getValuesString() {
-        if(values.isEmpty()) {
-            return "()";
-        } else if(values.size() == 1) {
+        if (values.size() == 1) {
             return values.get(0).getValue();
         } else {
-            StringBuilder vs = new StringBuilder();
-            vs.append('(');
-            for(int i=0;i<values.size();i++) {
-                if(i < values.size()-1) {
-                    vs.append(values.get(i).getValue());
-                    vs.append('|');
-                } else {
-                    vs.append(values.get(i).getValue());
-                }
-            }
-            vs.append(')');
-            return vs.toString();
+            return "(" + values.stream().map(OptionValue::getValue).collect(Collectors.joining("|")) + ")";
         }
     }
 }

mercurial