@Override
  public void updateLocation(String userToken, double latitude, double longitude, Date time) {

    Location location = new Location(latitude, longitude, time);

    // TODO: side effect, move it to a separate method
    User user = userDAO.findByToken(userToken);
    if (user == null) {
      user = new User(userToken, location);
    }

    user.setLocation(location);
    userDAO.store(user);
  }
  @Override
  public void updatePreferences(String userToken, Long itemId, float score) {

    User user = userDAO.findByToken(userToken);
    if (user != null) {
      Preference preference = preferenceDAO.findForUserByItemId(user.getId(), itemId);
      if (preference != null) {
        preference.setScore(score);
        preferenceDAO.store(preference);
      }
    }
  }
 @Override
 public User findUser(String userToken) {
   return userDAO.findByToken(userToken);
 }