/**
 * A simple database that contains measurements indexed by a name
 *
 * Note: This implementation uses arrays and, hence, has a 
 *       fixed capacity.
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0  
 */
public class MeasurementDatabase
{
    private int                 nextIndex;
    private String[]            names;
    private TwoPartMeasure[]    values;


    /**
     * Default Constructor
     */
    public MeasurementDatabase()
    {
	names  = new String[1000];
	values = new TwoPartMeasure[1000];

	nextIndex = 0;
    }


    /**
     * Add a measurement to the database.  The measurement
     * can be referred to (i.e., indexed by) the given name
     *
     * @param name   The name of the measurement
     * @param value  The measurement
     */
    public void add(String name, TwoPartMeasure value)
    {
	if (nextIndex < (names.length)) {

	    names[nextIndex]  = name;
	    values[nextIndex] = value;

	    nextIndex++;
	}
    }


    /**
     * Get the measurement with the given name (or null if
     * no such name exists)
     *
     * @param name   The name of the measurement
     * @return       The measurement (or null)
     */
    public TwoPartMeasure get(String name)
    {
	int              i;
	TwoPartMeasure   value;

	value = null;
	i     = 0;
	while ((value == null) && (i < nextIndex)) 
	{
	    if (names[i].equals(name)) value = values[i];

	    i++;
	}

	return value;
    }
    
}


