diff --git a/README.md b/README.md index 5ec01dc..9849cd1 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,4 @@ Please read [SUPPORT](SUPPORT.md) for how to connect and get into contact with t [github:create-from-template]: https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-repository-from-a-template [kotlin]: https://kotlinlang.org/ [gradle]: https://gradle.org/ + diff --git a/measure/build.gradle.kts b/measure/build.gradle.kts index e09062f..e1c7bd4 100644 --- a/measure/build.gradle.kts +++ b/measure/build.gradle.kts @@ -10,7 +10,7 @@ plugins { `java-library` // Apply dokka plugin to allow extraction of ducumentation from KDoc comments - id("org.jetbrains.dokka") version "1.4.20" + id("org.jetbrains.dokka") version "1.9.20" // Make sure we can publish to maven `maven-publish` diff --git a/measure/src/main/kotlin/com/alliander/open/measure/Measure.kt b/measure/src/main/kotlin/com/alliander/open/measure/Measure.kt index c25a09e..b955861 100644 --- a/measure/src/main/kotlin/com/alliander/open/measure/Measure.kt +++ b/measure/src/main/kotlin/com/alliander/open/measure/Measure.kt @@ -117,8 +117,16 @@ data class Measure(val amount: BigDecimal, val units: U) : Comparable val absoluteFactor = (factor `in` base).abs() return dividend.roundToMultiple(absoluteFactor, roundingMode) * base } - } private fun BigDecimal.roundToMultiple(factor: BigDecimal, roundingMode: RoundingMode): BigDecimal = - this.divide(factor, 0, roundingMode) * factor + this.divide(factor, 0, roundingMode) * factor + +operator fun BigDecimal.times(m: Measure): Measure = + Measure(amount = m.amount.times(this), units = m.units) + +operator fun Int.times(m: Measure): Measure = + BigDecimal.valueOf(this.toLong()) * m + +operator fun Long.times(m: Measure): Measure = + BigDecimal.valueOf(this) * m diff --git a/measure/src/main/kotlin/com/alliander/open/measure/SpecificUnits.kt b/measure/src/main/kotlin/com/alliander/open/measure/SpecificUnits.kt index 421b942..7435504 100644 --- a/measure/src/main/kotlin/com/alliander/open/measure/SpecificUnits.kt +++ b/measure/src/main/kotlin/com/alliander/open/measure/SpecificUnits.kt @@ -4,16 +4,60 @@ package com.alliander.open.measure +import com.alliander.open.measure.Current.Companion.ampere import com.alliander.open.measure.Energy.Companion.joule import com.alliander.open.measure.Power.Companion.watt import com.alliander.open.measure.Time.Companion.seconds +import com.alliander.open.measure.Voltage.Companion.volt import java.math.BigDecimal +@JvmName("powerTimesTime") operator fun Measure.times(duration: Measure