
package de.ivu.elect.jee.faces;

import java.io.Serializable;
import java.util.Date;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.ValidatorException;

/*
 * ELECT-3352
 *
 * Dieser Validator überprüft, ob das vom Benutzer eingegebene Jahr kleiner oder oder gleich 9999 ist.
 */
@FacesValidator(JahrKleiner10000Validator.VALIDATOR_ID)
public class JahrKleiner10000Validator implements javax.faces.validator.Validator, Serializable {

  private static final long serialVersionUID = 1L;

  public static final String VALIDATOR_ID = "yearValidator";

  public static JahrKleiner10000Validator INSTANCE = new JahrKleiner10000Validator();

  public JahrKleiner10000Validator() {
    super();
  }

  @Override
  public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException {
    if (o == null) {
      return;
    }

    Date date = (Date) o;
    int year = 1900 + date.getYear();

    if (year > 9999) {
      throw new ValidatorException(
          FacesMessageUtil.createErrorMessage(facesContext, "year.validation.failed", "year.validation.failed.detail", String.valueOf(year)));
    }
  }
}
