
package de.ivu.elect.jee.faces;

import static org.apache.commons.lang3.StringUtils.isBlank;

import java.io.Serializable;
import java.util.function.Function;

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

import de.ivu.elect.util.VerzeichnisStatus;

/**
 *  on 13.07.2015.
 */
public class VerzeichnisValidator implements Validator, Serializable {

  private static final long serialVersionUID = 1L;

  private final Function<String, VerzeichnisStatus> verzeichnisPruefer;

  public VerzeichnisValidator(Function<String, VerzeichnisStatus> verzeichnisPruefer) {
    this.verzeichnisPruefer = verzeichnisPruefer;
  }

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

    String path = o.toString().trim();

    if (isBlank(path)) {
      return;
    }

    VerzeichnisStatus result = verzeichnisPruefer.apply(path);

    if (!result.isOk()) {
      throw new ValidatorException(FacesMessageUtil.createErrorMessage(facesContext, "verzeichnis.validation.failed." + result.name(),
          "verzeichnis.validation.failed." + result.name(), path));
    }
  }
}
