Package net.cloudcodex.server.rpc

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

package net.cloudcodex.server.rpc;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

import net.cloudcodex.server.Context;
import net.cloudcodex.server.DTOUtil;
import net.cloudcodex.server.data.Data;
import net.cloudcodex.server.data.campaign.character.CharacterDescriptionSDO;
import net.cloudcodex.server.data.campaign.character.CharacterSDO;
import net.cloudcodex.server.data.campaign.msg.SceneSDO;
import net.cloudcodex.server.data.campaign.scene.SceneToCreateSDO;
import net.cloudcodex.server.data.home.CampaignSummary;
import net.cloudcodex.shared.MessageAction;
import net.cloudcodex.shared.dto.Result;
import net.cloudcodex.shared.dto.campaign.character.CharacterDescriptionDTO;
import net.cloudcodex.shared.dto.campaign.character.CharacterHeaderDTO;
import net.cloudcodex.shared.dto.campaign.character.CharacterNoteDTO;
import net.cloudcodex.shared.dto.campaign.character.CompleteCharacterDescriptionDTO;
import net.cloudcodex.shared.dto.home.CampaignSummaryDTO;
import net.cloudcodex.shared.dto.msg.SceneDTO;
import net.cloudcodex.shared.dto.msg.SceneToCreateDTO;
import net.cloudcodex.shared.rpc.CampaignRPC;

/**
* RPC for Campaign, Scene and Message.
* @author Thomas
*/
@SuppressWarnings("serial")
public class CampaignRPCImpl extends AbstractRPC implements CampaignRPC {

