import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class Option implements OptionI
{
- String name;
- /*
- * current value in string format, or "null" if undefined
- */
- String value;
+ String name, value, defvalue, description;
- /*
- * default value in string format, or "null" if undefined
- */
- String defvalue;
-
- String description;
-
- List<String> possibleVals;
-
- /*
- * optional display names corresponding to possibleVals
- */
- List<String> displayVals;
+ ArrayList<String> possibleVals = new ArrayList<String>();
boolean required;
URL fdetails;
- /**
- * Copy constructor
- *
- * @param opt
- */
- public Option(Option opt)
- {
- name = opt.name;
- value = opt.value;
- defvalue = opt.defvalue;
- description = opt.description;
- if (opt.possibleVals != null)
- {
- possibleVals = new ArrayList<>(opt.possibleVals);
- }
- required = opt.required;
- // URLs are singletons - so we copy by reference. nasty but true.
- fdetails = opt.fdetails;
- }
-
- public Option()
- {
- }
-
- /**
- * Constructor including display names for possible values
- *
- * @param name2
- * @param description2
- * @param isrequired
- * @param defValue
- * @param val
- * @param possibleVals
- * @param fdetails
- */
- public Option(String name2, String description2, boolean isrequired,
- String defValue, String val, List<String> possibleVals,
- List<String> displayNames, URL fdetails)
- {
- name = name2;
- description = description2;
- this.value = val;
- this.required = isrequired;
- this.defvalue = defValue;
- if (possibleVals != null)
- {
- this.possibleVals = new ArrayList<>(possibleVals);
- }
- if (displayNames != null)
- {
- this.displayVals = new ArrayList<>(displayNames);
- }
- this.fdetails = fdetails;
- }
-
- /**
- * Constructor
- *
- * @param name2
- * @param description2
- * @param isrequired
- * @param defValue
- * @param val
- * @param possibleVals
- * @param fdetails
- */
- public Option(String name2, String description2, boolean isrequired,
- String defValue, String val, List<String> possibleVals,
- URL fdetails)
- {
- this(name2, description2, isrequired, defValue, val, possibleVals, null,
- fdetails);
- }
-
- @Override
- public OptionI copy()
- {
- Option opt = new Option(this);
- return opt;
- }
-
- /**
- * toString method to help identify options in the debugger only
- */
- @Override
- public String toString()
- {
- return this.getClass().getName() + ":" + name;
- }
-
@Override
public String getName()
{
return possibleVals;
}
+ public Option(Option opt)
+ {
+ name = new String(opt.name);
+ if (opt.value != null)
+ value = new String(opt.value);
+ if (opt.defvalue != null)
+ defvalue = new String(opt.defvalue);
+ if (opt.description != null)
+ description = new String(opt.description);
+ if (opt.possibleVals != null)
+ {
+ possibleVals = (ArrayList<String>) opt.possibleVals.clone();
+ }
+ required = opt.required;
+ // URLs are singletons - so we copy by reference. nasty but true.
+ fdetails = opt.fdetails;
+ }
+
+ public Option()
+ {
+ }
+
+ public Option(String name2, String description2, boolean isrequired,
+ String defValue, String value, Collection<String> possibleVals,
+ URL fdetails)
+ {
+ name = name2;
+ description = description2;
+ this.value = value;
+ this.required = isrequired;
+ this.defvalue = defValue;
+ if (possibleVals != null)
+ {
+ this.possibleVals = new ArrayList<String>();
+ this.possibleVals.addAll(possibleVals);
+ }
+ this.fdetails = fdetails;
+ }
+
@Override
- public List<String> getDisplayNames()
+ public OptionI copy()
{
- return displayVals;
+ Option opt = new Option(this);
+ return opt;
}
}