All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.spun.util.timers.LapTimeStatistics Maven / Gradle / Ivy

There is a newer version: 24.9.0
Show newest version
package com.spun.util.timers;

/**
 * A Utility for timing things. this is multi-thread safe.
 **/
public class LapTimeStatistics
{
  private String      label     = null;
  private EventTime   totalTime = null;
  private EventTime[] times     = null;
  public LapTimeStatistics(LapTimer lapTimer)
  {
    loadFirstLapTimer(lapTimer);
  }
  public LapTimeStatistics(String label)
  {
    this.label = label;
  }
  public int getCount()
  {
    return (totalTime == null) ? 0 : totalTime.getCount();
  }
  private void loadFirstLapTimer(LapTimer lapTimer)
  {
    if (label == null)
    {
      lapTimer.getLabel();
    }
    totalTime = new EventTime("Total Time", 0);
    totalTime.add(lapTimer.getTotalTime());
    LapTime[] lapTimes = lapTimer.getLapTimes();
    times = new EventTime[lapTimes.length];
    for (int i = 0; i < lapTimes.length; i++)
    {
      times[i] = new EventTime(lapTimes[i].getLabel(), 0);
      times[i].add(lapTimes[i].getLapTime());
    }
  }
  public EventTime getTotalTime()
  {
    return totalTime;
  }
  public String getLabel()
  {
    return label;
  }
  public synchronized void add(LapTimer lapTimer)
  {
    if (totalTime == null)
    {
      loadFirstLapTimer(lapTimer);
    }
    else
    {
      totalTime.add(lapTimer.getTotalTime());
      LapTime[] lapTimes = lapTimer.getLapTimes();
      if (lapTimes.length != times.length)
      { throw new Error("Tried to add a LapTimer with " + lapTimes.length + " laps. Must have " + times.length); }
      for (int i = 0; i < lapTimes.length; i++)
      {
        times[i].add(lapTimes[i].getLapTime());
      }
    }
  }
  public EventTime[] getLapTimes()
  {
    return this.times;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy