package fr.openwide.core.basicapp.web.application.common.converter;
import java.util.Locale;
import org.apache.wicket.util.convert.ConversionException;
import org.apache.wicket.util.convert.converter.AbstractConverter;
import org.springframework.util.StringUtils;
import fr.openwide.core.basicapp.core.business.common.model.PostalCode;
import fr.openwide.core.basicapp.web.application.common.validator.PostalCodeValidator;
public final class PostalCodeConverter extends AbstractConverter<PostalCode> {
private static final long serialVersionUID = 7575610087030468757L;
private static final PostalCodeConverter INSTANCE = new PostalCodeConverter();
public static PostalCodeConverter get() {
return INSTANCE;
}
private PostalCodeConverter() {
}
@Override
public PostalCode convertToObject(String value, Locale locale) throws ConversionException {
String trimmedValue = StringUtils.trimAllWhitespace(value);
if (StringUtils.hasText(trimmedValue)) {
if (!PostalCodeValidator.getInstance().isValid(trimmedValue)) {
throw newConversionException("Invalid post code format", value, locale)
.setResourceKey("common.validator.postalCode");
}
return new PostalCode(trimmedValue);
}
return null;
}
@Override
public String convertToString(PostalCode value, Locale locale) {
if (value == null) {
return null;
}
return value.getValue();
}
@Override
protected Class<PostalCode> getTargetType() {
return PostalCode.class;
}
}