digitalsanctum
01/14/2019, 8:06 PMsnowe
01/14/2019, 10:49 PMsnowe
01/14/2019, 10:50 PMdata class CalculationContext(
val currencyUnit: CurrencyUnit,
val roundingMode: RoundingMode,
val ratioScale: Int
) {
companion object {
@JvmStatic fun builder() = CalculationContext.Builder()
@JvmField val USA_STANDARD_CONTEXT = CalculationContext(CurrencyUnit.USD, RoundingMode.HALF_UP, 3)
@JvmField val RATIO_CONTEXT =
CalculationContext(CurrencyUnit.USD, BigDecimalUtilities.ROUNDING_MODE, BigDecimalUtilities.RATIO_SCALE)
@JvmField val LTV_RATIO_CONTEXT = CalculationContext(CurrencyUnit.USD, RoundingMode.DOWN, 4)
}
class Builder {
private var currencyUnit: CurrencyUnit = CurrencyUnit.USD
private lateinit var roundingMode: RoundingMode
private var ratioScale: Int = 0
fun copyOf(v: CalculationContext) = apply {
currencyUnit = v.currencyUnit
roundingMode = v.roundingMode
ratioScale = v.ratioScale
}
fun currencyUnit(v: CurrencyUnit) = apply { currencyUnit = v }
fun roundingMode(v: RoundingMode) = apply { roundingMode = v }
fun ratioScale(v: Int) = apply { ratioScale = v }
fun build() = CalculationContext(currencyUnit, roundingMode, ratioScale)
}
}
digitalsanctum
01/14/2019, 10:56 PMsnowe
01/14/2019, 11:01 PM