// Path: src/main/java/tudu/domain/User.java
// @Entity
// @Table(name = "tuser")
// @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
// @NamedQueries( {
//         @NamedQuery(name = "User.getNumberOfUsers", query = "SELECT COUNT(user) FROM User user"),
//         @NamedQuery(name = "User.findUsersByLogin", query = "SELECT user FROM User user where user.login LIKE :login") })
// public class User implements Serializable, Comparable<User> {
// 
//     /**
//      * The serialVersionUID.
//      */
//     private static final long serialVersionUID = 4048798961366546485L;
// 
//     @Id
//     @Size(min = 1, max = 50)
//     private String login;
// 
//     @Size(min = 5, max = 50)
//     private String password;
// 
//     @Transient
//     @Size(min = 5, max = 50)
//     private String verifyPassword;
// 
//     @Size(min = 1, max = 60)
//     private String firstName;
// 
//     @Size(min = 1, max = 60)
//     private String lastName;
// 
//     @Size(min = 0, max = 150)
//     @Email
//     private String email;
// 
//     private Date creationDate;
// 
//     private Date lastAccessDate;
// 
//     private boolean enabled;
// 
//     private String dateFormat;
// 
//     @ManyToMany
//     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
//     private Set<Role> roles = new HashSet<Role>();
// 
//     @ManyToMany(fetch = FetchType.EAGER)
//     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
//     private Set<TodoList> todoLists = new HashSet<TodoList>();
// 
//     public String getLogin() {
//         return login;
//     }
// 
//     public void setLogin(String login) {
//         this.login = login;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getVerifyPassword() {
//         return verifyPassword;
//     }
// 
//     public void setVerifyPassword(String verifyPassword) {
//         this.verifyPassword = verifyPassword;
//     }
// 
//     public String getFirstName() {
//         return firstName;
//     }
// 
//     public void setFirstName(String firstName) {
//         this.firstName = firstName;
//     }
// 
//     public String getLastName() {
//         return lastName;
//     }
// 
//     public void setLastName(String lastName) {
//         this.lastName = lastName;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public Date getCreationDate() {
//         return creationDate;
//     }
// 
//     public void setCreationDate(Date creationDate) {
//         this.creationDate = creationDate;
//     }
// 
//     public Date getLastAccessDate() {
//         return lastAccessDate;
//     }
// 
//     public void setLastAccessDate(Date lastAccessDate) {
//         this.lastAccessDate = lastAccessDate;
//     }
// 
//     public boolean isEnabled() {
//         return enabled;
//     }
// 
//     public void setEnabled(boolean enabled) {
//         this.enabled = enabled;
//     }
// 
//     public String getDateFormat() {
//         return dateFormat;
//     }
// 
//     public void setDateFormat(String dateFormat) {
//         this.dateFormat = dateFormat;
//     }
// 
//     public Set<Role> getRoles() {
//         return roles;
//     }
// 
//     public void setRoles(Set<Role> roles) {
//         this.roles = roles;
//     }
// 
//     public Set<TodoList> getTodoLists() {
//         return todoLists;
//     }
// 
//     public void setTodoLists(Set<TodoList> todoLists) {
//         this.todoLists = todoLists;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (!(o instanceof User)) {
//             return false;
//         }
//         final User user = (User) o;
// 
//         if (!login.equals(user.login)) {
//             return false;
//         }
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return login.hashCode();
//     }
// 
//     public int compareTo(User that) {
//         return this.getLogin().compareTo(that.getLogin());
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "login='" + login + '\'' +
//                 ", firstName='" + firstName + '\'' +
//                 ", lastName='" + lastName + '\'' +
//                 '}';
//     }
// }


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import tudu.domain.User;
import tudu.service.UserService;
package tudu.web.mvc;


/**
 * Recover a user's lost password.
 * 
 * @author Julien Dubois
 */
@Controller
@RequestMapping("/recoverPassword")
public class RecoverPasswordController {

    private final Log log = LogFactory.getLog(RecoverPasswordController.class);

    @Autowired
    private UserService userService;

