Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.livetrace; import org.codehaus.jackson.annotate.JsonIgnore; import org.joda.time.DateTime; import org.joda.time.Period; import com.google.common.base.Preconditions; /** * Oct 11, 2010 */ public class Duration extends SimpleDuration { private DateTime startTime; private DateTime stopTime; public boolean hasStarted() { return startTime != null; } public DateTime getStartTime() { return startTime; } void setStartTime(DateTime time) { this.startTime = time; } public boolean hasEnded() { return stopTime != null; } public DateTime getStopTime() { return stopTime; } void setStopTime(DateTime stopTime) { Preconditions.checkNotNull(startTime); Preconditions.checkNotNull(stopTime); this.stopTime = stopTime; this.setDurationInMilliseconds(stopTime.getMillis() - startTime.getMillis()); } @Override @JsonIgnore public long getAsMilliseconds() { if (hasEnded()) { return super.getAsMilliseconds(); } else if (startTime != null) { return new DateTime().getMillis() - startTime.getMillis(); } else { return 0L; } } @Override public String getAsHRFormat() { if (hasEnded()) { return super.getAsHRFormat(); } else if (startTime != null) { return HOURS_MINUTES_MILLIS.print(new Period(startTime, new DateTime())); } else { return "0"; } } @Override public String toString() { StringBuffer s = new StringBuffer(); s.append("startTime: ").append(startTime).append("\n"); s.append("stopTime: ").append(stopTime).append("\n"); s.append("executionTimeInMilliseconds: ").append(getAsMilliseconds()).append("\n"); return s.toString(); } }