package market.guess.ui.console.command; import market.guess.api.CatalogContext; import market.guess.ui.console.io.InputProcessor; public final class SaveMarketStateMenuCommand implements MenuCommand { private final CatalogContext catalog; private final InputProcessor io; public SaveMarketStateMenuCommand(CatalogContext catalog, InputProcessor io) { super(); this.catalog = catalog; this.io = io; } @Override public int getIndex() { return 7; } @Override public String getName() { return "Save current state"; } @Override public void execute() { var path = io.readPath("Please enter full path to save file (without or with .json extension): "); var result = catalog.saveState(path); if (result.isSuccess()) { io.println("Successfully saved current market state to %s.".formatted(path)); } else { var msg = result.getDetails() != null && !result.getDetails().isBlank() ? result.getDetails() : result.getMessage(); io.println("Failed to save state: %s".formatted(msg)); } } }