package com.algaworks;
import java.util.HashMap;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import org.primefaces.validate.ClientValidator;
@FacesValidator(EmailBlacklistValidator.VALIDATOR_ID)
public class EmailBlacklistValidator implements Validator, ClientValidator {
public static final String VALIDATOR_ID = "com.algaworks.EmailBlacklist";
private String dominios;
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
if (value == null) {
return;
}
String email = value.toString();
String[] dominios = getDominios().split(",");
for (String dominio : dominios) {
if (email.endsWith("@" + dominio.trim())) {
throw new ValidatorException(new FacesMessage(
FacesMessage.SEVERITY_ERROR, "E-mail inválido", value
+ " está na lista negra"));
}
}
}
@Override
public Map<String, Object> getMetadata() {
Map<String, Object> data = new HashMap<String, Object>();
if (getDominios() != null) {
data.put("data-dominios", getDominios());
}
return data;
}
@Override
public String getValidatorId() {
return VALIDATOR_ID;
}
public String getDominios() {
return dominios;
}
public void setDominios(String dominios) {
this.dominios = dominios;
}
}