package org.radargun.stats;
import org.radargun.utils.TimeService;
/**
* Base class holding just the begin-end timestamps.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
public abstract class IntervalStatistics implements Statistics {
private long beginTime = Long.MAX_VALUE;
private long endTime = Long.MIN_VALUE;
protected IntervalStatistics() {
}
protected IntervalStatistics(Statistics other) {
beginTime = other.getBegin();
endTime = other.getEnd();
}
@Override
public void begin() {
beginTime = TimeService.currentTimeMillis();
}
@Override
public void end() {
endTime = TimeService.currentTimeMillis();
}
@Override
public long getBegin() {
return beginTime;
}
@Override
public long getEnd() {
return endTime;
}
public void setBegin(long beginTime) {
this.beginTime = beginTime;
}
public void setEnd(long endTime) {
this.endTime = endTime;
}
@Override
public void merge(Statistics otherStats) {
beginTime = Math.min(otherStats.getBegin(), beginTime);
endTime = Math.max(otherStats.getEnd(), endTime);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName()).append(" {beginTime=");
if (beginTime == Long.MAX_VALUE) sb.append("<none>");
else sb.append(beginTime);
sb.append(", endTime=");
if (endTime == Long.MIN_VALUE) sb.append("<none>");
else sb.append(endTime);
return sb.append("}").toString();
}
}