/* Copyright (C) 2001, 2007 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.layers.rpf.wizard;
/**
* @author dcollins
* @version $Id: ETRCalculator.java 4529 2008-02-20 03:27:48Z dcollins $
*/
public class ETRCalculator
{
private int step = -1;
private int numSteps = -1;
private int stepsNeededForEstimate = 1;
private long startTime = -1;
private long updateFrequency = 1000;
private long etr = -1;
private long nextUpdateTime = -1;
public ETRCalculator()
{}
public int getStep()
{
return this.step;
}
public void setStep(int step)
{
this.step = step < 0 ? -1 : step;
}
public int getNumSteps()
{
return this.numSteps;
}
public void setNumSteps(int numSteps)
{
this.numSteps = numSteps < 0 ? -1 : numSteps;
}
public double getStepsNeededForEstimate()
{
return this.stepsNeededForEstimate;
}
public void setStepsNeededForEstimate(int stepsNeededForEstimate)
{
this.stepsNeededForEstimate = stepsNeededForEstimate < 1 ? 1 : stepsNeededForEstimate;
}
public long getStartTime()
{
return this.startTime;
}
public void setStartTime(long timeMillis)
{
this.startTime = timeMillis;
this.nextUpdateTime = this.startTime + this.updateFrequency;
}
public long getUpdateFrequency()
{
return this.updateFrequency;
}
public void setUpdateFrequency(long updateFrequencyMillis)
{
this.updateFrequency = updateFrequencyMillis < 0 ? 0 : updateFrequencyMillis;
}
public long getEstimatedTimeRemaining()
{
if (this.step >= 0
&& this.step >= this.stepsNeededForEstimate
&& this.numSteps >= 0
&& this.startTime >= 0)
{
long time = System.currentTimeMillis();
if (this.nextUpdateTime < time)
{
this.nextUpdateTime = time + this.updateFrequency;
double elapsed = time - this.startTime;
double pctComplete = this.step / (double) (this.numSteps - 1);
this.etr = (long) (elapsed / pctComplete - elapsed);
}
}
else
{
this.etr = -1;
}
return this.etr < 0 ? -1 : this.etr;
}
}