Skip to content

Commit

Permalink
En cours
Browse files Browse the repository at this point in the history
  • Loading branch information
pkernevez committed Jul 13, 2023
1 parent 2bcc223 commit c564402
Show file tree
Hide file tree
Showing 24 changed files with 155 additions and 125 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package ch.kleis.lcaplugin.imports.ecospold

import ch.kleis.lcaplugin.imports.ModelWriter
import ch.kleis.lcaplugin.imports.ecospold.lcia.EcospoldImporter.Companion.unitToStr
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.model.IntermediateExchange
import ch.kleis.lcaplugin.imports.ecospold.model.Uncertainty
import ch.kleis.lcaplugin.imports.model.ExchangeBlock
import ch.kleis.lcaplugin.imports.model.ImportedProcess
import ch.kleis.lcaplugin.imports.model.ImportedProductExchange
import ch.kleis.lcaplugin.imports.simapro.sanitizeSymbol
import ch.kleis.lcaplugin.imports.util.ImportException

open class EcoSpold2ProcessMapper(val process: ActivityDataset) {
val pUid = uid(process)
val result = ImportedProcess(pUid)

companion object {
fun uid(data: ActivityDataset): String {
return datasetUid(data.description.activity.name, data.description.geography?.shortName ?: "")
}

private fun toStr(txt: List<String>): CharSequence {
return txt.joinToString("\n")
}

private fun datasetUid(activityName: String, geo: String): String {
return ModelWriter.sanitizeAndCompact(activityName + "_" + geo)
}
}

fun map(): ImportedProcess {

mapMetas()
mapProducts()
mapInputs()
mapLandUse()
mapResources()
mapEmission()

return result
}

open fun mapProducts() {
val geo = if (process.description.geography?.shortName == "GLO") ""
else process.description.geography?.shortName ?: ""
val products = process.flowData.intermediateExchanges.map { mapProduct(it, geo) }.toMutableList()
result.productBlocks = mutableListOf(ExchangeBlock("Products", products))
}

open fun mapEmission() {}
open fun mapInputs() {}
open fun mapLandUse() {}
open fun mapResources() {}


open fun mapMetas() {
val metas = result.meta
process.description.let { description ->
description.activity.let { activity ->
activity.id?.let { metas["id"] = ModelWriter.compactText(it) }
activity.name.let { metas["name"] = ModelWriter.compactText(it) }
activity.type.let { metas["type"] = it }
activity.generalComment?.let {
metas["description"] = ModelWriter.compactAndPad(toStr(it), 12)
}
activity.energyValues?.let { metas["energyValues"] = it }
activity.includedActivitiesStart?.let {
metas["includedActivitiesStart"] = ModelWriter.compactText(it)
}
activity.includedActivitiesEnd?.let { metas["includedActivitiesEnd"] = ModelWriter.compactText(it) }
}
description.classifications.forEach { metas[it.system] = ModelWriter.compactText(it.value) }
description.geography?.shortName?.let { metas["geography-shortname"] = ModelWriter.compactText(it) }
description.geography?.comment?.let { metas["geography-comment"] = ModelWriter.compactText(toStr(it)) }
}
}

private fun mapProduct(e: IntermediateExchange, geo: String): ImportedProductExchange {
val initComments = ArrayList<String>()
e.name?.let { initComments.add(it) }
e.classifications.forEach { initComments.add("${it.system} = ${it.value}") }
e.uncertainty?.let { uncertaintyToStr(initComments, it) }
e.synonyms.forEachIndexed { i, it -> initComments.add("synonym_$i = $it") }
val amount = e.amount.toString()
val unit = sanitizeSymbol(unitToStr(e.unit))

val uid = ModelWriter.sanitizeAndCompact("${e.name}_$geo")
if (e.outputGroup != 0) {
throw ImportException("Invalid outputGroup for product, expected 0, found ${e.outputGroup}")
}
e.properties.forEach { initComments.add("${it.name} ${it.amount} ${it.unit} isCalculatedAmount=${it.isCalculatedAmount ?: ""} isDefiningValue=${it.isDefiningValue ?: ""}") }
return ImportedProductExchange(initComments, amount, unit, uid, 100.0)
}


private fun uncertaintyToStr(comments: ArrayList<String>, it: Uncertainty) {
it.logNormal?.let { comments.add("// uncertainty: logNormal mean=${it.meanValue}, variance=${it.variance}, mu=${it.mu}") }
it.pedigreeMatrix?.let { comments.add("// uncertainty: pedigreeMatrix completeness=${it.completeness}, reliability=${it.reliability}, geoCor=${it.geographicalCorrelation}, tempCor=${it.temporalCorrelation}, techCor=${it.furtherTechnologyCorrelation}, ") }
it.normal?.let { comments.add("// uncertainty: normal mean=${it.meanValue}, variance=${it.variance}, varianceWithPedigreeUncertainty=${it.varianceWithPedigreeUncertainty}, ") }
it.uniform?.let { comments.add("// uncertainty: uniform minValue=${it.minValue}, maxValue=${it.maxValue}") }
it.triangular?.let { comments.add("// uncertainty: triangular minValue=${it.minValue}, maxValue=${it.maxValue}, mostLikelyValue=${it.mostLikelyValue}, ") }
it.comment?.let { comments.add("// uncertainty: comment") }
it.comment?.let { comments.addAll(ModelWriter.asComment(it)) }
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.kleis.lcaplugin.imports.ecospold.lci

import ch.kleis.lcaplugin.imports.ecospold.EcoSpold2ProcessMapper
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset

class LciProcessMapper LciaProcessMapper(process: ActivityDataset) : EcoSpold2ProcessMapper(process) {
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ecospold.lcia.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.EcoSpold2ProcessMapper
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.model.ImportedImpact
import ch.kleis.lcaplugin.imports.model.ImportedSubstance

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ModelWriter
import ch.kleis.lcaplugin.imports.ecospold.lcia.EcospoldImporter.ProcessDictRecord
import ch.kleis.lcaplugin.imports.ecospold.lcia.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.shared.serializer.ProcessSerializer
import ch.kleis.lcaplugin.imports.shared.serializer.SubstanceSerializer
import java.io.File
Expand All @@ -19,7 +19,7 @@ class Ecospold2ProcessRenderer {
val category = category(data)

val subFolder = if (category == null) "" else "${category}${File.separatorChar}"
val process = EcoSpold2ProcessMapper.map(data)
val process = LciaProcessMapper(data).map()
process.comments.add(processComment)
val strProcess = ProcessSerializer.serialize(process)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import ch.kleis.lcaplugin.ide.imports.ecospold.EcospoldImportSettings
import ch.kleis.lcaplugin.imports.Imported
import ch.kleis.lcaplugin.imports.Importer
import ch.kleis.lcaplugin.imports.ModelWriter
import ch.kleis.lcaplugin.imports.ecospold.lcia.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.lcia.model.Parser
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.model.Parser
import ch.kleis.lcaplugin.imports.model.ImportedUnit
import ch.kleis.lcaplugin.imports.shared.serializer.UnitRenderer
import ch.kleis.lcaplugin.imports.util.AsyncTaskController
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ecospold.EcoSpold2ProcessMapper
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.model.ExchangeBlock
import ch.kleis.lcaplugin.imports.model.ImportedBioExchange

class LciaProcessMapper(process: ActivityDataset) : EcoSpold2ProcessMapper(process) {
override fun mapEmission() {
val bio = ImportedBioExchange(listOf(), "1.0", "u", pUid, "")
result.emissionBlocks = mutableListOf(ExchangeBlock("Virtual Substance for Impact Factors", mutableListOf(bio)))
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class Activity(
val id: String? = null,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class ActivityDataset private constructor(
val description: ActivityDescription,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class ActivityDescription private constructor(
val activity: Activity,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

data class Classification(
var system: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class EcospoldRoot(
val activityDataset: ActivityDataset
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model


data class FlowData(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class Geography(
val shortName: String? = null,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

class ImpactIndicator(
val methodName: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model


data class Property(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

import org.jdom2.Element
import org.jdom2.JDOMFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

data class Uncertainty(
val logNormal: LogNormal? = null,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model
package ch.kleis.lcaplugin.imports.ecospold.model

data class UnitConversion(
val factor: Double,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package ch.kleis.lcaplugin.imports

import ch.kleis.lcaplugin.imports.ecospold.lcia.model.Classification
import ch.kleis.lcaplugin.imports.ecospold.model.Classification
import io.mockk.unmockkAll
import org.junit.After
import org.junit.Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ecospold.lcia.model.*
import ch.kleis.lcaplugin.imports.ecospold.model.*

class EcoSpold2Fixture {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ecospold.lcia.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.EcoSpold2ProcessMapper
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.util.ImportException
import com.intellij.testFramework.UsefulTestCase.assertThrows
import org.junit.Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia

import ch.kleis.lcaplugin.imports.ModelWriter
import ch.kleis.lcaplugin.imports.ecospold.lcia.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.lcia.model.Classification
import ch.kleis.lcaplugin.imports.ecospold.EcoSpold2ProcessMapper
import ch.kleis.lcaplugin.imports.ecospold.model.ActivityDataset
import ch.kleis.lcaplugin.imports.ecospold.model.Classification
import ch.kleis.lcaplugin.imports.model.ImportedProcess
import ch.kleis.lcaplugin.imports.model.ImportedSubstance
import ch.kleis.lcaplugin.imports.shared.serializer.ProcessSerializer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ch.kleis.lcaplugin.imports.ecospold.lcia.model

import ch.kleis.lcaplugin.imports.ecospold.model.*
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
Expand Down

0 comments on commit c564402

Please sign in to comment.