protected void createHistoricTournament(MTTStateSupport state, PokerTournamentState pokerState) {
   if (historicId != null) {
     pokerState.setHistoricId(historicId);
   } else {
     historicId =
         storageService.createHistoricTournament(
             state.getName(), state.getId(), pokerState.getTemplateId(), isSitAndGo());
     pokerState.setHistoricId(historicId);
     storageService.statusChanged(
         PokerTournamentStatus.ANNOUNCED.name(), historicId, dateFetcher.now());
   }
 }
  public final void tournamentCreated(MTTState mtt, LobbyAttributeAccessor acc) {
    log.debug("Poker tournament created. MTT: [" + mtt.getId() + "]" + mtt.getName());
    MTTStateSupport stateSupport = ((MTTStateSupport) mtt);
    stateSupport.setGameId(PokerTournamentActivatorImpl.POKER_GAME_ID);
    stateSupport.setSeats(config.getSeatsPerTable());
    stateSupport.setName(config.getName());
    stateSupport.setCapacity(config.getMaxPlayers());
    stateSupport.setMinPlayers(config.getMinPlayers());

    PokerTournamentState pokerState = new PokerTournamentState();
    pokerState.setTiming(config.getTimingType());
    pokerState.setBetStrategy(config.getBetStrategy());
    pokerState.setBlindsStructure(config.getBlindsStructure());
    pokerState.setBuyIn(config.getBuyIn());
    pokerState.setFee(config.getFee());
    pokerState.setPayOutAsBonus(config.isPayOutAsBonus());
    pokerState.setCurrency(cashGamesBackendService.getCurrency(config.getCurrency()));
    pokerState.setPayoutStructure(config.getPayoutStructure(), config.getMinPlayers());

    pokerState.setStartingChips(config.getStartingChips());
    TournamentLifeCycle tournamentLifeCycle = getTournamentLifeCycle();
    pokerState.setLifecycle(tournamentLifeCycle);
    pokerState.setStartDateString(tournamentLifeCycle.getStartTime().toString(datePattern));
    pokerState.setRegistrationStartDate(tournamentLifeCycle.getOpenRegistrationTime());
    pokerState.setMinutesVisibleAfterFinished(getMinutesVisibleAfterFinished());
    pokerState.setTemplateId(getConfigurationTemplateId());
    pokerState.setSitAndGo(isSitAndGo());
    pokerState.setRebuySupport(createRebuySupport(config.getRebuyConfiguration()));
    pokerState.setGuaranteedPrizePool(config.getGuaranteedPrizePool());
    pokerState.getAllowedOperators().addAll(config.getOperatorIds());
    pokerState.setUserRuleExpression(config.getUserRuleExpression());
    pokerState.setVariant(config.getVariant());
    pokerState.setDescription(config.getDescription());

    PokerTournament tournament = new PokerTournament(pokerState);
    stateSupport.setState(tournament);

    acc.setStringAttribute("SPEED", timing.name());
    // TODO: Table size should be configurable.
    acc.setIntAttribute(
        PokerTournamentLobbyAttributes.TABLE_SIZE.name(), config.getSeatsPerTable());
    String opString = getOperatorLobbyIdString();
    acc.setStringAttribute(OPERATOR_IDS.name(), opString);
    String rule = config.getUserRuleExpression();
    acc.setStringAttribute(USER_RULE_EXPRESSION.name(), rule != null ? rule : "");
    acc.setStringAttribute(VARIANT.name(), PokerVariant.TEXAS_HOLDEM.name());
    createHistoricTournament(stateSupport, pokerState);
    tournamentCreated(stateSupport, pokerState, acc);
  }