mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-01-14 15:53:53 +01:00
34 lines
1.1 KiB
Scala
34 lines
1.1 KiB
Scala
package controllers
|
|
|
|
class Projects (
|
|
val projectMap: Map[String, String],
|
|
private val teamLeaders: Map[TeamId, String],
|
|
val projectToTeams: Map[String, Set[TeamId]]
|
|
) {
|
|
val projectSet: Set[String] = projectMap.keySet
|
|
|
|
private val projectAndTeams = projectToTeams.toSeq.flatMap{case (project, teams) => teams.map(team => (project, team))}
|
|
|
|
private val teamsToProjects = projectAndTeams.groupBy(_._2).mapValues(_.map(_._1).toSet).map(identity)
|
|
|
|
private val teamsById: Map[String, Team] = for{
|
|
(team, projectNames) <- teamsToProjects
|
|
} yield team.id -> Team(
|
|
id = team.id,
|
|
name = team.name,
|
|
leader = teamLeaders(team),
|
|
projectNames = projectNames
|
|
)
|
|
|
|
def teamById(id: String): Team = teamsById(id)
|
|
def getTeamById(id: String): Option[Team] = teamsById.get(id)
|
|
|
|
def teamSet: Set[Team] = teamsById.values.toSet
|
|
|
|
def teamsByProjectId(projectId: String): Set[TeamId] = projectToTeams.filter{case (projectSpecification, _) =>
|
|
val projectName = projectMap(projectId)
|
|
(projectSpecification == projectName) || (projectSpecification startsWith s"$projectName:")
|
|
}.values.flatten.toSet
|
|
|
|
}
|