/*
* Copyright (c) 2011-2015, Dan McNulty
* All rights reserved.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package net.udidb.cli.driver;
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.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import net.udidb.engine.Config;
/**
* Builder used to construct a configuration for udidb from command line arguments
*
* @author mcnulty
*/
public class ConfigBuilder {
private final Option helpOption;
private final Options options;
/**
* Constructor.
*/
public ConfigBuilder() {
helpOption = new Option("h", "help", false, "Display this help message");
options = new Options();
options.addOption(helpOption);
}
/**
* Builds the configuration for udidb from the command line parameters
*
* @param args the command line arguments
*
* @return the configuration
*
* @throws ParseException if the configuration cannot be created due to invalid parameters
* @throws HelpMessageRequested when the user requests the help message
*/
public Config build(String[] args) throws ParseException, HelpMessageRequested {
CommandLineParser parser = new BasicParser();
CommandLine commandLine = parser.parse(options, args);
if ( commandLine.hasOption(helpOption.getOpt()) ) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("udidb", options, true);
throw new HelpMessageRequested();
}
// TODO convert options to config
return new CommandLineConfigImpl();
}
}