  /**
   * {@inheritDoc}
   */
  @Override
  public Result<CampaignSummaryDTO> createCampaign(String name, String game,
      String description, String icon) {

    final Context context = createContext();
   
    final Data.Campaign campaign =
      campaignService.createCampaign(context, name, game,
          description, icon, context.getUser());

    final CampaignSummary summary = new CampaignSummary();
    summary.setCampaign(campaign);
    summary.setMaster(context.getUser());
    summary.setNotifications(null);
    summary.setCharacters(null);
   
    return createResult(context, DTOUtil.mapCampaignSummary(summary));
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<CampaignSummaryDTO> updateCampaign(long campaignId,
      String name, String game,
      String description, String icon) {

    final Context context = createContext();
   
    final Data.Campaign campaign =
      campaignService.updateCampaign(context, campaignId, name, game,
          description, icon, context.getUser());

    final CampaignSummary summary = new CampaignSummary();
    summary.setCampaign(campaign);
    summary.setMaster(context.getUser());
    summary.setNotifications(null);
    summary.setCharacters(null);
   
    return createResult(context, DTOUtil.mapCampaignSummary(summary));
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<CharacterHeaderDTO> inviteToCampaign(long campaignId, String email, String name) {

    final Context context = createContext();
   
    final CharacterSDO character =
      campaignService.inviteToCampaign(context, campaignId, email, name);

    return createResult(context, DTOUtil.mapCharacterSDOToHeader(character, null));
  }
 
  /**
   * Creates a NPC.
   */
  @Override
  public Result<CharacterHeaderDTO> addNPC(long campaignId, String name,
      String description, String icon, boolean profile) {
   
    final Context context = createContext();
   
    final CharacterSDO character = campaignService.createNPC(
        context, campaignId, name, icon, description, profile);

    return createResult(context, DTOUtil.mapCharacterSDOToHeader(character, null));
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<List<CharacterHeaderDTO>> getCampaignCharacters(long campaignId) {
    final Context context = createContext();
   
    final List<CharacterSDO> characters =
      campaignService.getCampaignCharacters(context, campaignId);
   
    if(characters == null) {
      return new Result<List<CharacterHeaderDTO>>(true, null, null);
    }
   
    // Map SDOs to DTOs
    final List<CharacterHeaderDTO> dtos = DTOUtil.mapCharacterSDOToHeader(characters, null);

    // Return OK result with DTOs.
    return createResult(context, dtos);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public Result<CharacterDescriptionDTO> getCharacterDescription(
      long campaignId, long characterId,
      Long byCharacterId, Date timestamp) {
   
    final Context context = createContext();

    final CharacterDescriptionSDO sdo = campaignService.getCharacterDescription(
        context, campaignId, characterId, byCharacterId, timestamp);
   
    final CharacterDescriptionDTO dto = DTOUtil.mapCharacterDescription(sdo);
   
    return createResult(context, dto);
  }
 

  @Override
  public Result<CompleteCharacterDescriptionDTO> getCharacterCompleteDescription(
      long campaignId, long characterId) {

    final Context context = createContext();
   
    final CompleteCharacterDescriptionDTO dto = new CompleteCharacterDescriptionDTO();

    // Get the header.
    final CharacterSDO character = campaignService.getCharacter(context, campaignId, characterId);
    dto.setHeader(DTOUtil.mapCharacterSDOToHeader(character, characterId));

    // Get the description.
    final CharacterDescriptionSDO sdo = campaignService.getCharacterDescription(
        context, campaignId, characterId, characterId, null);
   
    dto.setDescription(DTOUtil.mapCharacterDescription(sdo));

    return createResult(context, dto);
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<CharacterDescriptionDTO> updateCharacterDescription(
      long campaignId, long characterId, Long byCharacterId,
      String description, String sheet, Boolean dead, Boolean locked,
      List<CharacterNoteDTO> notes, Map<Long, String> aliases) {
   
    final Context context = createContext();
   
    final Map<Long, String> map = new HashMap<Long, String>();
    for(CharacterNoteDTO note : notes) {
      if(note != null) {
        map.put(note.getAuthor(), note.getContent());
      }
    }

    final CharacterDescriptionSDO sdo =
      campaignService.updateCharacterDescription(
        context, campaignId, characterId, byCharacterId,
        description, sheet, dead, locked,
        map, aliases);

    if(sdo == null) {
      return new Result<CharacterDescriptionDTO>(false, null, null);
    }

    return createResult(context, DTOUtil.mapCharacterDescription(sdo));
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<List<SceneDTO>> getMessages(long campaignId, long characterId,
      Long lastSceneId, Date timestamp) {
   
    final Context context = createContext();
   
    final List<SceneSDO> scenes = messageService.getMessages(
        context, campaignId, characterId, lastSceneId, timestamp);

    if(scenes == null) {
      return new Result<List<SceneDTO>>(false, null, null);
    }
   
    final List<SceneDTO> dtos = DTOUtil.mapScene(scenes, characterId);
   
    return createResult(context, dtos);
  }
 

  /**
   * {@inheritDoc}
   */
  @Override
  public Result<Boolean> justForTestsDoSomethingRandomly(long campaignId, long characterId, int action) {
   
    final Context context = createContext();
    final boolean result;
    if(action == 0) {
      return justForTestsDoSomethingRandomly(campaignId, characterId, new Random().nextInt(6) + 1);
    } else if(action == 1) {
      result = messageService.justForTestsCreateSequenceRandomly(context, campaignId, characterId);
    } else if(action == 2) {
      result = messageService.justForTestsMakeThemTalkRandomly(context, campaignId, characterId);
    } else if(action == 3) {
      result = messageService.justForTestsInsertOFFRandomly(context, campaignId, characterId);
    } else if(action == 4) {
      result = messageService.justForTestsDeleteMessageRandomly(context, campaignId, characterId);
    } else if(action == 5) {
      result = messageService.justForTestsMakeThemRollDicesRandomly(context, campaignId, characterId);
    } else if(action == 6) {
      result = messageService.justForTestsReindexRandomly(context, campaignId, characterId);
    } else {
      result = false;
    }
   
    return createResult(context, result);
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<Boolean> playerPostAction(
      long campaignId, long characterId,
      long clientSceneId, Date clientSceneTimestamp,
      MessageAction action, String content) {
   
    final Context context = createContext();
   
    final boolean result = messageService.playerPostAction(
        context, campaignId, characterId,
        clientSceneId, clientSceneTimestamp, action, content);

    return createResult(context, result);
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<Boolean> playerPostOFF(
      long campaignId, long characterId,
      long clientSceneId, Date clientSceneTimestamp,
      String content) {
   
    final Context context = createContext();
   
    final boolean result = messageService.playerPostOFF(
        context, campaignId, characterId,
        clientSceneId, clientSceneTimestamp, content);

    return createResult(context, result);
  }
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Result<Boolean> playerRollDices(
      long campaignId, long characterId,
      long clientSceneId, Date clientSceneTimestamp,
      Map<Integer, Integer> dices, String content) {
   
    final Context context = createContext();
   
    final boolean result = messageService.playerRollDices(
        context, campaignId, characterId,
        clientSceneId, clientSceneTimestamp,
        dices, content);

    return createResult(context, result);
  }
 
 
  @Override
  public Result<Boolean> startScenes(long campaignId,
      SceneToCreateDTO[] scenesDTO) {
   
   
    final Context context = createContext();
 
    final SceneToCreateSDO[] scenes;
    if(scenesDTO == null) {
      scenes = null;
    } else {
      scenes = new SceneToCreateSDO[scenesDTO.length];
      for(int n = 0; n < scenesDTO.length; n++) {
        scenes[n] = DTOUtil.mapSceneToCreate(scenesDTO[n]);
      }
    }
   
    final boolean result = messageService.startScenes(context, campaignId, scenes);

    return createResult(context, result);
  }

}
TOP

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

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.