Skip to content

Commit

Permalink
Merge pull request #7 from kleis-technology/feature/cli-indicator-units
Browse files Browse the repository at this point in the history
cli: assess: explicit indicator unit
  • Loading branch information
pevab authored Jan 18, 2024
2 parents 27adf93 + 3c67327 commit e45afb4
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 3 deletions.
17 changes: 15 additions & 2 deletions cli/src/main/kotlin/ch/kleis/lcaac/cli/csv/CsvResultWriter.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ch.kleis.lcaac.cli.csv

import ch.kleis.lcaac.core.prelude.Prelude
import org.apache.commons.csv.CSVFormat
import org.apache.commons.csv.CSVPrinter

Expand All @@ -13,7 +14,13 @@ class CsvResultWriter {
fun header(first: CsvResult): String {
val header = first.request.columns()
.plus(listOf("product", "amount", "reference unit"))
.plus(first.impacts.toList().map { "${it.first.getShortName()} [${it.first.referenceUnit().symbol}]" })
.plus(first.impacts.toList()
.flatMap {
listOf(
it.first.getShortName(),
"${it.first.getShortName()}_unit",
)
})
val s = StringBuilder()
CSVPrinter(s, format).printRecord(header)
return s.toString()
Expand All @@ -22,7 +29,13 @@ class CsvResultWriter {
fun row(result: CsvResult): String {
val line = result.request.arguments()
.plus(listOf(result.output.getShortName(), "1.0", result.output.referenceUnit().symbol))
.plus(result.impacts.toList().map { it.second.amount.toString() })
.plus(result.impacts.toList()
.flatMap {
listOf(
it.second.amount.toString(),
Prelude.sanitize(it.second.unit.toString(), toLowerCase = false),
)
})
val s = StringBuilder()
CSVPrinter(s, format).printRecord(line)
return s.toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,42 @@ class CsvResultWriterTest {
val actual = writer.header(result)

// then
assertEquals("id,x,product,amount,reference unit,co2 [kg]\n", actual)
assertEquals("id,x,product,amount,reference unit,co2,co2_unit\n", actual)
}

@Test
fun row() {
// given
val request = CsvRequest(
"main",
emptyMap(),
header = mapOf("id" to 0, "x" to 1),
record = listOf("id-0", "0.5")
)
val kWh = UnitValue<BasicNumber>(UnitSymbol.of("kWh"), 1000.0, Dimension.of("energy"))
val kg = UnitValue<BasicNumber>(UnitSymbol.of("kg"), 1.0, Dimension.of("mass"))
val u = UnitValue<BasicNumber>(UnitSymbol.of("u"), 1.0, Dimension.None)
val output = ProductValue(
name = "electricity",
referenceUnit = kWh,
fromProcessRef = FromProcessRefValue(
"main",
arguments = mapOf(
"x" to QuantityValue(BasicNumber(0.5), u)
)
)
)
val impacts = mapOf(
IndicatorValue("co2", kg) as MatrixColumnIndex<BasicNumber>
to QuantityValue(BasicNumber(0.5), kg)
)
val result = CsvResult(request, output, impacts)
val writer = CsvResultWriter()

// when
val actual = writer.row(result)

// then
assertEquals("id-0,0.5,electricity,1.0,kWh,0.5,kg\n", actual)
}
}

0 comments on commit e45afb4

Please sign in to comment.