package org.lucci.madhoc.simulation.measure;

import org.lucci.madhoc.simulation.projection.Projection;

/*
 * Created on May 4, 2005
 */

/**
 * @author luc.hogie
 */
public abstract class NumericalSensor extends Sensor
{
    private int precision = 9;
    

    
    public abstract Double takeNewDoubleValue(Projection projection);
    
    
    
    @Override
    public final Object takeNewValue(Projection projection)
    {
        return takeNewDoubleValue(projection);
    }



    public abstract Unit getUnit();

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.Measure#getValueClass()
     */
    public Class getValueClass()
    {
        return java.lang.Double.class;
    }

    
    /**
     * @return Returns the precision.
     */
    public int getPrecision()
    {
        return precision;
    }
    /**
     * @param precision The precision to set.
     */
    public void setPrecision(int precision)
    {
        if (precision < 0)
            throw new IllegalArgumentException();

        this.precision = precision;
    }


    public MeasureHistory createMeasureHistory()
    {
        MeasureHistory r = new NumericalMeasureHistory();
        r.setSensor(this);
        return r;
    }

}