1 package jalview.bin.argparser;
3 import java.util.ArrayList;
4 import java.util.HashMap;
7 import java.util.stream.Collectors;
9 import jalview.bin.Console;
10 import jalview.bin.argparser.Arg.Opt;
12 public class ArgValues
14 public static final String ID = "id";
18 private int argCount = 0;
20 private boolean boolValue = false;
22 private boolean negated = false;
24 private int boolIndex = -1;
26 private List<Integer> argsIndexes;
28 private List<ArgValue> argValueList;
30 private Map<String, ArgValue> idMap = new HashMap<>();
32 protected ArgValues(Arg a)
35 this.argValueList = new ArrayList<ArgValue>();
36 this.boolValue = arg.getDefaultBoolValue();
44 protected int getCount()
49 protected void incrementCount()
54 protected void setNegated(boolean b)
59 protected boolean isNegated()
64 protected void setBoolean(boolean b, int i)
70 protected boolean getBoolean()
72 return this.boolValue;
76 public String toString()
78 if (argValueList == null)
80 StringBuilder sb = new StringBuilder();
81 sb.append(arg.toLongString());
82 if (arg.hasOption(Opt.BOOLEAN) || arg.hasOption(Opt.UNARY))
83 sb.append("Boolean: ").append(boolValue).append("; Default: ")
84 .append(arg.getDefaultBoolValue()).append("; Negated: ")
85 .append(negated).append("\n");
86 if (arg.hasOption(Opt.STRING))
92 argValueList.stream().map(av -> av.getValue())
93 .collect(Collectors.toList())))
97 sb.append("Count: ").append(argCount).append("\n");
101 protected void addValue()
106 protected void addValue(String val, int argIndex)
108 addArgValue(new ArgValue(val, argIndex));
111 protected void addValue(SubVals sv, String content, int argIndex)
113 addArgValue(new ArgValue(sv, content, argIndex));
116 protected void addArgValue(ArgValue av)
118 if ((!arg.hasOption(Opt.MULTI) && argValueList.size() > 0)
119 || (arg.hasOption(Opt.NODUPLICATEVALUES)
120 && argValueList.contains(av.getValue())))
122 if (argValueList == null)
124 argValueList = new ArrayList<ArgValue>();
126 SubVals sv = ArgParser.getSubVals(av.getValue());
129 String id = sv.get(ID);
133 argValueList.add(av);
136 protected boolean hasValue(String val)
138 return argValueList.contains(val);
141 protected ArgValue getArgValue()
143 if (arg.hasOption(Opt.MULTI))
144 Console.warn("Requesting single value for multi value argument");
145 return argValueList.size() > 0 ? argValueList.get(0) : null;
148 protected List<ArgValue> getArgValueList()
153 protected boolean hasId(String id)
155 return idMap.containsKey(id);
158 protected ArgValue getId(String id)
160 return idMap.get(id);