Package com.springone.myrestaurants.web

Source Code of com.springone.myrestaurants.web.FriendController

package com.springone.myrestaurants.web;

import java.util.Set;

import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.springone.myrestaurants.domain.UserAccount;

@RequestMapping("/friends")
@Controller
public class FriendController extends BaseApplicationController {
 
 
    @RequestMapping(method = RequestMethod.POST)
    public String create(FriendFormBean friend,
               @ModelAttribute("currentUserAccountId") Long userId,
               BindingResult result, Model model) {
        if (result.hasErrors()) {
            model.addAttribute("friend", friend);
            return "friends/create";
        }
        //TODO additional error checking
        UserAccount account = this.userAccountRepository.findUserAccount(userId);
        UserAccount friendAccount = this.userAccountRepository.findByName(friend.getUserName());
        if (friendAccount != null) {
          account.getFriends().add(friendAccount);
        }
        return "redirect:/friends/" + friendAccount.getId();
    }

    @RequestMapping(params = "form", method = RequestMethod.GET)
    public String createForm(Model model) {
        model.addAttribute("friend", new FriendFormBean());
        return "friends/create";
    }
   
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String show(@PathVariable("id") Long id, Model model) {
      UserAccount friendAccount = this.userAccountRepository.findUserAccount(id);
        model.addAttribute("friend", friendAccount);
        model.addAttribute("itemId", id);
        return "friends/show";
    }
   
    @RequestMapping(method = RequestMethod.GET)
    public String list(@RequestParam(value = "page", required = false) Integer page,
                   @RequestParam(value = "size", required = false) Integer size,
                   @ModelAttribute("currentUserAccountId") Long userId,
                   Model model) {
     
      UserAccount currentUser = this.userAccountRepository.findUserAccount(userId);
      Set<UserAccount> friends = currentUser.getFriends();
      model.addAttribute("friends", friends);
     
        return "friends/list";
    }
   
    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public String delete(@PathVariable("id") Long id,
                   @ModelAttribute("currentUserAccountId") Long userId,
                     @RequestParam(value = "page", required = false) Integer page,
                     @RequestParam(value = "size", required = false) Integer size, Model model) {
      UserAccount account = this.userAccountRepository.findUserAccount(userId);
      UserAccount friendAccount = this.userAccountRepository.findUserAccount(id);
      if (account.getFriends().contains(friendAccount)) {
        account.getFriends().remove(friendAccount);
      }
        model.addAttribute("page", (page == null) ? "1" : page.toString());
        model.addAttribute("size", (size == null) ? "10" : size.toString());
        return "redirect:/friends?page=" + ((page == null) ? "1" : page.toString()) + "&size=" + ((size == null) ? "10" : size.toString());
    }
   
   
    Converter<UserAccount, String> getUserAccountConverter() {
        return new Converter<UserAccount, String>() {
            public String convert(UserAccount friend) {
                return new StringBuilder().append(friend.getUserName()).toString();
            }
        };
    }
   
    @InitBinder
    void registerConverters(WebDataBinder binder) {
        if (binder.getConversionService() instanceof GenericConversionService) {
            GenericConversionService conversionService = (GenericConversionService) binder.getConversionService();
            conversionService.addConverter(getUserAccountConverter());
        }
    }


}
TOP

Related Classes of com.springone.myrestaurants.web.FriendController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.