package com.nightscout.core.utils;
import com.nightscout.core.dexcom.Constants;
import com.nightscout.core.model.GlucoseUnit;
public class GlucoseReading {
protected int valueMgdl;
public GlucoseReading(float value, GlucoseUnit units) {
this.valueMgdl = (units == GlucoseUnit.MGDL) ?
Math.round(value) : Math.round(value * Constants.MMOL_L_TO_MG_DL);
}
protected GlucoseReading() {
this.valueMgdl = 0;
}
public float asMmol() {
return valueMgdl * Constants.MG_DL_TO_MMOL_L;
}
public String asMmolStr() {
return String.format("%.1f", asMmol());
}
public int asMgdl() {
return valueMgdl;
}
public String asMgdlStr() {
return String.valueOf(valueMgdl);
}
public float as(GlucoseUnit units) {
return (units == GlucoseUnit.MGDL) ? asMgdl() : asMmol();
}
public String asStr(GlucoseUnit units) {
return (units == GlucoseUnit.MGDL) ? asMgdlStr() : asMmolStr();
}
public GlucoseReading subtract(GlucoseReading reading) {
return new GlucoseReading(valueMgdl - reading.asMgdl(), GlucoseUnit.MGDL);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GlucoseReading that = (GlucoseReading) o;
return valueMgdl == that.valueMgdl;
}
@Override
public int hashCode() {
return valueMgdl;
}
}