package org.fluxtream.core.utils; import java.util.TimeZone; /** * User: candide * Date: 21/05/13 * Time: 11:25 */ public class TimespanSegment<T> implements Comparable<TimespanSegment>{ private static final int SIMULTANEOUS = 0; private static final int AFTER = 1; private static final int BEFORE = -1; long start; long end; T value; public TimespanSegment(final String start, final String end) { this.start = javax.xml.bind.DatatypeConverter.parseDateTime(start).getTimeInMillis(); this.end = javax.xml.bind.DatatypeConverter.parseDateTime(end).getTimeInMillis(); } public TimespanSegment(final String start, final String end, T value) { this.start = javax.xml.bind.DatatypeConverter.parseDateTime(start).getTimeInMillis(); this.end = javax.xml.bind.DatatypeConverter.parseDateTime(end).getTimeInMillis(); this.value = value; } public TimespanSegment(final long start, final long end) { this.start = start; this.end = end; } public TimespanSegment(final long start, final long end, T value) { this.start = start; this.end = end; this.value = value; } public long getStart() { return start; } public long getEnd() { return end; } public T getValue() { return value; } public long duration() { return end-start; } public boolean isTimeInSpan(long ts) { return (ts>=start && ts<end); } @Override public int compareTo(final TimespanSegment o) { final long startTimeDifference = this.start - o.start; if(startTimeDifference>0) return AFTER; else if (startTimeDifference<0) return BEFORE; else return SIMULTANEOUS; } public int compareEnd(final TimespanSegment o) { final long timeDifference = this.end - o.start; if(timeDifference>0) return AFTER; else if (timeDifference<0) return BEFORE; else return SIMULTANEOUS; } public static void main(final String[] args) { TimeZone london = TimeZone.getTimeZone("Europe/London"); TimeZone dublin = TimeZone.getTimeZone("Europe/Dublin"); System.out.println(london.getRawOffset()==dublin.getRawOffset()); } public void setStart(final long start) { this.start = start; } }