Apache Struts 2 Documentation > Home > FAQs > Cookbook > Using Checkboxes > Using Checkboxes - EditAction.java |

Apache Struts 2 Documentation
Using Checkboxes - EditAction.java
Edit Page Browse Space Add Page Add News
Added by joelhockey, last edited by Ted Husted on Sep 01, 2006 (view change)

    package cash.action;

    import org.apache.log4j.Logger;

    import cash.config.ConfigManager;
    import cash.model.User;
    import cash.util.HibernateUtil;
    import cash.validator.PasswordFormatValidator;

    import net.sf.hibernate.LockMode;

    /**
     * Edit a user
     * @author Joel Hockey
     * @version $Id: $
     */
    public class EditAction extends HibernateAction {
        private static final Logger LOG = Logger.getLogger(EditAction.class);

        private User m_user = new User();
        private String m_repeatPassword;

        /** return user to be edited. */
        public User getUser() { return m_user; }

        /** @param pwd repeat of password */
        public void setRepeatPassword(String pwd) { m_repeatPassword = pwd; }
        /** @return repeat password */
        public String getRepeatPassword() { return m_repeatPassword; }

        /** override super */
        public String execute() throws Exception {
            LOG.debug("EditAction started");

            // get original user from session, check that password is valid, update and save.
            User u = (User)get("user");
            HibernateUtil.currentSession().lock(u, LockMode.NONE);

            // check that password has actually changed before updating
            if (!PasswordFormatValidator.PASSWORD_MASK.equals(m_user.getPassword())) {
                if (!u.changePassword(m_user.getPassword())) {
                    addFieldError("user.password", "password must be different to previous "
                        + ConfigManager.getConfig().getUser().getNoRepeatHistory() + " passwords");
                    return INPUT;
                }
            }

            m_user.copy(u);
            HibernateUtil.currentSession().save(u);
            User loginUser = (User)get(LoginAction.LOGIN_USER);
            if (u.getId() == loginUser.getId()) {
                set(LoginAction.LOGIN_USER, u);
            }
            return SUCCESS;
        }
    }