X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fparams%2Fsimple%2FDoubleParameter.java;fp=src%2Fjalview%2Fws%2Fparams%2Fsimple%2FDoubleParameter.java;h=68029a3ffe588bc25e595836c056272f9cc97e7f;hb=bea1d9b563d2fea018de3dbde9112dd59149126e;hp=6b76170f6b7d9b01e6a553811af79498be7cccf3;hpb=49ab19e8189569edf0bc1f4ba8dac14e67f4ca36;p=jalview.git diff --git a/src/jalview/ws/params/simple/DoubleParameter.java b/src/jalview/ws/params/simple/DoubleParameter.java index 6b76170..68029a3 100644 --- a/src/jalview/ws/params/simple/DoubleParameter.java +++ b/src/jalview/ws/params/simple/DoubleParameter.java @@ -2,6 +2,7 @@ package jalview.ws.params.simple; import jalview.ws.params.ParameterI; import jalview.ws.params.ValueConstrainI; +import static java.util.Objects.requireNonNullElse; /** * @@ -10,6 +11,76 @@ import jalview.ws.params.ValueConstrainI; */ 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; @@ -41,6 +112,15 @@ public class DoubleParameter extends Option implements ParameterI }; } + 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); @@ -49,20 +129,20 @@ public class DoubleParameter extends Option implements ParameterI } 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;