package kornell.gui.client.util.validation;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Widget;
import kornell.api.client.Callback;
import kornell.api.client.KornellSession;
import kornell.core.util.StringUtils;
import kornell.gui.client.KornellConstants;
import kornell.gui.client.util.forms.FormHelper;
public class CPFValidator implements Validator {
KornellConstants constants = GWT.create(KornellConstants.class);
KornellSession session;
String personUUID;
public CPFValidator(String personUUID, KornellSession session) {
this.session = session;
this.personUUID = personUUID;
}
public static final CPFValidator unregisteredCPFValidator(String personUUID,
KornellSession session) {
CPFValidator unregisteredCPFVal = new CPFValidator(personUUID, session);
return unregisteredCPFVal;
}
@Override
public void getErrors(Widget widget, final Callback<List<String>> cb) {
final List<String> errors = new ArrayList<String>();
if (widget instanceof HasText) {
HasText txtWidget = (HasText) widget;
String cpf = txtWidget.getText();
if (StringUtils.isSome(cpf)) {
if (!isValidCPF(cpf)) {
errors.add(constants.invalidCPF());
cb.ok(errors);
} else {
session.person(personUUID).isCPFRegistered(cpf, new Callback<Boolean>() {
@Override
public void ok(Boolean to) {
if (to) {
errors.add(constants.existingCPF());
}
cb.ok(errors);
}
});
}
} else {
cb.ok(errors);
}
}
}
private static boolean isValidCPF(String cpf) {
return FormHelper.isCPFValid(cpf);
}
}