001package org.javasimon.callback.timeline; 002 003import org.javasimon.utils.SimonUtils; 004 005/** 006 * Time range and associated data. 007 * 008 * @author gerald 009 */ 010public class TimeRange { 011 /** 012 * Beginning of the time range 013 */ 014 private final long startTimestamp; 015 016 /** 017 * Ending of the time range 018 */ 019 private final long endTimestamp; 020 021 /** 022 * Timestamp of last change 023 */ 024 protected long lastTimestamp; 025 026 /** 027 * Main constructor. 028 * 029 * @param startTimestamp Beginning of the time range 030 * @param endTimestamp Ending of the time range 031 */ 032 protected TimeRange(long startTimestamp, long endTimestamp) { 033 this.startTimestamp = startTimestamp; 034 this.endTimestamp = endTimestamp; 035 } 036 037 public long getStartTimestamp() { 038 return startTimestamp; 039 } 040 041 public long getEndTimestamp() { 042 return endTimestamp; 043 } 044 045 /** 046 * Indicates whether this time range contains given timestamp. 047 * 048 * @param timestampInMs Timestamp express in milliseconds 049 */ 050 public boolean containsTimestamp(long timestampInMs) { 051 return timestampInMs >= startTimestamp && timestampInMs <= endTimestamp; 052 } 053 054 protected StringBuilder toStringBuilder(StringBuilder stringBuilder) { 055 return stringBuilder.append(getClass().getSimpleName()) 056 .append(" start=").append(SimonUtils.presentTimestamp(startTimestamp)) 057 .append(" end=").append(SimonUtils.presentTimestamp(endTimestamp)); 058 } 059 060 @Override 061 public String toString() { 062 return toStringBuilder(new StringBuilder()).toString(); 063 } 064 065}