package tudu.web.mvc; import org.springframework.beans.factory.annotation.Autowired; 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 tudu.Constants; import tudu.domain.User; import tudu.service.UserService; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; /** * Manage the user information. * * @author Julien Dubois */ @Controller @RequestMapping("/account") public class AccountController { @Autowired private UserService userService; @ModelAttribute("user") public User formBackingObject() { User user = userService.getCurrentUser(); user.setVerifyPassword(user.getPassword()); return user; } /** * Display the "my user info" page. */ @RequestMapping(method = RequestMethod.GET) public String display() { return "account"; } /** * Update user information. */ @RequestMapping(method = RequestMethod.POST) public String update(@Valid User user, BindingResult result, HttpServletRequest request) { if (result.hasErrors()) { return "account"; } if (!user.getPassword().equals(user.getVerifyPassword())) { result.rejectValue("verifyPassword", "user.info.password.not.matching"); return "account"; } // If the user hacked the drop-down list, defaults to US date format if (user.getDateFormat() == null || (!user.getDateFormat().equals(Constants.DATEFORMAT_US) && !user.getDateFormat().equals(Constants.DATEFORMAT_US_SHORT) && !user.getDateFormat().equals(Constants.DATEFORMAT_FRENCH) && !user.getDateFormat() .equals(Constants.DATEFORMAT_FRENCH_SHORT))) { user.setDateFormat(Constants.DATEFORMAT_US); } userService.updateUser(user); request.setAttribute("updated", "ok"); return "account"; } }