X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fparams%2Fsimple%2FIntegerParameter.java;fp=src%2Fjalview%2Fws%2Fparams%2Fsimple%2FIntegerParameter.java;h=af6c881d0d56a192a6314f08bf3efc2120261ab1;hb=8307be83ae28064b8f606f6c7a77dd186485a0fa;hp=b3a01b28ca120534412a7bd0bb8de2f993d18bb2;hpb=49ab19e8189569edf0bc1f4ba8dac14e67f4ca36;p=jalview.git diff --git a/src/jalview/ws/params/simple/IntegerParameter.java b/src/jalview/ws/params/simple/IntegerParameter.java index b3a01b2..af6c881 100644 --- a/src/jalview/ws/params/simple/IntegerParameter.java +++ b/src/jalview/ws/params/simple/IntegerParameter.java @@ -22,6 +22,7 @@ package jalview.ws.params.simple; import jalview.ws.params.ParameterI; import jalview.ws.params.ValueConstrainI; +import static java.util.Objects.requireNonNullElse; /** * @author jimp @@ -29,6 +30,68 @@ import jalview.ws.params.ValueConstrainI; */ public class IntegerParameter extends Option implements ParameterI { + public static class Builder extends Option.Builder + { + // assigning them the opposite way results in no limits unless both are set + protected int min = Integer.MAX_VALUE; + + protected int max = Integer.MIN_VALUE; + + @Override + public void setDefaultValue(String defaultValue) + { + throw new UnsupportedOperationException(); + } + + public void setDefaultValue(Integer defaultValue) + { + if (defaultValue != null) + super.setDefaultValue(defaultValue.toString()); + else + super.setDefaultValue(null); + } + + @Override + public void setValue(String value) + { + throw new UnsupportedOperationException(); + } + + public void setValue(Integer value) + { + if (value != null) + super.setValue(value.toString()); + else + super.setValue(null); + } + + public void setMin(Integer min) + { + this.min = requireNonNullElse(min, Integer.MAX_VALUE); + } + + public void setMax(Integer max) + { + this.max = requireNonNullElse(max, Integer.MIN_VALUE); + } + + public void setBounds(Integer min, Integer max) + { + setMin(min); + setMax(max); + } + + public IntegerParameter build() + { + return new IntegerParameter(this); + } + } + + public static Builder newBuilder() + { + return new Builder(); + } + int defval; int min; @@ -61,6 +124,15 @@ public class IntegerParameter extends Option implements ParameterI }; } + protected IntegerParameter(Builder builder) + { + super(builder); + min = builder.min; + max = builder.max; + if (defvalue != null) + defval = Integer.parseInt(defvalue); + } + public IntegerParameter(IntegerParameter parm) { super(parm); @@ -69,20 +141,20 @@ public class IntegerParameter extends Option implements ParameterI } public IntegerParameter(String name, String description, boolean required, - int defValue, int min, int max) + int defValue, int min, int max) { super(name, description, required, String.valueOf(defValue), null, null, - null); + null); defval = defValue; this.min = min; this.max = max; } public IntegerParameter(String name, String description, boolean required, - int defValue, int value, int min, int max) + int defValue, int value, int min, int 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;