package org.springframework.issues.web;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.issues.domain.User;
import org.springframework.issues.domain.UserRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController implements InitializingBean {
private final UserRepository repository;
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
public UserController(UserRepository repository) {
this.repository = repository;
}
@RequestMapping("/user/{id}")
@ResponseBody
public String showuser(@PathVariable("id") User user) {
return user.toString();
}
@RequestMapping("/issue")
public String issue(Model model) {
fillModel(model);
return "issue";
}
@RequestMapping("/ids")
public String ids(Model model) {
fillModel(model);
return "ids";
}
@RequestMapping("/select")
public String select(Model model) {
fillModel(model);
return "select";
}
@RequestMapping("/comparator")
public String comparator(Model model) {
fillModel(model);
return "comparator";
}
private void fillModel(Model model) {
model.addAttribute("userList", repository.findAll());
logger.info("fetched the list of all users");
UserForm form = new UserForm() ;
form.setSelectedUsers(Arrays.asList(repository.findOne(9L), repository.findOne(10L)));
logger.info("selected two particular users");
model.addAttribute("userForm", form);
}
@Override
public void afterPropertiesSet() throws Exception {
User user;
repository.deleteAll();
for(int i= 1; i <= 10; i++) {
user = new User();
user.setName("user-"+i);
repository.save(user);
}
}
}