package edu.kit.aifb.cumulus.cli; import java.util.HashMap; import java.util.Map; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.MissingOptionException; import org.apache.commons.cli.ParseException; import org.slf4j.LoggerFactory; import edu.kit.aifb.cumulus.cli.log.MessageCatalog; import edu.kit.aifb.cumulus.log.Log; /** * Main class for the CLI, directs the call to one of the other CLI commands. * * @author Andreas Wagner * @author Andrea Gazzarini * @since 1.0 */ public abstract class Cirrus { static final Log LOG = new Log(LoggerFactory.getLogger(Cirrus.class)); private static final Map<String, Command> COMMAND_REGISTRY = new HashMap<String, Command>(); static { COMMAND_REGISTRY.put("load", new Load()); COMMAND_REGISTRY.put("dump", new Dump()); COMMAND_REGISTRY.put("query", new Query()); COMMAND_REGISTRY.put("remove", new Remove()); } /** * Cirrus main entry point. * * @param args the command line arguments. */ public static void main(final String[] args) { if (args.length < 1) { LOG.error(MessageCatalog.WRONG_ARGS_SIZE); System.exit(1); } final Command command = COMMAND_REGISTRY.get(args[0]); if (command == null) { LOG.error(MessageCatalog._00001__UNKNOWN_COMMAND, args[0]); System.exit(1); } final CommandLineParser parser = new BasicParser(); try { final CommandLine commandLine = parser.parse(command.getOptions(), args); command.execute(commandLine); } catch (final MissingOptionException exception) { command._log.error(MessageCatalog._00028_CL_PARSER_FAILURE, exception.getMessage()); HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("cirrus <command> <options>", command.getOptions()); System.exit(1); } catch (final ParseException exception) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("cirrus <command> <options>", command.getOptions()); System.exit(1); } } }