    @ModelAttribute("user")
    public User formBackingObject() {
// Path: src/main/java/tudu/domain/User.java
// @Entity
// @Table(name = "tuser")
// @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
// @NamedQueries( {
//         @NamedQuery(name = "User.getNumberOfUsers", query = "SELECT COUNT(user) FROM User user"),
//         @NamedQuery(name = "User.findUsersByLogin", query = "SELECT user FROM User user where user.login LIKE :login") })
// public class User implements Serializable, Comparable<User> {
// 
//     /**
//      * The serialVersionUID.
//      */
//     private static final long serialVersionUID = 4048798961366546485L;
// 
//     @Id
//     @Size(min = 1, max = 50)
//     private String login;
// 
//     @Size(min = 5, max = 50)
//     private String password;
// 
//     @Transient
//     @Size(min = 5, max = 50)
//     private String verifyPassword;
// 
//     @Size(min = 1, max = 60)
//     private String firstName;
// 
//     @Size(min = 1, max = 60)
//     private String lastName;
// 
//     @Size(min = 0, max = 150)
//     @Email
//     private String email;
// 
//     private Date creationDate;
// 
//     private Date lastAccessDate;
// 
//     private boolean enabled;
// 
//     private String dateFormat;
// 
//     @ManyToMany
//     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
//     private Set<Role> roles = new HashSet<Role>();
// 
//     @ManyToMany(fetch = FetchType.EAGER)
//     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
//     private Set<TodoList> todoLists = new HashSet<TodoList>();
// 
//     public String getLogin() {
//         return login;
//     }
// 
//     public void setLogin(String login) {
//         this.login = login;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getVerifyPassword() {
//         return verifyPassword;
//     }
// 
//     public void setVerifyPassword(String verifyPassword) {
//         this.verifyPassword = verifyPassword;
//     }
// 
//     public String getFirstName() {
//         return firstName;
//     }
// 
//     public void setFirstName(String firstName) {
//         this.firstName = firstName;
//     }
// 
//     public String getLastName() {
//         return lastName;
//     }
// 
//     public void setLastName(String lastName) {
//         this.lastName = lastName;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public Date getCreationDate() {
//         return creationDate;
//     }
// 
//     public void setCreationDate(Date creationDate) {
//         this.creationDate = creationDate;
//     }
// 
//     public Date getLastAccessDate() {
//         return lastAccessDate;
//     }
// 
//     public void setLastAccessDate(Date lastAccessDate) {
//         this.lastAccessDate = lastAccessDate;
//     }
// 
//     public boolean isEnabled() {
//         return enabled;
//     }
// 
//     public void setEnabled(boolean enabled) {
//         this.enabled = enabled;
//     }
// 
//     public String getDateFormat() {
//         return dateFormat;
//     }
// 
//     public void setDateFormat(String dateFormat) {
//         this.dateFormat = dateFormat;
//     }
// 
//     public Set<Role> getRoles() {
//         return roles;
//     }
// 
//     public void setRoles(Set<Role> roles) {
//         this.roles = roles;
//     }
// 
//     public Set<TodoList> getTodoLists() {
//         return todoLists;
//     }
// 
//     public void setTodoLists(Set<TodoList> todoLists) {
//         this.todoLists = todoLists;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (!(o instanceof User)) {
//             return false;
//         }
//         final User user = (User) o;
// 
//         if (!login.equals(user.login)) {
//             return false;
//         }
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return login.hashCode();
//     }
// 
//     public int compareTo(User that) {
//         return this.getLogin().compareTo(that.getLogin());
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "login='" + login + '\'' +
//                 ", firstName='" + firstName + '\'' +
//                 ", lastName='" + lastName + '\'' +
//                 '}';
//     }
// }


// Path: src/main/java/tudu/web/mvc/RecoverPasswordController.java
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import tudu.domain.User;
import tudu.service.UserService;

package tudu.web.mvc;


/**
 * Recover a user's lost password.
 * 
 * @author Julien Dubois
 */
@Controller
@RequestMapping("/recoverPassword")
public class RecoverPasswordController {

    private final Log log = LogFactory.getLog(RecoverPasswordController.class);

    @Autowired
    private UserService userService;

    @ModelAttribute("user")
    public User formBackingObject() {
        return new User();