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.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
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.model.User;
import tudu.service.UserManager;
/**
* Manage the user information.
*
* @author Julien Dubois
*/
@Controller
@RequestMapping("/secure/myInfo.action")
public class MyInfoAction {
@Autowired
private UserManager userManager;
@ModelAttribute("user")
public User formBackingObject() {
User user = userManager.getCurrentUser();
user.setVerifyPassword(user.getPassword());
return user;
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setRequiredFields(new String[]{"firstName", "lastName", "password", "verifyPassword"});
binder.setDisallowedFields(new String[] {"login"});
}
/**
* Display the "my user info" page.
*/
@RequestMapping(method = RequestMethod.GET)
public String display() {
return "my_info";
}
/**
* Update user information.
*/
@RequestMapping(method = RequestMethod.POST)
public String update(@ModelAttribute User user, BindingResult result) {
if (result.hasErrors()) {
return "my_info";
}
// 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);
}
userManager.updateUser(user);
return "my_info";
}
}