package org.jbehave.core.model;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class StoryDuration {
private long startedAtMillis;
private long durationInMillis;
private final long timeoutInSecs;
public StoryDuration(long timeoutInSecs) {
this(System.currentTimeMillis(), timeoutInSecs);
}
public StoryDuration(long startedAtMillis, long timeoutInSecs) {
this.startedAtMillis = startedAtMillis;
this.timeoutInSecs = timeoutInSecs;
}
public long getDurationInSecs() {
return durationInMillis / 1000;
}
public long getTimeoutInSecs() {
return timeoutInSecs;
}
public StoryDuration setDurationInSecs(long durationInSecs) {
this.durationInMillis = durationInSecs * 1000;
return this;
}
public StoryDuration update() {
this.durationInMillis = elapsedTimeInMillis();
return this;
}
private long elapsedTimeInMillis() {
return System.currentTimeMillis() - startedAtMillis;
}
public boolean timedOut() {
return timeoutInSecs != 0 && getDurationInSecs() > timeoutInSecs;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE);
}
}