| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.struts.examples.mailreader2; |
| |
| import org.apache.struts.examples.mailreader2.dao.User; |
| |
| /** |
| * <p>Insert or update a User object to the persistent store. </p> |
| */ |
| public class RegistrationAction extends MailreaderSupport { |
| |
| /** |
| * <p>Double check that there is not a valid User login. </p> |
| * |
| * @return True if there is not a valid User login |
| */ |
| private boolean isCreating() { |
| User user = getUser(); |
| return (null == user) || (null == user.getDatabase()); |
| } |
| |
| /** |
| * <p> Retrieve User object to edit or null if User does not exist. </p> |
| * |
| * @return The "Success" result for this mapping |
| * @throws Exception on any error |
| */ |
| public String input() throws Exception { |
| |
| if (isCreating()) { |
| createInputUser(); |
| setTask(Constants.CREATE); |
| } else { |
| setTask(Constants.EDIT); |
| setUsername(getUser().getUsername()); |
| setPassword(getUser().getPassword()); |
| setPassword2(getUser().getPassword()); |
| } |
| |
| return INPUT; |
| } |
| |
| /** |
| * <p>Insert or update a Registration.</p> |
| * |
| * @return The "outcome" result code |
| * @throws Exception on any error |
| */ |
| public String save() throws Exception { |
| return execute(); |
| } |
| |
| /** |
| * <p> Insert or update a User object to the persistent store. </p> |
| * <p/> |
| * <p> If a User is not logged in, then a new User is created and |
| * automatically logged in. Otherwise, the existing User is updated. </p> |
| * |
| * @return The "outcome" result code |
| * @throws Exception on any error |
| */ |
| public String execute() |
| throws Exception { |
| |
| boolean creating = Constants.CREATE.equals(getTask()); |
| creating = creating && isCreating(); // trust but verify |
| |
| if (creating) { |
| |
| User user = findUser(getUsername(), getPassword()); |
| boolean haveUser = (user != null); |
| |
| if (haveUser) { |
| addActionError(getText("error.username.unique")); |
| return INPUT; |
| } |
| |
| copyUser(getUsername(), getPassword()); |
| |
| } else { |
| |
| // FIXME: Any way to call the RegisrationSave validators from here? |
| String newPassword = getPassword(); |
| if (newPassword != null) { |
| String confirmPassword = getPassword2(); |
| boolean matches = ((null != confirmPassword) |
| && (confirmPassword.equals(newPassword))); |
| if (matches) { |
| getUser().setPassword(newPassword); |
| } else { |
| addActionError(getText("error.password.match")); |
| return INPUT; |
| } |
| } |
| } |
| |
| saveUser(); |
| |
| return SUCCESS; |
| } |
| |
| } |