com.venky.core.util.Bucket Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common Show documentation
Show all versions of common Show documentation
Commonly used programming tasks in java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.venky.core.util;
import java.io.Serializable;
import com.venky.core.checkpoint.Mergeable;
/**
*
* @author venky
*/
public class Bucket extends Number implements Cloneable, Serializable, Mergeable, Comparable {
/**
*
*/
private static final long serialVersionUID = 3777328906346580670L;
private double counter;
public Bucket(){
this(0.0);
}
public Bucket(double start){
this.counter = start;
}
public void increment(){
increment(1.0);
}
public void decrement(){
increment(-1.0);
}
public void decrement(double by){
increment(-1.0 * by);
}
public final void increment(double by){
synchronized (this){
counter += by;
}
}
public double value() {
return counter;
}
public int intValue(){
return (int)counter;
}
@Override
public String toString() {
return "value: " + counter;
}
@Override
public Bucket clone() {
Object clone;
try {
clone = super.clone();
} catch (CloneNotSupportedException ex) {
throw new RuntimeException(ex);
}
return (Bucket)clone;
}
public void merge(Bucket another) {
this.counter = another.counter;
}
@Override
public long longValue() {
return (long)this.counter;
}
@Override
public float floatValue() {
return (float)this.counter;
}
@Override
public double doubleValue() {
return counter;
}
@Override
public int compareTo(Bucket o) {
return Double.compare(value(), o.value());
}
@Override
public boolean equals(Object obj) {
return (obj instanceof Bucket)
&& (compareTo((Bucket)obj) == 0);
}
}