package edu.vuum.mocca;

/**
 * @class Options
 * 
 * @brief This class implements the Singleton pattern to handle
 *        command-line option processing.
 */
public class Options
{
    /** 
     * The singleton @a Options instance. 
     */
    private static Options mUniqueInstance = null;

    /**
     * Maximum number of iterations to run the program (defaults to 10). 
     */
    private int mMaxIterations = 10;

    /** 
     * Method to return the one and only singleton uniqueInstance. 
     */
    public static Options instance() {
        if (mUniqueInstance == null)
            mUniqueInstance = new Options();

        return mUniqueInstance;
    }

    /** 
     * Number of iterations to run the program. 
     */
    public int maxIterations() {
        return mMaxIterations;
    }

    /**
     * Parse command-line arguments and set the appropriate values.
     */
    public boolean parseArgs(String argv[]) {
        for (int argc = 0; argc < argv.length; argc += 2)
            if (argv[argc].equals("-i"))
                mMaxIterations = Integer.parseInt(argv[argc + 1]);
            else {
                printUsage();
                return false;
            }

        return true;
    }

    /** 
     * Print out usage and default values. 
     */
    public void printUsage() {
        System.out.println("\nHelp Invoked on [-hist] ");
        System.out.println("Usage: ");
        System.out.println("-h: invoke help ");
        System.out.println("-i max-number-of-iterations ");
    }

    /**
     * Make the constructor private for a singleton.
     */
    private Options() {
    }
}
