Package org.appfuse.webapp.pages

Source Code of org.appfuse.webapp.pages.FromListUserEdit

package org.appfuse.webapp.pages;

import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationMessage;
import org.apache.wicket.Page;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.appfuse.model.User;
import org.appfuse.service.UserExistsException;

/**
* Page for editing a current user from list and an administrative addition of a new user.
*
* @author Marcin ZajÄ…czkowski, 2011-03-12
*/
@AuthorizeInstantiation({"ROLE_ADMIN"})
public class FromListUserEdit extends AbstractUserEdit {

    private static final String USER_PROFILE_PROPERTY_PREFIX = "userProfile.admin";

    /**
     * Constructor for adding a new user.
     *
     * @param responsePage page to come back
     */
    @Deprecated //rather user and proper model should be created in the place which calls that action
    public FromListUserEdit(Page responsePage) {
        super(responsePage, USER_PROFILE_PROPERTY_PREFIX, new Model<User>());
        //TODO: MZA: Here or in onInitialize?
        setUser(new User());
    }

    /**
     * Constructor for editing an existing user.
     *
     * @param responsePage page to come back
     * @param userModel model for editing user
     */
    public FromListUserEdit(Page responsePage, IModel<User> userModel) {
        super(responsePage, USER_PROFILE_PROPERTY_PREFIX, userModel);
    }

    protected void onSaveButtonSubmit() {
        User user = getUser();

        log.info("onSubmit: {}", user);
        log.info("onSubmit (address): {}", user.getAddress());

        try {
            getUserManager().saveUser(user);
            getSession().info(createDefaultInfoNotificationMessage(
                    new StringResourceModel("user.added", this, null, new Object[]{user.getFullName()})));
            resolveAndSetResponsePage();
        } catch (UserExistsException e) {
            log.warn("User already exists", e);
            error(new NotificationMessage(new StringResourceModel("errors.existing.user", this, null, new Object[] {
                    user.getUsername(), user.getEmail()})));
        }
    }

    @Override
    protected void onDeleteButtonSubmit() {
        User editedUser = getUser();
        String fullName = editedUser.getFullName();
        log.debug("deleting user: {}, {}", editedUser.getId(), fullName);
        getUserManager().removeUser(editedUser.getId().toString());
        getSession().info(new StringResourceModel(
                "user.deleted", this, null, new Object[] {fullName}).getString());
        resolveAndSetResponsePage();
    }

    @Override
    protected boolean getDisplayRolesGroupVisibility() {
        return false;
    }

    @Override
    protected boolean getAccountSettingsGroupVisibility() {
        return true;
    }

    @Override
    protected boolean getDeleteButtonVisibility() {
        return isExistingUserEdited();
    }

    private boolean isExistingUserEdited() {
        //Quite not elegant, but it seems there is not better way to determine if User is a new user (after add button)
        return getUser().getFirstName() != null;
    }
}
TOP

Related Classes of org.appfuse.webapp.pages.FromListUserEdit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.