/** * */ package org.javabuilders.handler.validation.validator; import org.javabuilders.BuildException; import org.javabuilders.BuildResult; import org.javabuilders.NamedObjectProperty; import org.javabuilders.handler.validation.BuilderValidators; import org.javabuilders.handler.validation.ValidationMessage; import org.javabuilders.handler.validation.ValidationMessageList; /** * Handles min numeric values * @author Jacek Furmankiewicz * */ public class MinValueValidator extends AbstractValidator { private Object minValue = null; private Long minValueLong = null; private Double minValueDouble = null; /** * Constructor * @param property * @param label * @param messageFormat * @param result * @param minValue */ public MinValueValidator(NamedObjectProperty property, String label, String messageFormat, BuildResult result, Object minValue) { super(property, label, messageFormat, result); this.minValue = minValue; try { minValueDouble = Double.parseDouble(minValue.toString()); } catch (Exception ex) {} try { if (minValueDouble == null) { minValueLong = Long.parseLong(minValue.toString()); } } catch (Exception ex) {} if (minValueDouble == null && minValueLong == null) { throw new BuildException("{0} is not a valid Long or Double comparison value",minValue); } } /* (non-Javadoc) * @see org.javabuilders.handler.validation.IPropertyValidator#validate(java.lang.Object, org.javabuilders.handler.validation.ValidationMessageList) */ public void validate(Object value, ValidationMessageList list) { String sValue = String.valueOf(value); if (minValueDouble != null) { try { Double dbl = Double.parseDouble(sValue); if (dbl < minValueDouble) { list.add(new ValidationMessage(getProperty(), getMessage(getLabel(),minValue))); } } catch (NumberFormatException ex) { list.add(new ValidationMessage(getProperty(), getMessageForFormat(BuilderValidators.getDefaultNumericMessage(),getLabel()))); } } else if (minValueLong != null) { try { Long lng = Long.parseLong(sValue); if (lng < minValueLong) { list.add(new ValidationMessage(getProperty(), getMessage(getLabel(),minValue))); } } catch (NumberFormatException ex) { list.add(new ValidationMessage(getProperty(), getMessageForFormat(BuilderValidators.getDefaultNumericMessage(),getLabel()))); } } } }