package spimedb.util.bag;
import org.jetbrains.annotations.Nullable;
/**
* Created by me on 1/15/17.
*/
public class Budget<X> /*extends RawPLink<X>*/ {
public final X id;
public float pri;
public Budget(X x) {
this.id = x;
}
public Budget(X x, float pri) {
this(x);
this.pri = pri;
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj instanceof Budget)
return id.equals(((Budget)obj).id);
else
return id.equals(obj);
}
@Nullable
public Budget<X> clone() {
float p = pri;
if (p == p)
return new Budget<X>(id, p);
else
return null;
}
public void pri(float newPri) {
//System.out.println(id + " " + pri + " -> " + newPri);
this.pri = newPri;
}
public void pri(Budget vv) {
pri(vv.pri);
}
public void priAdd(float toAdd) {
pri(pri + toAdd);
}
public void delete() {
this.pri = Float.NaN;
}
public boolean isDeleted() {
final float p = pri;
return p != p;
}
public void priMult(float factor) {
pri(this.pri * factor);
}
public float priSafe(float ifDeleted) {
float p = pri;
if (p == p) {
return p;
} else {
return ifDeleted;
}
}
@Override
public String toString() {
return id + "=" + pri;
}
}