Package net.cloudcodex.server.data.campaign.msg

Examples of net.cloudcodex.server.data.campaign.msg.SceneSDO


     
      context = new Context(player1);
      final List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      final SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
    }
View Full Code Here


     
      context = new Context(player1);
      final List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      final SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
      assertEquals("Global", lastScene.getScene().getAlias(char1Id + ""));
      assertEquals("Specific", lastScene.getScene().getAlias(char1Id + "-" + char3Id));
    }
View Full Code Here

     
      context = new Context(player1);
      List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
     
      context = new Context(player2);
      readScenes =
        messageService.getMessages(context, campaignId, char2Id, null, null);
     
      lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue((intro + "2").equals(lastScene.getScene().getIntroduction()));     
    }
View Full Code Here

     
      context = new Context(player1);
      List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
     
      context = new Context(player2);
      readScenes =
        messageService.getMessages(context, campaignId, char2Id, null, null);
     
      lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue((intro + "2").equals(lastScene.getScene().getIntroduction()));     
    }
View Full Code Here

          dao.queryScene(campaignKey), FilterOperator.GREATER_THAN, timestamp), null);

      // register the scenes.
      if(scenesDB != null) {
        for(Scene sceneDB : scenesDB) {
          final SceneSDO sceneSDO = readSceneSDO(context, sceneDB, null, character);
          mapScenes.put(sceneDB.getKey(), sceneSDO);
        }
      }
     
      // search new messages.
      final List<Message> messages =
        dao.asListOfMessages(context, dao.addMessageFilterOnTimestamp(
          dao.queryMessage(campaignKey), FilterOperator.GREATER_THAN, timestamp), null);
     
      // keep only visible messages.
      keepOnlyVisibleMessages(messages, character.getKey(), true);
     
      // dispatch messages on scenes
      if(messages != null) {
        for(Message message : messages) {
          final Key sceneKey = message.getKey().getParent();
         
          SceneSDO sceneSDO = mapScenes.get(sceneKey);
         
          if(sceneSDO == null) {
            // scene was not already loaded, so ...
            final Scene scene = dao.readScene(context, sceneKey);
            if(scene == null) {
              logger.severe("Invalid scene " + sceneKey);
              continue;
            }
            sceneSDO = readSceneSDO(context, scene, null, character);
            mapScenes.put(sceneKey, sceneSDO);
          }

          // add the message to the scene.
          if(sceneSDO.getMessages() == null) {
            sceneSDO.setMessages(new ArrayList<Message>());
          }
         
          sceneSDO.getMessages().add(message);
        }
      }
     
      scenes.addAll(mapScenes.values());
     
    } else {
      final String characterIndex = String.valueOf(characterId);
     
      final Key sceneKey;
      if(lastSceneId == null) {
        // use current scene as start
        sceneKey = character.getScene();
      } else {
        // get the "last scene"'s previous scene
        final Key lastSceneKey =  Scene.createKey(campaignKey, lastSceneId);
        final Scene lastScene = dao.readScene(context, lastSceneKey);
        if(lastScene == null) {
          logger.severe("Invalid scene " + lastSceneKey);
          context.addError(Errors.NOT_FOUND_SCENE, lastSceneKey);
          return null;
        }
        if(!lastScene.getNonNullCharacters().contains(characterKey)) {
          logger.severe("LastScene " + lastSceneKey
              + " is not associated with " + characterKey);
          context.addError(Errors.IMPOSSIBLE);
          return null;
        }
       
        // get the previous scene "for the current character"
        sceneKey = lastScene.getPrevious(characterIndex);
      }

      if(sceneKey == null) {
        logger.severe("cannot find a starting scene for " + characterKey);
        context.addError(Errors.IMPOSSIBLE);
        return null;
      }
     
      // Load the scene.
      Scene scene = dao.readScene(context, sceneKey);
      if(scene == null) {
        logger.severe("Invalid scene " + sceneKey);
        context.addError(Errors.NOT_FOUND_SCENE, sceneKey);
        return null;
      }
     
      // Iterate over the scenes to reach (if possible), 25 messages
      int count = 0;
      while(scene != null && count < PAGINATION_MESSAGES) {
       
        // select all the messages of the scene, always, and order them.
        final List<Message> messages = order(dao.asListOfMessages(
          context, dao.queryMessage(scene.getKey()), null), scene.getFirstMessage());
       
        // keep only visible messages
        keepOnlyVisibleMessages(messages, characterKey, false);

        // note : even scenes with 0 messages must be returned because off the intro !
        final SceneSDO sceneSDO = readSceneSDO(context, scene, messages, character);

        scenes.add(0, sceneSDO);
       
        if(messages != null) {
          count += messages.size();
View Full Code Here

   * @return the {@link SceneSDO}.
   */
  private SceneSDO readSceneSDO(Context context, Scene scene,
    List<Message> messages, Data.Character character) {

    final SceneSDO sceneSDO = new SceneSDO();
    sceneSDO.setScene(scene);

    // Note : alias will be used after
    sceneSDO.setCharacters(dao.readCharacters(context, scene.getCharacters()));
   
    // keep only visible messages
    if(messages != null) {
      if(character != null) {
        keepOnlyVisibleMessages(messages, character.getKey(), false);
      }
      sceneSDO.setMessages(messages);
    }
   
    return sceneSDO;
  }
View Full Code Here

TOP

Related Classes of net.cloudcodex.server.data.campaign.msg.SceneSDO

Copyright © 2018 www.massapicom. 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.