/**
*
*/
package org.appfuse.webapp.client.ui.users.updatePassword;
import java.util.Set;
import javax.validation.ConstraintViolation;
import org.appfuse.webapp.client.application.Application;
import org.appfuse.webapp.client.application.base.activity.AbstractBaseActivity;
import org.appfuse.webapp.client.proxies.UserProxy;
import org.appfuse.webapp.client.ui.home.HomePlace;
import org.appfuse.webapp.client.ui.login.LoginPlace;
import org.appfuse.webapp.client.ui.users.updatePassword.UpdatePasswordView.UserCredentials;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.editor.client.EditorDriver;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.inject.Inject;
import com.google.web.bindery.requestfactory.shared.Receiver;
/**
* @author ivangsa
*
*/
public class UpdatePasswordActivity extends AbstractBaseActivity implements UpdatePasswordView.Delegate {
private final UpdatePasswordView view;
@Inject
public UpdatePasswordActivity(final Application application, final UpdatePasswordView view) {
super(application);
this.view = view;
setTitle(i18n.updatePassword_title());
}
/**
* @see com.google.gwt.activity.shared.Activity#start(com.google.gwt.user.client.ui.AcceptsOneWidget,
* com.google.gwt.event.shared.EventBus)
*/
@Override
public void start(final AcceptsOneWidget panel, final EventBus eventBus) {
view.setDelegate(this);
view.setWaiting(false);
view.setUserCredentials(((UpdatePasswordPlace) currentPlace).getUserCredentials());
panel.setWidget(view);
setDocumentTitleAndBodyAttributtes();
}
@Override
public void onUpdatePasswordClick() {
final EditorDriver<UserCredentials> editorDriver = view.getEditorDriver();
final UserCredentials userCredentials = editorDriver.flush();
final Set<ConstraintViolation<UserCredentials>> violations = getValidator().validate(userCredentials);
if (!violations.isEmpty()) {
editorDriver.setConstraintViolations((Set) violations);
return;
}
final boolean isUsingToken = userCredentials.getToken() != null && !"".equals(userCredentials.getToken().trim());
requests.userRequest().updatePassword(
userCredentials.getUsername(),
userCredentials.getToken(),
userCredentials.getCurrentPassword(),
userCredentials.getPassword())
.fire(new Receiver<UserProxy>() {
@Override
public void onSuccess(final UserProxy response) {
if (response == null) {
if (isUsingToken) {
placeController.goTo(new LoginPlace());
shell.addMessage(i18n.updatePassword_invalidToken(), AlertType.ERROR);
} else {
shell.addMessage(i18n.updatePassword_invalidPassword(), AlertType.ERROR);
}
} else {
placeController.goTo(new HomePlace());
shell.addMessage(i18n.updatePassword_success(), AlertType.SUCCESS);
}
}
});
}
@Override
public void onCancelClick() {
placeController.goTo(getBackButtonPlace());
}
}