Загрузка данных


package command;

import vending.VendingMachine;
import model.Inventory;
import model.Product;

public class SelectProductCommand implements Command {
    private VendingMachine vm;
    private int productId;
    private int price;      // сохраняем цену товара для отката
    private String productName;

    public SelectProductCommand(VendingMachine vm, int productId) {
        this.vm = vm;
        this.productId = productId;
        Product p = Inventory.getInstance().getProduct(productId);
        if (p != null) {
            this.price = p.price;
            this.productName = p.name;
        }
    }

    @Override
    public void execute() {
        vm.selectProduct(productId);
    }

    @Override
    public void undo() {
        // Отмена покупки: возвращаем деньги и восстанавливаем количество товара
        vm.setBalance(vm.getBalance() + price);
        Inventory.getInstance().restoreProduct(productId); // нужен метод restore
        System.out.println("Отмена покупки " + productName + ". Возвращено " + price + " руб. Баланс: " + vm.getBalance());
    }
}