ChangeCategorySettingScreenProvider.java

package com.github.quizclash.application.screen.provider;

import com.github.quizclash.application.screen.NumberInputScreen;
import com.github.quizclash.application.screen.ScreenFactory;
import com.github.quizclash.domain.Repository;

public class ChangeCategorySettingScreenProvider implements ScreenProvider {
  private final Repository repository;
  private final ScreenFactory screenFactory;
  private ScreenProviderType nextScreenProviderType;

  public ChangeCategorySettingScreenProvider(Repository repository, ScreenFactory screenFactory) {
    this.repository = repository;
    this.screenFactory = screenFactory;
  }

  @Override
  public void execute() {
    int categoriesPerUserInGame = 0;
    while (categoriesPerUserInGame == 0) {
      NumberInputScreen numberInputScreen = screenFactory.createNumberInputScreen(
          "How many categories do you want to play per user in one game?", "Enter a number");
      numberInputScreen.render();
      categoriesPerUserInGame = numberInputScreen.getNumberInput().getActionValue();
      if (categoriesPerUserInGame > 0) {
        this.repository.getSettingsRepository()
            .setCategoriesPerGameAndUser(categoriesPerUserInGame);
        this.nextScreenProviderType = ScreenProviderType.GAME_SETTINGS;
      }
    }
  }

  public ScreenProviderType getNextScreenProviderType() {
    return this.nextScreenProviderType;
  }
}