/******************************************************************************* * Copyright (c) 2015 Development Gateway, Inc and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the MIT License (MIT) * which accompanies this distribution, and is available at * https://opensource.org/licenses/MIT * * Contributors: * Development Gateway - initial API and implementation *******************************************************************************/ /** * */ package org.devgateway.toolkit.forms.validators; import java.util.Date; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.validation.IValidatable; import org.apache.wicket.validation.IValidator; import org.apache.wicket.validation.ValidationError; import org.devgateway.toolkit.forms.wicket.components.form.DateFieldBootstrapFormComponent; /** * @author mpostelnicu {@link DateFieldBootstrapFormComponent} validator for * dates that have a chronology */ public class EarlierThanDateFieldValidator implements IValidator<Date> { private static final long serialVersionUID = 1L; private DateFieldBootstrapFormComponent highDate; /** * Provide a {@link DateFieldBootstrapFormComponent} that has to be * chronologically after the current's * {@link DateFieldBootstrapFormComponent} validator */ public EarlierThanDateFieldValidator(final DateFieldBootstrapFormComponent highDate) { this.highDate = highDate; } @Override public void validate(final IValidatable<Date> validatable) { highDate.getField().validate(); if (!highDate.getField().isValid()) { return; } Date endDate = (Date) highDate.getField().getConvertedInput(); if (endDate != null && validatable.getValue() != null && endDate.before(validatable.getValue())) { ValidationError error = new ValidationError(this); error.setVariable("highDateName", new StringResourceModel(highDate.getLabelKey(), highDate.getParent(), null).getString()); validatable.error(error); } } }