package com.andreiolar.abms.shared;
import com.andreiolar.abms.client.rpc.DBCheckAvailableUsername;
import com.andreiolar.abms.client.rpc.DBCheckAvailableUsernameAsync;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
public class UsernameValidator extends Validator {
private boolean result = false;
@Override
public boolean validate(String value) {
DBCheckAvailableUsernameAsync rpcService = (DBCheckAvailableUsernameAsync) GWT.create(DBCheckAvailableUsername.class);
ServiceDefTarget target = (ServiceDefTarget) rpcService;
String moduleRelativeURL = GWT.getModuleBaseURL() + "DBCheckAvailableUsernameImpl";
target.setServiceEntryPoint(moduleRelativeURL);
rpcService.checkForUsername(value, new AsyncCallback<User>() {
@Override
public void onSuccess(User user) {
result = false;
}
@Override
public void onFailure(Throwable caught) {
result = true;
}
});
if (result) {
errorMessage = "";
return true;
} else {
errorMessage = "Username already in use";
return false;
}
}
@Override
public String getErrorMessage() {
return errorMessage;
}
}