@RequestMapping(value = "/addfriend", method = RequestMethod.POST)
  @Transactional
  public String postAddFriend(
      Model model, final AddFriendForm addFriendForm, BindingResult result) {
    final User user = service.getCurrentUser();
    // from
    SocialUserImpl userImpl = socailUserRepo.findOne(user.getId());
    final AddFriendLinkImpl link = linkRepo.findOne(addFriendForm.getId());
    SocialRelationshipImpl relation =
        socialRelationRepo.findByFrom_IdAndTo_Id(user.getId(), link.getUser().getId());
    if (relation == null) {
      relation = new SocialRelationshipImpl();
      relation.setId(userImpl.getId() + "_" + link.getUser().getId());
      relation.setFrom(userImpl);
      relation.setTo(link.getUser());

      // check whether reverse relation exists
      SocialRelationshipImpl reverse =
          socialRelationRepo.findByFrom_IdAndTo_Id(link.getUser().getId(), userImpl.getId());
      if (reverse == null) {
        // TODO something here
        AddFriendRequestImpl request = new AddFriendRequestImpl();
        request.setFrom(userImpl);
        request.setTo(link.getUser());
        request.setMessage(
            userImpl.getNickname()
                + " accept your add friend link, he also want to add you as friend!");
        request.setType(AddFriendRequestType.CONFIRM);
        request.setCreateDate(new Date());
        addFriendRequestRepo.save(request);
      }
    }
    relation.setLastUpdate(new Date());
    relation.setRating(addFriendForm.getRating());
    relation.setRelationType(Arrays.toString(addFriendForm.getFriendshipType()));
    socialRelationRepo.save(relation);

    // dfggffg
    /**
     * jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws
     * JMSException { // return session.createTextMessage("hello queue world"); AddRelationCommand
     * command = new AddRelationCommand(); command.setFromUser(user.getId());
     * command.setToUser(link.getUser().getId());
     * command.setTypes(addFriendForm.getFriendshipType());
     * command.setRating(addFriendForm.getRating()); return session.createObjectMessage(command); }
     * });
     */
    return "redirect:/user/index.do";
  }
  /** Selects the home page and populates the model with a message */
  @RequestMapping(value = "/addfriend", method = RequestMethod.GET)
  @Transactional
  public String home(Model model, @RequestParam(required = false, value = "id") String id) {
    logger.info("Welcome home!");
    User user = service.getCurrentUser();
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DATE, -7);
    if (StringUtils.isEmpty(id)) {
      SocialUserImpl userImpl = socailUserRepo.findOne(user.getId());
      AddFriendLinkImpl link =
          linkRepo.findByUser_IdAndCreateDateGreaterThan(user.getId(), calendar.getTime());
      if (link == null) {
        link = new AddFriendLinkImpl();
        link.setUser(userImpl);
        link.setCreateDate(new Date());
        link = linkRepo.save(link);
      }
      return "redirect:/social/addfriend.do?id=" + link.getId();
    } else {
      AddFriendLinkImpl link = linkRepo.findOne(id);

      boolean expired = calendar.getTime().compareTo(link.getCreateDate()) >= 0;
      model.addAttribute("link", link);
      model.addAttribute("expired", expired);
      boolean self = link.getUser().getId().equals(user.getId());
      model.addAttribute("self", self);
      AddFriendForm form = new AddFriendForm();
      if (!self) {
        SocialRelationshipImpl relation =
            socialRelationRepo.findByFrom_IdAndTo_Id(user.getId(), link.getUser().getId());
        if (relation != null) {
          form.setRating(relation.getRating());
          form.setFriendshipType(ArrayUtil.toLongArray(relation.getRelationType()));
        } else {
          form.setRating(3F);
        }
      } else {
        form.setRating(3f);
      }
      model.addAttribute("addFriendForm", form);
      SocialUserImpl userImpl = socailUserRepo.findOne(user.getId());
      model.addAttribute("hasProfile", user != null);
      model.addAttribute("friendshipTypes", categoryService.findByParent("friendship.type", null));
    }

    return "social.addfriend";
  }