use of org.broadleafcommerce.openadmin.dto.BasicFieldMetadata in project BroadleafCommerce by BroadleafCommerce.
the class RequiredIfPropertyValidator method validate.
@Override
public PropertyValidationResult validate(Entity entity, Serializable instance, Map<String, FieldMetadata> entityFieldMetadata, Map<String, String> validationConfiguration, BasicFieldMetadata propertyMetadata, String propertyName, String value) {
String errorMessage = "";
String compareFieldName = lookupCompareFieldName(propertyName, validationConfiguration);
String compareFieldValue = validationConfiguration.get("compareFieldValue");
String compareFieldRegEx = validationConfiguration.get("compareFieldRegEx");
Property compareFieldProperty = null;
boolean valid = true;
if (StringUtils.isEmpty(value)) {
compareFieldProperty = entity.getPMap().get(compareFieldName);
if (compareFieldProperty != null) {
if (compareFieldValue != null) {
valid = !compareFieldValue.equals(compareFieldProperty.getValue());
} else if (compareFieldRegEx != null) {
String expression = validationConfiguration.get("compareFieldRegEx");
valid = !compareFieldProperty.getValue().matches(expression);
}
}
}
if (!valid) {
BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext();
MessageSource messages = context.getMessageSource();
FieldMetadata fmd = entityFieldMetadata.get(compareFieldName);
String fieldName = messages.getMessage(fmd.getFriendlyName(), null, context.getJavaLocale());
errorMessage = messages.getMessage("requiredIfValidationFailure", new Object[] { fieldName, compareFieldProperty.getValue() }, context.getJavaLocale());
}
return new PropertyValidationResult(valid, errorMessage);
}
Aggregations