package edu.hawaii.jmotif.timeseries; /** * The timeinterval implementation. Timeinterval is a strech of time with an asiigned value. * * @author Pavel Senin * */ public final class Timeinterval implements Comparable<Timeinterval> { private double value; private long start; private long end; /** * Constructor. * * @param value The interval value. * @param start The interval start timestamp. * @param end The interval end timestamp. */ public Timeinterval(double value, long start, long end) { this.value = value; this.start = start; this.end = end; } /** * Get the value. * * @return the value. */ public double getValue() { return this.value; } /** * Set the value. * * @param newValue The value to set. */ public void setValue(double newValue) { this.value = newValue; } /** * Get the start time stamp. * * @return the timestamp. */ public long getStart() { return this.start; } /** * Set the start time stamp. * * @param newStart The new tstamp to set. */ public void setStart(long newStart) { this.start = newStart; } /** * Get the end time stamp. * * @return the end timestamp. */ public long getEnd() { return this.end; } /** * Set the end time stamp. * * @param newEnd The new end tstamp to set. */ public void setEnd(long newEnd) { this.end = newEnd; } /** * {@inheritDoc} */ public int hashCode() { int hash = 7; int num0 = 0; int num1 = 0; if (this.start > Integer.MAX_VALUE) { num0 = (int) (this.start ^ (this.start >>> 32)); } else { num0 = (int) this.start; } if (this.end > Integer.MAX_VALUE) { num0 = (int) (this.end ^ (this.end >>> 32)); } else { num0 = (int) this.end; } long bits = Double.doubleToLongBits(this.value); int num2 = (int) (bits ^ (bits >>> 32)); hash = num0 + hash * (num1 + num2); return hash; } /** * {@inheritDoc} */ public boolean equals(Object o) { if (o instanceof Timeinterval) { Timeinterval ti = (Timeinterval) o; if ((this.value == ti.getValue()) && (this.start == ti.getStart()) && (this.end == ti.getEnd())) { return true; } } return false; } /** * Compares the TimeInterval object with other TimeInterval using START timestamps first: i.e. by * the timestamp values, if they are equal, the END values or VALUE used. * * @param o the TimeInterval to compare with. * * @return the standard compareTo result. */ public int compareTo(Timeinterval o) { if ((this.value == o.getValue()) && (this.start == o.getStart()) && (this.end == o.getEnd())) { return 0; } else if (this.start > o.start) { return 1; } else if (this.start < o.start) { return -1; } else if (this.end > o.end) { return 1; } else if (this.end < o.end) { return -1; } else if (this.value > o.value) { return 1; } return -1; } }