package net.bradmont.supergreen.fields.constraints;
import net.bradmont.supergreen.fields.*;
/**
* Length constraints for StringField. Set max to -1 for no maximum length.
*/
public class LengthConstraint extends Constraint{
int min;
int max;
public LengthConstraint(int min){
this(min, -1);
}
public LengthConstraint(int min, int max){
this.min = min;
this.max = max;
}
@Override
public boolean validate(DBField field) throws ConstraintError{
if (field.getString() == null && min > 0){
throw new ConstraintError( String.format("%s cannot be empty", field.getName()));
} else if (max != -1 && field.getString().length() > max){
throw new ConstraintError( String.format("%s cannot be longer than %d", field.getName(), max));
} else if (field.getString().length() < min){
throw new ConstraintError( String.format("%s cannot be shorter than %d", field.getName(), min));
} else {
return true;
}
}
}