/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.dynamic.data.mapping.type.numeric.internal; import com.liferay.dynamic.data.mapping.form.field.type.DDMFormFieldValueValidationException; import com.liferay.dynamic.data.mapping.form.field.type.DDMFormFieldValueValidator; import com.liferay.dynamic.data.mapping.model.DDMFormField; import com.liferay.dynamic.data.mapping.model.Value; import java.util.Locale; import org.osgi.service.component.annotations.Component; /** * @author Marcellus Tavares */ @Component( immediate = true, property = "ddm.form.field.type.name=numeric", service = DDMFormFieldValueValidator.class ) public class NumericDDMFormFieldValueValidator implements DDMFormFieldValueValidator { @Override public void validate(DDMFormField ddmFormField, Value value) throws DDMFormFieldValueValidationException { for (Locale availableLocale : value.getAvailableLocales()) { String valueString = value.getString(availableLocale); if (!isNumber(valueString)) { throw new DDMFormFieldValueValidationException( String.format( "\"%s\" is not a %s", valueString, ddmFormField.getDataType())); } } } protected boolean isNumber(String valueString) { try { Double.parseDouble(valueString); } catch (NumberFormatException nfe) { return false; } return true; } }