From a2a4ee01c7509c8cddc270f99013ce238c071666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0est=C3=A1k=20V=C3=ADt?= Date: Wed, 21 Mar 2018 10:45:11 +0100 Subject: [PATCH] Report proper error messages when filter is wrong project or wrong team --- app/controllers/DependencyCheckReportsParser.scala | 12 ++++++++---- app/controllers/Projects.scala | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/controllers/DependencyCheckReportsParser.scala b/app/controllers/DependencyCheckReportsParser.scala index 7d6d03d..cbfe92a 100644 --- a/app/controllers/DependencyCheckReportsParser.scala +++ b/app/controllers/DependencyCheckReportsParser.scala @@ -139,10 +139,14 @@ object DependencyCheckReportsParser{ private val ProjectSelectorPattern = """^project:(.*)$""".r private val TeamSelectorPattern = """^team:(.*)$""".r - private def parseFilter(filter: String): Filter = filter match { - case ProjectSelectorPattern(project) => ProjectFilter(projectsReportInfo.reportIdToReportInfo(project)) - case TeamSelectorPattern(team) => TeamFilter(projects.teamById(team)) - case other => BadFilter(other) + private def parseFilter(filter: String): Filter = { + def mapToFilter[T](dataOption: Option[T], filterCreator: T => Filter): Filter = + dataOption.fold[Filter](BadFilter(filter))(filterCreator) + filter match { + case ProjectSelectorPattern(project) => mapToFilter(projectsReportInfo.reportIdToReportInfo.get(project), ProjectFilter) + case TeamSelectorPattern(team) => mapToFilter(projects.getTeamById(team), TeamFilter) + case other => BadFilter(other) + } } def selection(selectorOption: Option[String]): Option[ResultWithSelection] = { diff --git a/app/controllers/Projects.scala b/app/controllers/Projects.scala index 501aab4..beeebc7 100644 --- a/app/controllers/Projects.scala +++ b/app/controllers/Projects.scala @@ -21,6 +21,7 @@ class Projects ( ) def teamById(id: String): Team = teamsById(id) + def getTeamById(id: String): Option[Team] = teamsById.get(id) def teamSet: Set[Team] = teamsById.values.toSet