src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt

changeset 248
90dc13c78b5d
parent 245
97b4d0605318
child 257
c1be672af7ff
--- a/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt	Wed Dec 15 19:56:05 2021 +0100
+++ b/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt	Sat Jun 04 18:02:25 2022 +0200
@@ -28,7 +28,6 @@
 import de.uapcore.lightpit.entities.*
 import de.uapcore.lightpit.types.IssueHistoryType
 import de.uapcore.lightpit.types.WebColor
-import de.uapcore.lightpit.util.*
 import de.uapcore.lightpit.viewmodel.ComponentSummary
 import de.uapcore.lightpit.viewmodel.IssueSummary
 import de.uapcore.lightpit.viewmodel.VersionSummary
@@ -509,7 +508,7 @@
         return i
     }
 
-    override fun listIssues(filter: IssueFilter): List<Issue> =
+    override fun listIssues(project: Project, version: Version?, component: Component?): List<Issue> =
         withStatement(
             """$issueQuery where
                 (not ? or i.project = ?) and 
@@ -517,41 +516,21 @@
                 (not ? or component = ?) and (not ? or component is null)
             """.trimIndent()
         ) {
-            fun <T : Entity> applyFilter(filter: Filter<T>, fflag: Int, nflag: Int, idcol: Int) {
-                when (filter) {
-                    is AllFilter -> {
-                        setBoolean(fflag, false)
-                        setBoolean(nflag, false)
-                        setInt(idcol, 0)
-                    }
-                    is NoneFilter -> {
-                        setBoolean(fflag, false)
-                        setBoolean(nflag, true)
-                        setInt(idcol, 0)
-                    }
-                    is SpecificFilter -> {
-                        setBoolean(fflag, true)
-                        setBoolean(nflag, false)
-                        setInt(idcol, filter.obj.id)
-                    }
-                    else -> {
-                        TODO("Implement range filter.")
-                    }
+            fun <T : Entity> applyFilter(search: T?, fflag: Int, nflag: Int, idcol: Int) {
+                if (search == null) {
+                    setBoolean(fflag, false)
+                    setBoolean(nflag, false)
+                    setInt(idcol, 0)
+                } else {
+                    setBoolean(fflag, true)
+                    setBoolean(nflag, false)
+                    setInt(idcol, search.id)
                 }
             }
-            when (filter.project) {
-                is AllFilter -> {
-                    setBoolean(1, false)
-                    setInt(2, 0)
-                }
-                is SpecificFilter -> {
-                    setBoolean(1, true)
-                    setInt(2, filter.project.obj.id)
-                }
-                else -> throw IllegalArgumentException()
-            }
-            applyFilter(filter.version, 3, 5, 4)
-            applyFilter(filter.component, 6, 8, 7)
+            setBoolean(1, true)
+            setInt(2, project.id)
+            applyFilter(version, 3, 5, 4)
+            applyFilter(component, 6, 8, 7)
 
             queryAll { it.extractIssue() }
         }

mercurial