Package net.cloudcodex.server.rpc

Source Code of net.cloudcodex.server.rpc.HomeRPCImpl

package net.cloudcodex.server.rpc;

import java.util.List;

import net.cloudcodex.server.Context;
import net.cloudcodex.server.DTOUtil;
import net.cloudcodex.server.data.Data;
import net.cloudcodex.server.data.home.CampaignSummary;
import net.cloudcodex.server.data.home.CharacterSummary;
import net.cloudcodex.shared.Errors;
import net.cloudcodex.shared.NotificationType;
import net.cloudcodex.shared.dto.Result;
import net.cloudcodex.shared.dto.home.HomeDTO;
import net.cloudcodex.shared.rpc.HomeRPC;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

/**
* The server side implementation of the RPC homeService.
*/
@SuppressWarnings("serial")
public class HomeRPCImpl extends AbstractRPC implements HomeRPC {

  /**
   * {@inheritDoc}
   */
  @Override
  public Result<HomeDTO> getHome() {
   
    final Context context = createContext();
    final Data.User user = context.getUser();

    if(user == null || user.getNickname() == null) {
      context.addError(Errors.NOT_REGISTERED);
      return createResult(context, null);
    }
   
    // Build the Home DTO
    final HomeDTO home = new HomeDTO();
    home.setNickname(user.getNickname());
    home.setUserId(user.getKey().getId());
   
    /*
     * General notifications.
     */
    home.setNotifications(DTOUtil.mapNotification(
      homeService.getNotifications(context, null), NotificationType.GLOBAL));

    /*
     * User notifications.
     */
    home.setUserNotifications(DTOUtil.mapNotification(
      homeService.getNotifications(context, user.getKey()), NotificationType.USER));
   
    /*
     *  Characters
     */
    final List<CharacterSummary> characters = homeService.getCharacterSummaries(context);
    home.setCharacters(DTOUtil.mapCharacterSummary(characters));
   
    /*
     *  Campaigns
     */
    final List<CampaignSummary> campaigns = homeService.getCampaignSummaries(context);
    home.setCampaigns(DTOUtil.mapCampaignSummary(campaigns));
   
    return createResult(context, home);
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<Boolean> register(String nickname) {
   
    // Try to find the user in datastore
    Data.User user = findCurrentUser();
   
    final UserService userService = UserServiceFactory.getUserService();
    final User guser = userService.getCurrentUser();

    // if not found, create a new one.
    if(user == null) {
      user = new Data.User();
      user.setEmail(guser.getEmail());
    }
   
    if(user.getGoogleId() == null) {
      user.setGoogleId(guser.getUserId());
    }
   
    final Context context = new Context(user);

    user = homeService.register(context, nickname);

    return createResult(context, user != null);
  }
 
}
TOP

Related Classes of net.cloudcodex.server.rpc.HomeRPCImpl

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.