All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.org.retep.util.collections.stats.Statistic Maven / Gradle / Ivy

The newest version!
/*
 * 

Copyright (c) 1998-2010, Peter T Mount
* All rights reserved.

* *

Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met:

* *
    *
  • Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer.
  • * *
  • Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution.
  • * *
  • Neither the name of the retep.org.uk nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission.
  • * *
* *

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/ package uk.org.retep.util.collections.stats; import uk.org.retep.util.cluster.ClusteredTime; /** * A Statistic stored in a {@link StatisticCollection} * * @param The type of value in this Statistic * @author peter * @see StatisticCollection * @since 9.6 */ public class Statistic implements Comparable> { private final long timestamp; private final T value; /** * Create a Statistic with the specified value. * *

* The Statistic will be set to the current time supplied by * {@link ClusteredTime#currentClusterTimeMillis()} *

* * @param value the value for this instance */ public Statistic( final T value ) { this( ClusteredTime.currentClusterTimeMillis(), value ); } /** * Create a Statistic with the specified timestamp and value * @param timestamp in milliseconds * @param value the value for this instance */ public Statistic( final long timestamp, final T value ) { this.timestamp = timestamp; this.value = value; } /** * Returns the timestamp for this instance * @return timestamp in milliseconds */ public long getTimestamp() { return timestamp; } /** * Returns the value for this instance * @return value */ public T getValue() { return value; } /** * {@inheritDoc} */ @Override public boolean equals( final Object obj ) { if( obj == null ) { return false; } if( getClass() != obj.getClass() ) { return false; } @SuppressWarnings( "unchecked" ) final Statistic other = (Statistic) obj; if( this.timestamp != other.timestamp ) { return false; } if( this.value != other.value && (this.value == null || !this.value.equals( other.value )) ) { return false; } return true; } /** * {@inheritDoc} */ @Override public int hashCode() { int hash = 7; hash = 67 * hash + (int) (this.timestamp ^ (this.timestamp >>> 32)); hash = 67 * hash + (this.value != null ? this.value.hashCode() : 0); return hash; } /** * {@inheritDoc} */ @Override public int compareTo( final Statistic b ) { // Algorithm is the same used by java.lang.Long final long bTimestamp = b.timestamp; return (timestamp < bTimestamp ? -1 : (timestamp == bTimestamp ? 0 : 1)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy