package org.peerbox.presenter.validation;
import javafx.beans.property.StringProperty;
import javafx.scene.control.TextField;
import org.hive2hive.core.exceptions.NoPeerConnectionException;
import org.peerbox.app.manager.user.IUserManager;
import org.peerbox.presenter.validation.ValidationUtils.ValidationResult;
public final class UsernameRegisteredValidator extends TextFieldValidator {
private final IUserManager userManager;
public UsernameRegisteredValidator(TextField txtUsername, StringProperty errorProperty, IUserManager userManager) {
super(txtUsername, errorProperty, true);
this.userManager = userManager;
}
@Override
public ValidationResult validate(final String username) {
return validate(username, false);
}
public ValidationResult validate(boolean checkIfRegistered) {
return validate(validateTxtField.getText(), checkIfRegistered);
}
public ValidationResult validate(final String username, boolean checkIfRegistered) {
try {
if(username == null) {
return ValidationResult.ERROR;
}
final String usernameTr = username.trim();
ValidationResult res = ValidationUtils.validateUserExists(usernameTr, checkIfRegistered, userManager);
if (res.isError()) {
setErrorMessage(res.getMessage());
decorateError();
} else {
clearErrorMessage();
undecorateError();
}
return res;
} catch (NoPeerConnectionException e) {
setErrorMessage("Network connection failed.");
}
return ValidationResult.ERROR;
}
public void reset() {
undecorateError();
clearErrorMessage();
}
}