26 package de.uapcore.lightpit.dao |
26 package de.uapcore.lightpit.dao |
27 |
27 |
28 import de.uapcore.lightpit.entities.* |
28 import de.uapcore.lightpit.entities.* |
29 import de.uapcore.lightpit.types.IssueHistoryType |
29 import de.uapcore.lightpit.types.IssueHistoryType |
30 import de.uapcore.lightpit.types.WebColor |
30 import de.uapcore.lightpit.types.WebColor |
31 import de.uapcore.lightpit.util.* |
|
32 import de.uapcore.lightpit.viewmodel.ComponentSummary |
31 import de.uapcore.lightpit.viewmodel.ComponentSummary |
33 import de.uapcore.lightpit.viewmodel.IssueSummary |
32 import de.uapcore.lightpit.viewmodel.IssueSummary |
34 import de.uapcore.lightpit.viewmodel.VersionSummary |
33 import de.uapcore.lightpit.viewmodel.VersionSummary |
35 import org.intellij.lang.annotations.Language |
34 import org.intellij.lang.annotations.Language |
36 import java.sql.Connection |
35 import java.sql.Connection |
507 setIntOrNull(i++, resolved?.id) |
506 setIntOrNull(i++, resolved?.id) |
508 } |
507 } |
509 return i |
508 return i |
510 } |
509 } |
511 |
510 |
512 override fun listIssues(filter: IssueFilter): List<Issue> = |
511 override fun listIssues(project: Project, version: Version?, component: Component?): List<Issue> = |
513 withStatement( |
512 withStatement( |
514 """$issueQuery where |
513 """$issueQuery where |
515 (not ? or i.project = ?) and |
514 (not ? or i.project = ?) and |
516 (not ? or ? in (resolved, affected)) and (not ? or (resolved is null and affected is null)) and |
515 (not ? or ? in (resolved, affected)) and (not ? or (resolved is null and affected is null)) and |
517 (not ? or component = ?) and (not ? or component is null) |
516 (not ? or component = ?) and (not ? or component is null) |
518 """.trimIndent() |
517 """.trimIndent() |
519 ) { |
518 ) { |
520 fun <T : Entity> applyFilter(filter: Filter<T>, fflag: Int, nflag: Int, idcol: Int) { |
519 fun <T : Entity> applyFilter(search: T?, fflag: Int, nflag: Int, idcol: Int) { |
521 when (filter) { |
520 if (search == null) { |
522 is AllFilter -> { |
521 setBoolean(fflag, false) |
523 setBoolean(fflag, false) |
522 setBoolean(nflag, false) |
524 setBoolean(nflag, false) |
523 setInt(idcol, 0) |
525 setInt(idcol, 0) |
524 } else { |
526 } |
525 setBoolean(fflag, true) |
527 is NoneFilter -> { |
526 setBoolean(nflag, false) |
528 setBoolean(fflag, false) |
527 setInt(idcol, search.id) |
529 setBoolean(nflag, true) |
528 } |
530 setInt(idcol, 0) |
529 } |
531 } |
530 setBoolean(1, true) |
532 is SpecificFilter -> { |
531 setInt(2, project.id) |
533 setBoolean(fflag, true) |
532 applyFilter(version, 3, 5, 4) |
534 setBoolean(nflag, false) |
533 applyFilter(component, 6, 8, 7) |
535 setInt(idcol, filter.obj.id) |
|
536 } |
|
537 else -> { |
|
538 TODO("Implement range filter.") |
|
539 } |
|
540 } |
|
541 } |
|
542 when (filter.project) { |
|
543 is AllFilter -> { |
|
544 setBoolean(1, false) |
|
545 setInt(2, 0) |
|
546 } |
|
547 is SpecificFilter -> { |
|
548 setBoolean(1, true) |
|
549 setInt(2, filter.project.obj.id) |
|
550 } |
|
551 else -> throw IllegalArgumentException() |
|
552 } |
|
553 applyFilter(filter.version, 3, 5, 4) |
|
554 applyFilter(filter.component, 6, 8, 7) |
|
555 |
534 |
556 queryAll { it.extractIssue() } |
535 queryAll { it.extractIssue() } |
557 } |
536 } |
558 |
537 |
559 override fun findIssue(id: Int): Issue? = |
538 override fun findIssue(id: Int): Issue? = |