package org.droidplanner.android.utils.unit.providers.length; import org.beyene.sius.operation.Operation; import org.beyene.sius.unit.UnitIdentifier; import org.beyene.sius.unit.impl.FactoryLength; import org.beyene.sius.unit.length.LengthUnit; import org.beyene.sius.unit.length.Meter; /** * Created by Fredia Huya-Kouadio on 1/20/15. */ public abstract class LengthUnitProvider { public Meter boxBaseValue(double valueInMeters) { return FactoryLength.meter(valueInMeters); } public LengthUnit boxBaseValueToTarget(double valueInMeters) { Meter base = boxBaseValue(valueInMeters); return fromBaseToTarget(base); } public abstract LengthUnit fromBaseToTarget(Meter base); public Meter fromTargetToBase(LengthUnit target) { if(target instanceof Meter) return (Meter) target; return Operation.convert(target, UnitIdentifier.METER); } public Meter fromTargetToBase(double valueInTargetUnits){ return fromTargetToBase(boxTargetValue(valueInTargetUnits)); } public abstract LengthUnit boxTargetValue(double valueInTargetUnits); }