package command; import exception.CrawlerException; import model.ResultContainer; import java.util.List; import java.util.function.Function; import java.util.function.Supplier; public class CommandWrapper { private final String name; private final Supplier> action; private final Function formatter; private CommandWrapper(String name, Supplier> action, Function formatter) { this.name = name; this.action = action; this.formatter = formatter; } public static CommandWrapper create(String name, Supplier> action) { return new CommandWrapper<>(name, action, Object::toString); } public static CommandWrapper create(String name, Supplier> action, Function formatter) { return new CommandWrapper<>(name, action, formatter); } public ResultContainer execute() { return action.get(); } public String getName() { return name; } public String format(T result) { return formatter.apply(result); } }