package io.shockah.skylark.factoids; import io.shockah.skylark.commands.CommandCall; import io.shockah.skylark.commands.CommandParseException; import io.shockah.skylark.commands.CommandProvider; import io.shockah.skylark.commands.CommandResult; import io.shockah.skylark.commands.NamedCommand; import io.shockah.skylark.event.GenericUserMessageEvent; import io.shockah.skylark.factoids.db.Factoid; public class FactoidCommandProvider extends CommandProvider { protected final FactoidsPlugin plugin; public FactoidCommandProvider(FactoidsPlugin plugin) { this.plugin = plugin; } @Override public NamedCommand<?, ?> provide(GenericUserMessageEvent e, String commandName) { Factoid factoid = plugin.findActiveFactoid(e, commandName); if (factoid == null) return null; FactoidType type = plugin.getType(factoid.type); if (type == null) { return new NamedCommand<Void, Void>(commandName) { @Override public Void parseInput(GenericUserMessageEvent e, String input) throws CommandParseException { return null; } @Override public CommandResult<Void> call(CommandCall call, Void input) { return CommandResult.error(String.format("Unknown factoid type %s.", factoid.type)); } }; } return type.createCommand(factoid); } }