| import com.opensymphony.util.BeanUtils; |
| import org.apache.struts.apps.mailreader.dao.User; |
| |
| public class Register extends MailReaderSupport { |
| |
| public String input() throws Exception { |
| |
| User user = getUser(); |
| boolean editing = (null != user); |
| |
| if (editing) { |
| setTask(EDIT); |
| BeanUtils.setValues(this, user, null); |
| setPassword(null); |
| } else { |
| setTask(CREATE); |
| } |
| |
| return INPUT; |
| } |
| |
| public String save() |
| throws Exception { |
| |
| User user = getUser(); |
| boolean editing = (null != user); |
| |
| if (editing) { |
| // FIXME: Any way to call the RegisterSave validators from here? |
| String newPassword = getPassword(); |
| boolean changing = ((null != newPassword) && (newPassword.length() > 0)); |
| if (!changing) { |
| setPassword(user.getPassword()); |
| } else { |
| String confirmPassword = getPassword2(); |
| boolean matches = ((null != confirmPassword) |
| && (confirmPassword.equals(newPassword))); |
| if (matches) { |
| user.setPassword(newPassword); |
| } else { |
| addActionError(getText(ERROR_PASSWORD_MATCH)); |
| return INPUT; |
| } |
| } |
| BeanUtils.setValues(user, this, null); |
| } |
| |
| if (!editing) { |
| user = findUser(getUsername(), getPassword()); |
| boolean haveUser = (user != null); |
| |
| if (haveUser) { |
| addActionError(getText(ERROR_USERNAME_UNIQUE)); |
| return INPUT; |
| } |
| |
| user = createUser(getUsername(), getPassword()); |
| setUser(user); |
| } |
| |
| saveUser(); |
| |
| return SUCCESS; |
| } |
| } |