Exemplo n.º 1
0
  @Override
  @SuppressWarnings("unchecked")
  public Message<?> doHandleMessage(
      JabberMessage message, ConversationScope<String, Object> conversationScope)
      throws MessagingException {
    JabberMessageLogger.log(log, message, "YES");

    // foos in progress
    if (MessageUtils.isFoosballInProgress(conversationScope)) {
      return new GenericMessage<Object>(Messages.FOOSBALL_IN_PROGRESS);
    }
    // foos hunting not start
    if (!MessageUtils.isHuntingMessagesSent(conversationScope)) {
      return new GenericMessage<Object>(Messages.NO_FOOSBALL_HUNTING);
    }

    conversationScope.refresh();

    String playerJabber = MessageUtils.parseJabber(message.from());
    Set<JoinedPlayer> players = MessageUtils.getFoosballPlayers(conversationScope);

    if (!players.contains(new JoinedPlayer(playerJabber))) {
      if (!foosball(playerJabber, players)) { // not complete foos
        return new GenericMessage<>(
            Messages.format(Messages.FOOSBALL, players.size(), foosballSize));
      } else {
        letsGo(players);
        conversationScope.put(Constants.FOOSBALL_IN_PROGRESS, true);
        return null; // already send message about complete foot
      }
    } else {
      return new GenericMessage<>(
          Messages.format(Messages.FOOSBALL_ALREADY_IN, players.size(), foosballSize));
    }
  }