Skip to content

Commit

Permalink
Simplify use-case logic
Browse files Browse the repository at this point in the history
  • Loading branch information
louptheron committed Nov 15, 2023
1 parent 3edd738 commit d9df20e
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,17 @@ data class LegacyControlUnitEntity(
val name: String,
val resources: List<LegacyControlUnitResourceEntity>,
val contact: String? = null,
)
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as LegacyControlUnitEntity

return id == other.id
}

override fun hashCode(): Int {
return id
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,17 @@ data class LegacyControlUnitResourceEntity(
val id: Int,
val controlUnitId: Int,
val name: String,
)
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as LegacyControlUnitResourceEntity

return id == other.id
}

override fun hashCode(): Int {
return id
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
package fr.gouv.cacem.monitorenv.domain.use_cases.missions

import fr.gouv.cacem.monitorenv.config.UseCase
import fr.gouv.cacem.monitorenv.domain.entities.controlUnit.LegacyControlUnitEntity
import fr.gouv.cacem.monitorenv.domain.entities.mission.MissionSourceEnum
import fr.gouv.cacem.monitorenv.domain.use_cases.missions.dtos.ControlUnitToMissionSources
import org.slf4j.LoggerFactory
import java.time.ZonedDateTime
Expand All @@ -23,31 +25,23 @@ class GetEngagedControlUnits(private val getFullMissions: GetFullMissions) {
seaFronts = null,
)

val controlUnitsIdsAndMissionSources = openedMissions
.flatMap {
// We flatten (and duplicate) the control unit key
it.mission.controlUnits.map { controlUnit ->
logger.info("DBG ${controlUnit.id} - ${controlUnit.name}")
Pair(controlUnit, it.mission.missionSource)
}
val controlUnitToMissionSources = openedMissions.flatMap { mission ->
mission.mission.controlUnits.map { controlUnit ->
Pair(controlUnit, mission.mission.missionSource)
}

val groupedControlUnitsIdsAndMissionSources = controlUnitsIdsAndMissionSources
// We group by control unit id, to de-duplicate
}
.groupBy { it.first.id }
.map { entry ->
Pair(entry.key, entry.value.map { it.second }.distinct())
}
.map { entry: Map.Entry<Int, List<Pair<LegacyControlUnitEntity, MissionSourceEnum>>> ->
// As we grouped by controlUnit, all control units in Pair<LegacyControlUnitEntity, MissionSourceEnum> are equals
val controlUnit = entry.value.first().first

val groupedControlUnitsAndMissionSources = groupedControlUnitsIdsAndMissionSources.map { entry ->
val controlUnit = controlUnitsIdsAndMissionSources
.first { controlUnit -> controlUnit.first.id == entry.first }.first
val missionSources = entry.value.map { it.second }.distinct()

Pair(controlUnit, entry.second)
}
Pair(controlUnit, missionSources)
}

logger.info("Found ${groupedControlUnitsAndMissionSources.size} engaged control unit(s).")
logger.info("Found ${controlUnitToMissionSources.size} engaged control unit(s).")

return groupedControlUnitsAndMissionSources
return controlUnitToMissionSources
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class GetEngagedControlUnitsUTests {
.willReturn(
listOf(
firstMission,
secondMission
secondMission,
),
)

Expand Down

0 comments on commit d9df20e

Please sign in to comment.