userform.java

来自「this is for appfuse1.8 source using stru」· Java 代码 · 共 252 行

JAVA
252
字号
package org.appfuse.webapp.action;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.commons.lang.StringUtils;import org.apache.tapestry.IRequestCycle;import org.apache.tapestry.event.PageEvent;import org.apache.tapestry.event.PageRenderListener;import org.apache.tapestry.form.IPropertySelectionModel;import org.apache.tapestry.valid.IValidationDelegate;import org.apache.tapestry.valid.ValidationConstraint;import org.appfuse.Constants;import org.appfuse.model.Role;import org.appfuse.model.User;import org.appfuse.service.MailEngine;import org.appfuse.service.RoleManager;import org.appfuse.service.UserExistsException;import org.appfuse.service.UserManager;import org.appfuse.util.StringUtil;import org.appfuse.webapp.util.RequestUtil;import org.springframework.context.ApplicationContext;import org.springframework.mail.SimpleMailMessage;public abstract class UserForm extends BasePage implements PageRenderListener {    private IPropertySelectionModel countries;    private IPropertySelectionModel availableRoles;    public abstract UserManager getUserManager();    public abstract void setUserManager(UserManager mgr);    public abstract RoleManager getRoleManager();    public abstract void setRoleManager(RoleManager mgr);    public abstract void setUser(User user);    public abstract User getUser();    public abstract void setFrom(String from);    public abstract String getFrom();    public IPropertySelectionModel getAvailableRoles() {        if (availableRoles == null) {            List roles =                (List) getServletContext().getAttribute(Constants.AVAILABLE_ROLES);            availableRoles = new RoleModel(roles);        }        return availableRoles;    }    public IPropertySelectionModel getCountries() {        if (countries == null) {            countries = new CountryModel(getLocale());        }        return countries;    }    public void pageBeginRender(PageEvent event) {        // if user doing an add, create an empty user with default settings        if ((getUser() == null) && !event.getRequestCycle().isRewinding()) {            setUser(new User());             setFrom("list"); // shows role selection            getUser().addRole(new Role(Constants.USER_ROLE));        } else if (event.getRequestCycle().isRewinding()) { // before population            setUser(new User());        }        // if user logged in with a cookie, display a warning that they        // can't change passwords        if (log.isDebugEnabled()) {            log.debug("checking for cookieLogin...");        }        if (getSession().getAttribute("cookieLogin") != null) {            setMessage(getMessage("userProfile.cookieLogin"));        }    }    public void cancel(IRequestCycle cycle) {        if (log.isDebugEnabled()) {            log.debug("Entering 'cancel' method");        }        if (!StringUtils.equals(getRequest().getParameter("from"), "Slist")) {            cycle.activate("mainMenu");        } else {            cycle.activate("users");        }    }    public void save(IRequestCycle cycle) throws UserExistsException {        if (log.isDebugEnabled()) {            log.debug("entered save method");        }        // make sure the password fields match        IValidationDelegate delegate = getValidationDelegate();        if (!StringUtils.equals(getUser().getPassword(),                                    getUser().getConfirmPassword())) {            addError(delegate, "confirmPasswordField",                     format("errors.twofields",                            getMessage("user.confirmPassword"),                            getMessage("user.password")),                     ValidationConstraint.CONSISTENCY);        }        if (delegate.getHasErrors()) {            return;        }        String password = getUser().getPassword();        String originalPassword = getRequest().getParameter("originalPassword");                if (StringUtils.equals(getRequest().getParameter("encryptPass"), "true") ||                !StringUtils.equals("S"+password, originalPassword)) {            String algorithm =                (String) getConfiguration().get(Constants.ENC_ALGORITHM);            if (algorithm == null) { // should only happen for test case                log.debug("assuming testcase, setting algorigthm to 'SHA'");                algorithm = "SHA";            }            getUser().setPassword(StringUtil.encodePassword(password, algorithm));        }        // workaround for input tags that don't aren't set by Tapestry (who knows why)        boolean fromList =            StringUtils.equals(getRequest().getParameter("from"), "Slist");        String[] userRoles = null;        if (fromList) {            userRoles = getRequest().getParameterValues("userRoles");        } else {            userRoles = getRequest().getParameterValues("hiddenUserRoles");        }        User user = getUser();        UserManager userManager = getUserManager();        user.getRoles().clear();        for (int i = 0; (userRoles != null) && (i < userRoles.length); i++) {            String roleName = userRoles[i];            user.addRole(getRoleManager().getRole(roleName));        }        try {            userManager.saveUser(user);        } catch (UserExistsException e) {            log.warn(e.getMessage());            addError(delegate, "emailField",                     format("errors.existing.user", user.getUsername(),                            user.getEmail()), ValidationConstraint.CONSISTENCY);            return;        }        HttpSession session = getSession();        HttpServletRequest request = getRequest();        if (!fromList && user.getUsername().equals(getRequest().getRemoteUser())) {            session.setAttribute(Constants.USER_KEY, user);            // update the user's remember me cookie if they didn't login            // with a cookie            if ((RequestUtil.getCookie(request, Constants.LOGIN_COOKIE) != null) &&                    (session.getAttribute("cookieLogin") == null)) {                // delete all user cookies and add a new one                userManager.removeLoginCookies(user.getUsername());                String autoLogin =                    userManager.createLoginCookie(user.getUsername());                RequestUtil.setCookie(getResponse(), Constants.LOGIN_COOKIE,                                      autoLogin, request.getContextPath());            }            // add success messages            MainMenu nextPage = (MainMenu) cycle.getPage("mainMenu");            nextPage.setMessage(format("user.saved", user.getFullName()));            cycle.activate(nextPage);        } else {            // add success messages            if ("X".equals(request.getParameter(("version")))) {                                sendNewUserEmail(request, user);                UserList nextPage = (UserList) cycle.getPage("users");                nextPage.setMessage(format("user.added", user.getFullName()));                cycle.activate(nextPage); // return to the list screen            } else {                setMessage(format("user.updated.byAdmin", user.getFullName()));                cycle.activate("userForm"); // return to current page            }        }    }    public void delete(IRequestCycle cycle) {        if (log.isDebugEnabled()) {            log.debug("entered delete method");        }        getUserManager().removeUser(getUser().getUsername());        UserList nextPage = (UserList) cycle.getPage("users");        nextPage.setMessage(format("user.deleted", getUser().getFullName()));        cycle.activate(nextPage);    }    // Form Controls ==========================================================    public List getUserRoles() {        List selectedRoles = new ArrayList(getUser().getRoles().size());        for (Iterator it = getUser().getRoles().iterator();                 (it != null) && it.hasNext();) {            Role role = (Role) it.next();            selectedRoles.add(role.getName());        }        return selectedRoles;    }    private void sendNewUserEmail(HttpServletRequest request, User user) {        // Send user an e-mail        if (log.isDebugEnabled()) {            log.debug("Sending user '" + user.getUsername() +                      "' an account information e-mail");        }        Map global = (Map) getGlobal();        ApplicationContext ctx =            (ApplicationContext) global.get(BaseEngine.APPLICATION_CONTEXT_KEY);        SimpleMailMessage message =            (SimpleMailMessage) ctx.getBean("mailMessage");        message.setTo(user.getFullName() + "<" + user.getEmail() + ">");        StringBuffer msg = new StringBuffer();        msg.append(format("newuser.email.message", user.getFullName()));        msg.append("\n\n" + getMessage("user.username"));        msg.append(": " + user.getUsername() + "\n");        msg.append(getMessage("user.password") + ": ");        msg.append(user.getPassword());        msg.append("\n\nLogin at: " + RequestUtil.getAppURL(request));        message.setText(msg.toString());        message.setSubject(getMessage("signup.email.subject"));        MailEngine engine = (MailEngine) ctx.getBean("mailEngine");        engine.send(message);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?