1 package jalview.ws.params.simple;
3 import static java.util.Objects.requireNonNullElse;
5 import jalview.ws.params.ParameterI;
6 import jalview.ws.params.ValueConstrainI;
9 * A model for a numeric-valued parameter which should be displayed using a
14 public class LogarithmicParameter extends Option implements ParameterI
16 public static class Builder extends Option.Builder
18 // setting them the opposite way disables limits until both are set.
19 protected double min = Double.POSITIVE_INFINITY;
21 protected double max = Double.NEGATIVE_INFINITY;
24 * Setting string on double parameter is not allowed, use
25 * {@link #setValue(Double)} instead.
28 public void setValue(String value)
30 throw new UnsupportedOperationException();
33 public void setValue(Double value)
36 super.setValue(value.toString());
42 * Setting string on double parameter is not allowed, use
43 * {@link #setDefaultValue(Double)} instead.
46 public void setDefaultValue(String defaultValue)
48 throw new UnsupportedOperationException();
51 public void setDefaultValue(Double defaultValue)
53 if (defaultValue != null)
54 super.setDefaultValue(defaultValue.toString());
56 super.setDefaultValue(null);
59 public void setMin(Double min)
61 this.min = requireNonNullElse(min, Double.POSITIVE_INFINITY);
64 public void setMax(Double max)
66 this.max = requireNonNullElse(max, Double.NEGATIVE_INFINITY);
69 public void setBounds(Double min, Double max)
76 public LogarithmicParameter build()
78 return new LogarithmicParameter(this);
89 public ValueConstrainI getValidValue()
91 return new ValueConstrainI()
95 public ValueType getType()
97 return ValueType.Double;
101 public Number getMin()
103 return min < max ? min : null;
107 public Number getMax()
109 return min < max ? max : null;
114 public static Builder newBuilder()
116 return new Builder();
119 public LogarithmicParameter(Builder builder)
122 this.min = builder.min;
123 this.max = builder.max;
124 if (defvalue != null)
125 defval = Double.parseDouble(defvalue);
130 public LogarithmicParameter(LogarithmicParameter parm)
138 public LogarithmicParameter(String name, String description,
139 boolean required, Double defValue, double min, double max)
141 super(name, description, required, String.valueOf(defValue), null, null,
148 public LogarithmicParameter(String name, String description,
149 boolean required, Double defValue, double value, double min,
152 super(name, description, required, String.valueOf(defValue),
153 String.valueOf(value), null, null);
160 public LogarithmicParameter copy()
162 return new LogarithmicParameter(this);