/** * */ package org.javabuilders.handler.validation.validator; import java.util.ArrayList; import java.util.List; import org.javabuilders.BuildException; import org.javabuilders.BuildResult; import org.javabuilders.NamedObjectProperty; import org.javabuilders.handler.validation.ValidationMessage; import org.javabuilders.handler.validation.ValidationMessageList; /** * Handles type validation * @author bmojzf0 * */ public class TypeValidator extends AbstractValidator { public static final String INT = "int"; public static final String LONG = "long"; public static final String SHORT = "short"; public static final String BYTE = "byte"; public static final String DOUBLE="double"; public static final String FLOAT = "float"; private static List<String> types = new ArrayList<String>(); private String type = LONG; static { types.add(INT); types.add(LONG); types.add(SHORT); types.add(BYTE); types.add(DOUBLE); types.add(FLOAT); } /** * @param property * @param label * @param messageFormat * @param result */ public TypeValidator(NamedObjectProperty property, String label, String messageFormat, BuildResult result, String type) { super(property, label, messageFormat, result); if (!types.contains(type)) { throw new BuildException("\"{0}\" is not a valid type. Allowed values are: {1}", type, types); } this.type = type; } /* (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 errorFormat = null; try { if (type.equals(INT)) { errorFormat = "message.error.int"; Integer.parseInt(String.valueOf(value)); } else if (type.equals(LONG)) { errorFormat = "message.error.long"; Long.parseLong(String.valueOf(value)); } else if (type.equals(SHORT)) { errorFormat = "message.error.short"; Short.parseShort(String.valueOf(value)); } else if (type.equals(BYTE)) { errorFormat = "message.error.byte"; Byte.parseByte(String.valueOf(value)); } else if (type.equals(DOUBLE)) { errorFormat = "message.error.double"; Double.parseDouble(String.valueOf(value)); } else if (type.equals(FLOAT)) { errorFormat = "message.error.float"; Float.parseFloat(String.valueOf(value)); } else { throw new BuildException("Unexpected type: {0}" + type); } } catch (NumberFormatException e) { list.add(new ValidationMessage(getProperty(),getMessageForFormat(errorFormat,getLabel()))); } } }