import jalview.ws.params.ParameterI;
import jalview.ws.params.ValueConstrainI;
+import static java.util.Objects.requireNonNullElse;
/**
*
*/
public class DoubleParameter extends Option implements ParameterI
{
+ public static class Builder extends Option.Builder
+ {
+ // setting them the opposite way disables limits until both are set.
+ protected double min = Double.POSITIVE_INFINITY;
+
+ protected double max = Double.NEGATIVE_INFINITY;
+
+ /**
+ * Setting string on double parameter is not allowed, use
+ * {@link #setValue(Double)} instead.
+ */
+ @Override
+ public void setValue(String value)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setValue(Double value)
+ {
+ if (value != null)
+ super.setValue(value.toString());
+ else
+ super.setValue(null);
+ }
+
+ /**
+ * Setting string on double parameter is not allowed, use
+ * {@link #setDefaultValue(Double)} instead.
+ */
+ @Override
+ public void setDefaultValue(String defaultValue)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setDefaultValue(Double defaultValue)
+ {
+ if (defaultValue != null)
+ super.setDefaultValue(defaultValue.toString());
+ else
+ super.setDefaultValue(null);
+ }
+
+ public void setMin(Double min)
+ {
+ this.min = requireNonNullElse(min, Double.POSITIVE_INFINITY);
+ }
+
+ public void setMax(Double max)
+ {
+ this.max = requireNonNullElse(max, Double.NEGATIVE_INFINITY);
+ }
+
+ public void setBounds(Double min, Double max)
+ {
+ setMin(min);
+ setMax(max);
+ }
+
+ public DoubleParameter build()
+ {
+ return new DoubleParameter(this);
+ }
+ }
+
+ public static Builder newBuilder()
+ {
+ return new Builder();
+ }
+
double defval;
double min;
};
}
+ protected DoubleParameter(Builder builder)
+ {
+ super(builder);
+ this.min = builder.min;
+ this.max = builder.max;
+ if (defvalue != null)
+ defval = Double.parseDouble(defvalue);
+ }
+
public DoubleParameter(DoubleParameter parm)
{
super(parm);
}
public DoubleParameter(String name, String description, boolean required,
- Double defValue, double min, double max)
+ Double defValue, double min, double max)
{
super(name, description, required, String.valueOf(defValue), null, null,
- null);
+ null);
defval = defValue;
this.min = min;
this.max = max;
}
public DoubleParameter(String name, String description, boolean required,
- Double defValue, Double value, double min, double max)
+ Double defValue, Double value, double min, double max)
{
super(name, description, required, String.valueOf(defValue),
- String.valueOf(value), null, null);
+ String.valueOf(value), null, null);
defval = defValue;
this.min = min;
this.max = max;