Mon, 05 Aug 2024 19:38:47 +0200
fix removing filter not working
fixes #407
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
180 | 2 | * Copyright 2021 Mike Becker. All rights reserved. |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Redistribution and use in source and binary forms, with or without |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * modification, are permitted provided that the following conditions are met: |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * 1. Redistributions of source code must retain the above copyright |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * notice, this list of conditions and the following disclaimer. |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * 2. Redistributions in binary form must reproduce the above copyright |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * notice, this list of conditions and the following disclaimer in the |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * documentation and/or other materials provided with the distribution. |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | */ |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
25 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | package de.uapcore.lightpit.dao |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | import de.uapcore.lightpit.entities.* |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
29 | import de.uapcore.lightpit.types.CommitRef |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
30 | import de.uapcore.lightpit.types.IssueHistoryType |
268 | 31 | import de.uapcore.lightpit.types.RelationType |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
32 | import de.uapcore.lightpit.types.WebColor |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
33 | import de.uapcore.lightpit.viewmodel.ComponentSummary |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
34 | import de.uapcore.lightpit.viewmodel.IssueSummary |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
35 | import de.uapcore.lightpit.viewmodel.VersionSummary |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
36 | import org.intellij.lang.annotations.Language |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | import java.sql.Connection |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | import java.sql.PreparedStatement |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
39 | import java.sql.ResultSet |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | class PostgresDataAccessObject(private val connection: Connection) : DataAccessObject { |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
42 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
43 | /** |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
44 | * Prepares the given [sql] statement and executes the [block] function with the prepared statement as receiver. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
45 | * The statement is then closed properly. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
46 | */ |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
47 | private fun <R> withStatement(@Language("SQL") sql: String, block: PreparedStatement.() -> R) = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
48 | connection.prepareStatement(sql).use(block) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
49 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
50 | /** |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
51 | * Prepares the given [sql] statement and executes the [block] function on that statement. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
52 | * The statement is then closed properly. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
53 | */ |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
54 | private fun <R> useStatement(@Language("SQL") sql: String, block: (PreparedStatement) -> R) = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
55 | connection.prepareStatement(sql).use(block) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
56 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
57 | /** |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
58 | * Executes the statement and iterates the whole result set extracting the rows with the given [extractor] function. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
59 | */ |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
60 | private fun <T> PreparedStatement.queryAll(extractor: (ResultSet) -> T): List<T> = executeQuery().use { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
61 | sequence { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
62 | while (it.next()) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
63 | yield(extractor(it)) |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
64 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
65 | }.toList() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
66 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
67 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
68 | /** |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
69 | * Executes the statement and extracts a single row with the given [extractor] function. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
70 | * If the result set is empty, null is returned. |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
71 | */ |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
72 | private fun <T> PreparedStatement.querySingle(extractor: (ResultSet) -> T): T? = executeQuery().use { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
73 | return if (it.next()) extractor(it) else null |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
74 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
75 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
76 | //<editor-fold desc="User"> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | //language=SQL |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | private val userQuery = "select userid, username, lastname, givenname, mail from lpit_user" |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
80 | private fun ResultSet.extractUser() = User(getInt("userid")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
81 | username = getString("username") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
82 | givenname = getString("givenname") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
83 | lastname = getString("lastname") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
84 | mail = getString("mail") |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
85 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
86 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
87 | private fun ResultSet.containsUserInfo(): Boolean { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
88 | getInt("userid") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
89 | return !wasNull() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
90 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
92 | private fun ResultSet.extractOptionalUser() = if (containsUserInfo()) extractUser() else null |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
93 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
94 | override fun listUsers() = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
95 | withStatement("$userQuery where userid > 0 order by username") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
96 | queryAll { it.extractUser() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
97 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
98 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
99 | override fun findUser(id: Int): User? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
100 | withStatement("$userQuery where userid = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
101 | setInt(1, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
102 | querySingle { it.extractUser() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
103 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
104 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
105 | override fun findUserByName(username: String): User? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
106 | withStatement("$userQuery where lower(username) = lower(?)") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
107 | setString(1, username) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
108 | querySingle { it.extractUser() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
109 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
110 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
111 | override fun insertUser(user: User) { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
112 | withStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
113 | with(user) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
114 | setStringSafe(1, username) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
115 | setStringOrNull(2, lastname) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
116 | setStringOrNull(3, givenname) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
117 | setStringOrNull(4, mail) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
118 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
119 | executeUpdate() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
120 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
121 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
122 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
123 | override fun updateUser(user: User) { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
124 | withStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
125 | with(user) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
126 | setStringOrNull(1, lastname) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
127 | setStringOrNull(2, givenname) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
128 | setStringOrNull(3, mail) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
129 | setInt(4, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
130 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
131 | executeUpdate() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
132 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
133 | } |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
134 | //</editor-fold> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
135 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
136 | //<editor-fold desc="Version"> |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
137 | //language=SQL |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
138 | private val versionQuery = "select versionid, project, name, node, ordinal, status, release, eol from lpit_version" |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
139 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
140 | private fun ResultSet.extractVersion() = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
141 | Version(getInt("versionid"), getInt("project")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
142 | name = getString("name") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
143 | node = getString("node") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
144 | ordinal = getInt("ordinal") |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
145 | release = getDate("release") |
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
146 | eol = getDate("eol") |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
147 | status = getEnum("status") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
148 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
149 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
150 | override fun listVersions(project: Project): List<Version> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
151 | withStatement("$versionQuery where project = ? order by ordinal desc, lower(name) desc") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
152 | setInt(1, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
153 | queryAll { it.extractVersion() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
154 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
155 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
156 | override fun listVersionSummaries(project: Project): List<VersionSummary> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
157 | withStatement( |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
158 | """with |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
159 | version_map as ( |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
160 | select issueid, status, resolved as versionid, true as isresolved from lpit_issue |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
161 | union all |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
162 | select issueid, status, affected as versionid, false as isresolved from lpit_issue |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
163 | ), issues as ( |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
164 | select versionid, phase, isresolved, count(issueid) as total from version_map |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
165 | join lpit_issue_phases using (status) |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
166 | group by versionid, phase, isresolved |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
167 | ), |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
168 | summary as ( |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
169 | select versionid, phase, isresolved, total |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
170 | from lpit_version v |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
171 | left join issues using (versionid) |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
172 | ) |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
173 | select v.versionid, project, name, node, ordinal, status, release, eol, |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
174 | ro.total as resolved_open, ra.total as resolved_active, rd.total as resolved_done, |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
175 | ao.total as affected_open, aa.total as affected_active, ad.total as affected_done |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
176 | from lpit_version v |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
177 | left join summary ro on ro.versionid = v.versionid and ro.phase = 0 and ro.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
178 | left join summary ra on ra.versionid = v.versionid and ra.phase = 1 and ra.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
179 | left join summary rd on rd.versionid = v.versionid and rd.phase = 2 and rd.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
180 | left join summary ao on ao.versionid = v.versionid and ao.phase = 0 and not ao.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
181 | left join summary aa on aa.versionid = v.versionid and aa.phase = 1 and not aa.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
182 | left join summary ad on ad.versionid = v.versionid and ad.phase = 2 and not ad.isresolved |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
183 | where v.project = ? |
203
7d5b16379768
#152 same sort order for versions and version summaries
Mike Becker <universe@uap-core.de>
parents:
190
diff
changeset
|
184 | order by ordinal desc, lower(name) desc |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
185 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
186 | ) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
187 | setInt(1, project.id) |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
188 | queryAll { rs -> |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
189 | VersionSummary(rs.extractVersion()).apply { |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
190 | reportedTotal.open = rs.getInt("affected_open") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
191 | reportedTotal.active = rs.getInt("affected_active") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
192 | reportedTotal.done = rs.getInt("affected_done") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
193 | resolvedTotal.open = rs.getInt("resolved_open") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
194 | resolvedTotal.active = rs.getInt("resolved_active") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
195 | resolvedTotal.done = rs.getInt("resolved_done") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
196 | } |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
197 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
198 | } |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
199 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
200 | override fun findVersion(id: Int): Version? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
201 | withStatement("$versionQuery where versionid = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
202 | setInt(1, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
203 | querySingle { it.extractVersion() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
204 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
205 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
206 | override fun findVersionByNode(project: Project, node: String): Version? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
207 | withStatement("$versionQuery where project = ? and node = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
208 | setInt(1, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
209 | setString(2, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
210 | querySingle { it.extractVersion() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
211 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
212 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
213 | override fun insertVersion(version: Version) { |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
214 | withStatement("insert into lpit_version (name, node, ordinal, status, project, release, eol) values (?, ?, ?, ?::version_status, ?, ?, ?)") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
215 | with(version) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
216 | setStringSafe(1, name) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
217 | setStringSafe(2, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
218 | setInt(3, ordinal) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
219 | setEnum(4, status) |
260 | 220 | setInt(5, projectid) |
221 | setDateOrNull(6, release) | |
222 | setDateOrNull(7, eol) | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
223 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
224 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
225 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
226 | |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
227 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
228 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
229 | override fun updateVersion(version: Version) { |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
230 | withStatement("update lpit_version set name = ?, node = ?, ordinal = ?, status = ?::version_status, release=?,eol=? where versionid = ?") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
231 | with(version) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
232 | setStringSafe(1, name) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
233 | setStringSafe(2, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
234 | setInt(3, ordinal) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
235 | setEnum(4, status) |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
236 | setDateOrNull(5, version.release) |
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
237 | setDateOrNull(6, version.eol) |
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
238 | setInt(7, id) |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
239 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
240 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
241 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | } |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
243 | //</editor-fold> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
244 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
245 | //<editor-fold desc="Component"> |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
246 | //language=SQL |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
247 | private val componentQuery = |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
248 | """ |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
249 | select id, project, name, node, color, ordinal, description, active, |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
250 | userid, username, givenname, lastname, mail |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
251 | from lpit_component |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
252 | left join lpit_user on lead = userid |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
253 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
254 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
255 | private fun ResultSet.extractComponent(): Component = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
256 | Component(getInt("id"), getInt("project")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
257 | name = getString("name") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
258 | node = getString("node") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
259 | color = try { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
260 | WebColor(getString("color")) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
261 | } catch (ex: IllegalArgumentException) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
262 | WebColor("000000") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
263 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
264 | ordinal = getInt("ordinal") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
265 | description = getString("description") |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
266 | active = getBoolean("active") |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
267 | lead = extractOptionalUser() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
268 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
270 | private fun PreparedStatement.setComponent(index: Int, component: Component): Int { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
271 | with(component) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
272 | var i = index |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
273 | setStringSafe(i++, name) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
274 | setStringSafe(i++, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
275 | setStringSafe(i++, color.hex) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
276 | setInt(i++, ordinal) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
277 | setStringOrNull(i++, description) |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
278 | setBoolean(i++, active) |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
279 | setIntOrNull(i++, lead?.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
280 | return i |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
281 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
282 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
283 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
284 | override fun listComponents(project: Project): List<Component> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
285 | withStatement("$componentQuery where project = ? order by ordinal, lower(name)") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
286 | setInt(1, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
287 | queryAll { it.extractComponent() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
288 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
289 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
290 | override fun listComponentSummaries(project: Project): List<ComponentSummary> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
291 | withStatement( |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
292 | """ |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
293 | with issues as ( |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
294 | select component, phase, count(issueid) as total |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
295 | from lpit_issue |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
296 | join lpit_issue_phases using (status) |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
297 | group by component, phase |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
298 | ), |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
299 | summary as ( |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
300 | select c.id, phase, total |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
301 | from lpit_component c |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
302 | left join issues i on c.id = i.component |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
303 | ) |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
304 | select c.id, project, name, node, color, ordinal, description, active, |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
305 | userid, username, givenname, lastname, mail, |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
306 | open.total as open, wip.total as wip, done.total as done |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
307 | from lpit_component c |
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
308 | left join lpit_user on lead = userid |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
309 | left join summary open on c.id = open.id and open.phase = 0 |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
310 | left join summary wip on c.id = wip.id and wip.phase = 1 |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
311 | left join summary done on c.id = done.id and done.phase = 2 |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
312 | where c.project = ? |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
313 | order by ordinal, name |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
314 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
315 | ) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
316 | setInt(1, project.id) |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
317 | queryAll { rs -> |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
318 | ComponentSummary(rs.extractComponent()).apply { |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
319 | issueSummary.open = rs.getInt("open") |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
320 | issueSummary.active = rs.getInt("wip") |
190
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
321 | issueSummary.done = rs.getInt("done") |
a83f1ab56898
fixes #138 - ResultSet processing for summaries
Mike Becker <universe@uap-core.de>
parents:
189
diff
changeset
|
322 | } |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
323 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
324 | } |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
325 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
326 | override fun findComponent(id: Int): Component? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
327 | withStatement("$componentQuery where id = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
328 | setInt(1, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
329 | querySingle { it.extractComponent() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
330 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
331 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
332 | override fun findComponentByNode(project: Project, node: String): Component? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
333 | withStatement("$componentQuery where project = ? and node = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
334 | setInt(1, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
335 | setString(2, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
336 | querySingle { it.extractComponent() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
337 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
338 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
339 | override fun insertComponent(component: Component) { |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
340 | withStatement("insert into lpit_component (name, node, color, ordinal, description, active, lead, project) values (?, ?, ?, ?, ?, ?, ?, ?)") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
341 | val col = setComponent(1, component) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
342 | setInt(col, component.projectid) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
343 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
344 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
345 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
346 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
347 | override fun updateComponent(component: Component) { |
227
f0ede8046b59
#162 adds active flag to component
Mike Becker <universe@uap-core.de>
parents:
225
diff
changeset
|
348 | withStatement("update lpit_component set name = ?, node = ?, color = ?, ordinal = ?, description = ?, active = ?, lead = ? where id = ?") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
349 | val col = setComponent(1, component) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
350 | setInt(col, component.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
351 | executeUpdate() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
352 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
353 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
354 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
355 | //</editor-fold> |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
356 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
357 | //<editor-fold desc="Project"> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
358 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
359 | //language=SQL |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
360 | private val projectQuery = |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
361 | """ |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
362 | select projectid, name, node, ordinal, description, vcs, repourl, |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
363 | userid, username, lastname, givenname, mail |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
364 | from lpit_project |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
365 | left join lpit_user owner on lpit_project.owner = owner.userid |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
366 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
367 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
368 | private fun ResultSet.extractProject() = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
369 | Project(getInt("projectid")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
370 | name = getString("name") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
371 | node = getString("node") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
372 | ordinal = getInt("ordinal") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
373 | description = getString("description") |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
374 | vcs = getEnum("vcs") |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
375 | repoUrl = getString("repourl") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
376 | owner = extractOptionalUser() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
377 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
378 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
379 | private fun PreparedStatement.setProject(index: Int, project: Project): Int { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
380 | var i = index |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
381 | with(project) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
382 | setStringSafe(i++, name) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
383 | setStringSafe(i++, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
384 | setInt(i++, ordinal) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
385 | setStringOrNull(i++, description) |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
386 | setEnum(i++, vcs) |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
387 | setStringOrNull(i++, repoUrl) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
388 | setIntOrNull(i++, owner?.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
389 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
390 | return i |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
391 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
392 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
393 | override fun listProjects(): List<Project> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
394 | withStatement("$projectQuery order by ordinal, lower(name)") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
395 | queryAll { it.extractProject() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
396 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
397 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
398 | override fun findProject(id: Int): Project? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
399 | withStatement("$projectQuery where projectid = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
400 | setInt(1, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
401 | querySingle { it.extractProject() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
402 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
403 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
404 | override fun findProjectByNode(node: String): Project? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
405 | withStatement("$projectQuery where node = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
406 | setString(1, node) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
407 | querySingle { it.extractProject() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
408 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
409 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
410 | override fun insertProject(project: Project) { |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
411 | withStatement("insert into lpit_project (name, node, ordinal, description, vcs, repourl, owner) values (?, ?, ?, ?, ?::vcstype, ?, ?)") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
412 | setProject(1, project) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
413 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
414 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
415 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
416 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
417 | override fun updateProject(project: Project) { |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
418 | withStatement("update lpit_project set name = ?, node = ?, ordinal = ?, description = ?, vcs = ?::vcstype, repourl = ?, owner = ? where projectid = ?") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
419 | val col = setProject(1, project) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
420 | setInt(col, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
421 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
422 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
423 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
424 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
425 | override fun collectIssueSummary(project: Project): IssueSummary = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
426 | withStatement( |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
427 | """ |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
428 | select phase, count(*) as total |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
429 | from lpit_issue |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
430 | join lpit_issue_phases using(status) |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
431 | where project = ? |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
432 | group by phase |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
433 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
434 | ) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
435 | setInt(1, project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
436 | executeQuery().use { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
437 | val summary = IssueSummary() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
438 | while (it.next()) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
439 | val phase = it.getInt("phase") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
440 | val total = it.getInt("total") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
441 | when (phase) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
442 | 0 -> summary.open = total |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
443 | 1 -> summary.active = total |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
444 | 2 -> summary.done = total |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
445 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
446 | } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
447 | summary |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
448 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
449 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
450 | |
257
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
451 | override fun collectIssueSummary(assignee: User): IssueSummary = |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
452 | withStatement( |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
453 | """ |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
454 | select phase, count(*) as total |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
455 | from lpit_issue |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
456 | join lpit_issue_phases using(status) |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
457 | where assignee = ? |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
458 | group by phase |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
459 | """.trimIndent() |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
460 | ) { |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
461 | setInt(1, assignee.id) |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
462 | executeQuery().use { |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
463 | val summary = IssueSummary() |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
464 | while (it.next()) { |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
465 | val phase = it.getInt("phase") |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
466 | val total = it.getInt("total") |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
467 | when (phase) { |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
468 | 0 -> summary.open = total |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
469 | 1 -> summary.active = total |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
470 | 2 -> summary.done = total |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
471 | } |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
472 | } |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
473 | summary |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
474 | } |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
475 | } |
c1be672af7ff
#164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents:
248
diff
changeset
|
476 | |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
477 | override fun mergeCommitRefs(refs: List<CommitRef>) { |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
478 | withStatement("insert into lpit_commit_ref (issueid, commit_hash, commit_brief) values (?,?,?) on conflict do nothing") { |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
479 | refs.forEach { ref -> |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
480 | setInt(1, ref.issueId) |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
481 | setString(2, ref.hash) |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
482 | setString(3, ref.message) |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
483 | executeUpdate() |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
484 | } |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
485 | } |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
486 | } |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
487 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
488 | //</editor-fold> |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
489 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
490 | //<editor-fold desc="Issue"> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
491 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
492 | //language=SQL |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
493 | private val issueQuery = |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
494 | """ |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
495 | select issueid, |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
496 | i.project, p.name as projectname, p.node as projectnode, |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
497 | component, c.name as componentname, c.node as componentnode, |
268 | 498 | status, phase, category, subject, i.description, |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
499 | userid, username, givenname, lastname, mail, |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
500 | created, updated, eta, affected, resolved |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
501 | from lpit_issue i |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
502 | join lpit_project p on i.project = projectid |
268 | 503 | join lpit_issue_phases using (status) |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
504 | left join lpit_component c on component = c.id |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
505 | left join lpit_user on userid = assignee |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
506 | """.trimIndent() |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
507 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
508 | private fun ResultSet.extractIssue(): Issue { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
509 | val proj = Project(getInt("project")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
510 | name = getString("projectname") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
511 | node = getString("projectnode") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
512 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
513 | val comp = getInt("component").let { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
514 | if (wasNull()) null else |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
515 | Component(it, proj.id).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
516 | name = getString("componentname") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
517 | node = getString("componentnode") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
518 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
519 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
520 | val issue = Issue(getInt("issueid"), proj).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
521 | component = comp |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
522 | status = getEnum("status") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
523 | category = getEnum("category") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
524 | subject = getString("subject") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
525 | description = getString("description") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
526 | assignee = extractOptionalUser() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
527 | created = getTimestamp("created") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
528 | updated = getTimestamp("updated") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
529 | eta = getDate("eta") |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
530 | affected = getInt("affected").takeIf { it > 0 }?.let { findVersion(it) } |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
531 | resolved = getInt("resolved").takeIf { it > 0 }?.let { findVersion(it) } |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
532 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
533 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
534 | return issue |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
535 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
536 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
537 | private fun PreparedStatement.setIssue(index: Int, issue: Issue): Int { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
538 | var i = index |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
539 | with(issue) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
540 | setIntOrNull(i++, component?.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
541 | setEnum(i++, status) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
542 | setEnum(i++, category) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
543 | setStringSafe(i++, subject) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
544 | setStringOrNull(i++, description) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
545 | setIntOrNull(i++, assignee?.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
546 | setDateOrNull(i++, eta) |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
547 | setIntOrNull(i++, affected?.id) |
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
548 | setIntOrNull(i++, resolved?.id) |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
549 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
550 | return i |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
551 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
552 | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
553 | override fun listIssues(includeDone: Boolean): List<Issue> = |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
554 | withStatement("$issueQuery where (? or phase < 2)") { |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
555 | setBoolean(1, includeDone) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
556 | queryAll { it.extractIssue() } |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
557 | } |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
558 | |
268 | 559 | override fun listIssues(project: Project, includeDone: Boolean): List<Issue> = |
560 | withStatement("$issueQuery where i.project = ? and (? or phase < 2)") { | |
263
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
561 | setInt(1, project.id) |
268 | 562 | setBoolean(2, includeDone) |
263
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
563 | queryAll { it.extractIssue() } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
564 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
565 | |
292
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
566 | override fun listIssues( |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
567 | project: Project, |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
568 | includeDone: Boolean, |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
569 | specificVersion: Boolean, |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
570 | version: Version?, |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
571 | specificComponent: Boolean, |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
572 | component: Component? |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
573 | ): List<Issue> = |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
574 | withStatement( |
268 | 575 | """$issueQuery where i.project = ? and |
576 | (? or phase < 2) and | |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
577 | (not ? or ? in (resolved, affected)) and (not ? or (resolved is null and affected is null)) and |
183
61669abf277f
fixes issue query returning issues more than once
Mike Becker <universe@uap-core.de>
parents:
180
diff
changeset
|
578 | (not ? or component = ?) and (not ? or component is null) |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
579 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
580 | ) { |
263
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
581 | setInt(1, project.id) |
268 | 582 | setBoolean(2, includeDone) |
292
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
583 | |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
584 | setBoolean(3, specificVersion && version != null) |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
585 | setInt(4, version?.id ?: 0) |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
586 | setBoolean(5, specificVersion && version == null) |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
587 | |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
588 | setBoolean(6, specificComponent && component != null) |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
589 | setInt(7, component?.id ?: 0) |
703591e739f4
add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents:
284
diff
changeset
|
590 | setBoolean(8, specificComponent && component == null) |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
591 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
592 | queryAll { it.extractIssue() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
593 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
594 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
595 | override fun findIssue(id: Int): Issue? = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
596 | withStatement("$issueQuery where issueid = ?") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
597 | setInt(1, id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
598 | querySingle { it.extractIssue() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
599 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
600 | |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
601 | override fun insertIssue(issue: Issue): Int { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
602 | val id = withStatement( |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
603 | """ |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
604 | insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project) |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
605 | values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?) |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
606 | returning issueid |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
607 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
608 | ) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
609 | val col = setIssue(1, issue) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
610 | setInt(col, issue.project.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
611 | querySingle { it.getInt(1) }!! |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
612 | } |
184
e8eecee6aadf
completes kotlin migration
Mike Becker <universe@uap-core.de>
parents:
183
diff
changeset
|
613 | return id |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
614 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
615 | |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
616 | override fun updateIssue(issue: Issue) { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
617 | withStatement( |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
618 | """ |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
619 | update lpit_issue set updated = now(), |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
620 | component = ?, status = ?::issue_status, category = ?::issue_category, subject = ?, |
231
dcb1d5a7ea3a
#163 removes multi selection for versions
Mike Becker <universe@uap-core.de>
parents:
227
diff
changeset
|
621 | description = ?, assignee = ?, eta = ?, affected = ?, resolved = ? |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
622 | where issueid = ? |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
623 | """.trimIndent() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
624 | ) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
625 | val col = setIssue(1, issue) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
626 | setInt(col, issue.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
627 | executeUpdate() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
628 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
629 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
630 | |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
631 | override fun insertHistoryEvent(issue: Issue, newId: Int) { |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
632 | val type = if (newId > 0) IssueHistoryType.New else IssueHistoryType.Update |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
633 | val issueid = if (newId > 0) newId else issue.id |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
634 | |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
635 | val eventid = |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
636 | withStatement("insert into lpit_issue_history_event(issueid, subject, type) values (?,?,?::issue_history_event) returning eventid") { |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
637 | setInt(1, issueid) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
638 | setString(2, issue.subject) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
639 | setEnum(3, type) |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
640 | querySingle { it.getInt(1) }!! |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
641 | } |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
642 | withStatement( |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
643 | """ |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
644 | insert into lpit_issue_history_data (component, status, category, description, assignee, eta, affected, resolved, eventid) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
645 | values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?) |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
646 | """.trimIndent() |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
647 | ) { |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
648 | setStringOrNull(1, issue.component?.name) |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
649 | setEnum(2, issue.status) |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
650 | setEnum(3, issue.category) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
651 | setStringOrNull(4, issue.description) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
652 | setStringOrNull(5, issue.assignee?.shortDisplayname) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
653 | setDateOrNull(6, issue.eta) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
654 | setStringOrNull(7, issue.affected?.name) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
655 | setStringOrNull(8, issue.resolved?.name) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
656 | setInt(9, eventid) |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
657 | executeUpdate() |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
658 | } |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
659 | } |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
660 | |
284
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
661 | override fun listCommitRefs(issue: Issue): List<CommitRef> = |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
662 | withStatement("select commit_hash, commit_brief from lpit_commit_ref where issueid = ?") { |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
663 | setInt(1, issue.id) |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
664 | queryAll { |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
665 | CommitRef( |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
666 | issueId = issue.id, |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
667 | hash = it.getString("commit_hash"), |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
668 | message = it.getString("commit_brief") |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
669 | ) |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
670 | } |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
671 | } |
671c1c8fbf1c
add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents:
268
diff
changeset
|
672 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
673 | //</editor-fold> |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
674 | |
263
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
675 | //<editor-fold desc="Issue Relations"> |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
676 | override fun insertIssueRelation(rel: IssueRelation) { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
677 | withStatement( |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
678 | """ |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
679 | insert into lpit_issue_relation (from_issue, to_issue, type) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
680 | values (?, ?, ?::relation_type) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
681 | on conflict do nothing |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
682 | """.trimIndent() |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
683 | ) { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
684 | if (rel.reverse) { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
685 | setInt(2, rel.from.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
686 | setInt(1, rel.to.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
687 | } else { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
688 | setInt(1, rel.from.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
689 | setInt(2, rel.to.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
690 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
691 | setEnum(3, rel.type) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
692 | executeUpdate() |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
693 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
694 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
695 | |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
696 | override fun deleteIssueRelation(rel: IssueRelation) { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
697 | withStatement("delete from lpit_issue_relation where from_issue = ? and to_issue = ? and type=?::relation_type") { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
698 | if (rel.reverse) { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
699 | setInt(2, rel.from.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
700 | setInt(1, rel.to.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
701 | } else { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
702 | setInt(1, rel.from.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
703 | setInt(2, rel.to.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
704 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
705 | setEnum(3, rel.type) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
706 | executeUpdate() |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
707 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
708 | } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
709 | |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
710 | override fun listIssueRelations(issue: Issue): List<IssueRelation> = buildList { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
711 | withStatement("select to_issue, type from lpit_issue_relation where from_issue = ?") { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
712 | setInt(1, issue.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
713 | queryAll { IssueRelation(issue, findIssue(it.getInt("to_issue"))!!, it.getEnum("type"), false) } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
714 | }.forEach(this::add) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
715 | withStatement("select from_issue, type from lpit_issue_relation where to_issue = ?") { |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
716 | setInt(1, issue.id) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
717 | queryAll { IssueRelation(issue, findIssue(it.getInt("from_issue"))!!, it.getEnum("type"), true) } |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
718 | }.forEach(this::add) |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
719 | } |
268 | 720 | |
721 | override fun getIssueRelationMap(project: Project, includeDone: Boolean): IssueRelationMap = | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
722 | getIssueRelationMapImpl(project, includeDone) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
723 | |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
724 | override fun getIssueRelationMap(includeDone: Boolean): IssueRelationMap = |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
725 | getIssueRelationMapImpl(null, includeDone) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
726 | |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
727 | private fun getIssueRelationMapImpl(project: Project?, includeDone: Boolean): IssueRelationMap = |
268 | 728 | withStatement( |
729 | """ | |
730 | select r.from_issue, r.to_issue, r.type | |
731 | from lpit_issue_relation r | |
732 | join lpit_issue i on i.issueid = r.from_issue | |
733 | join lpit_issue_phases p on i.status = p.status | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
734 | where (? or i.project = ?) and (? or p.phase < 2) |
268 | 735 | """.trimIndent() |
736 | ) { | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
737 | setBoolean(1, project == null) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
738 | setInt(2, project?.id ?: 0) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
739 | setBoolean(3, includeDone) |
268 | 740 | queryAll { Pair(it.getInt("from_issue"), Pair(it.getInt("to_issue"), it.getEnum<RelationType>("type"))) } |
741 | }.groupBy({it.first},{it.second}) | |
263
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
742 | //</editor-fold> |
aa22103809cd
#29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
743 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
744 | //<editor-fold desc="IssueComment"> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
745 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
746 | private fun ResultSet.extractIssueComment() = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
747 | IssueComment(getInt("commentid"), getInt("issueid")).apply { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
748 | created = getTimestamp("created") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
749 | updated = getTimestamp("updated") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
750 | updateCount = getInt("updatecount") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
751 | comment = getString("comment") |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
752 | author = extractOptionalUser() |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
753 | } |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
754 | |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
755 | override fun listComments(issue: Issue): List<IssueComment> = |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
756 | withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where issueid = ? order by created") { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
757 | setInt(1, issue.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
758 | queryAll { it.extractIssueComment() } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
759 | } |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
760 | |
207
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
761 | override fun findComment(id: Int): IssueComment? = |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
762 | withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where commentid = ?") { |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
763 | setInt(1, id) |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
764 | querySingle { it.extractIssueComment() } |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
765 | } |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
766 | |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
767 | override fun insertComment(issueComment: IssueComment): Int = |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
768 | useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
769 | withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?) returning commentid") { |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
770 | with(issueComment) { |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
771 | updateIssueDate.setInt(1, issueid) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
772 | setInt(1, issueid) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
773 | setStringSafe(2, comment) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
774 | setIntOrNull(3, author?.id) |
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
775 | } |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
776 | val commentid = querySingle { it.getInt(1) }!! |
189
f7de8158b41c
fixes #137 - leaking prepared statements
Mike Becker <universe@uap-core.de>
parents:
188
diff
changeset
|
777 | updateIssueDate.executeUpdate() |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
778 | commentid |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
779 | } |
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
780 | } |
207
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
781 | |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
782 | override fun updateComment(issueComment: IssueComment) { |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
783 | useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
784 | withStatement("update lpit_issue_comment set comment = ?, updatecount = updatecount + 1, updated = now() where commentid = ?") { |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
785 | with(issueComment) { |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
786 | updateIssueDate.setInt(1, issueid) |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
787 | setStringSafe(1, comment) |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
788 | setInt(2, id) |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
789 | } |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
790 | executeUpdate() |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
791 | updateIssueDate.executeUpdate() |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
792 | } |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
793 | } |
479dd7993ef9
#22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents:
203
diff
changeset
|
794 | } |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
795 | |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
796 | |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
797 | override fun insertHistoryEvent(issue: Issue, issueComment: IssueComment, newId: Int) { |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
798 | val type = if (newId > 0) IssueHistoryType.NewComment else IssueHistoryType.UpdateComment |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
799 | val commentid = if (newId > 0) newId else issueComment.id |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
800 | |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
801 | val eventid = |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
802 | withStatement("insert into lpit_issue_history_event(issueid, subject, type) values (?,?,?::issue_history_event) returning eventid") { |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
803 | setInt(1, issueComment.issueid) |
244
28052f3b9cf9
fixes bug in parameter index
Mike Becker <universe@uap-core.de>
parents:
242
diff
changeset
|
804 | setString(2, issue.subject) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
805 | setEnum(3, type) |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
806 | querySingle { it.getInt(1) }!! |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
807 | } |
245
97b4d0605318
fixes number of parameters
Mike Becker <universe@uap-core.de>
parents:
244
diff
changeset
|
808 | withStatement("insert into lpit_issue_comment_history (commentid, eventid, comment) values (?,?,?)") { |
232
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
809 | setInt(1, commentid) |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
810 | setInt(2, eventid) |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
811 | setString(3, issueComment.comment) |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
812 | executeUpdate() |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
813 | } |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
814 | } |
296e12ff8d1c
#109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents:
231
diff
changeset
|
815 | |
225
87328572e36f
#159 adds release and eol dates
Mike Becker <universe@uap-core.de>
parents:
215
diff
changeset
|
816 | //</editor-fold> |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
817 | |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
818 | //<editor-fold desc="Issue History"> |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
819 | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
820 | override fun listIssueHistory(project: Project?, days: Int) = |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
821 | withStatement( |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
822 | """ |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
823 | select p.name as project_name, u.username as current_assignee, evt.*, evtdata.* |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
824 | from lpit_issue_history_event evt |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
825 | join lpit_issue issue using (issueid) |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
826 | join lpit_project p on project = p.projectid |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
827 | left join lpit_user u on u.userid = issue.assignee |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
828 | join lpit_issue_history_data evtdata using (eventid) |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
829 | where (? or project = ?) |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
830 | and time > now() - (? * interval '1' day) |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
831 | order by time desc |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
832 | """.trimIndent() |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
833 | ) { |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
834 | setBoolean(1, project == null) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
835 | setInt(2, project?.id ?: -1) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
836 | setInt(3, days) |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
837 | queryAll { rs-> |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
838 | with(rs) { |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
839 | IssueHistoryEntry( |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
840 | project = getString("project_name"), |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
841 | subject = getString("subject"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
842 | time = getTimestamp("time"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
843 | type = getEnum("type"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
844 | currentAssignee = getString("current_assignee"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
845 | issueid = getInt("issueid"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
846 | component = getString("component") ?: "", |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
847 | status = getEnum("status"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
848 | category = getEnum("category"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
849 | description = getString("description") ?: "", |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
850 | assignee = getString("assignee") ?: "", |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
851 | eta = getDate("eta"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
852 | affected = getString("affected") ?: "", |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
853 | resolved = getString("resolved") ?: "" |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
854 | ) |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
855 | } |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
856 | } |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
857 | } |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
858 | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
859 | override fun listIssueCommentHistory(project: Project?, days: Int) = |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
860 | withStatement( |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
861 | """ |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
862 | select u.username as current_assignee, evt.*, evtdata.* |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
863 | from lpit_issue_history_event evt |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
864 | join lpit_issue issue using (issueid) |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
865 | left join lpit_user u on u.userid = issue.assignee |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
866 | join lpit_issue_comment_history evtdata using (eventid) |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
867 | where (? or project = ?) |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
868 | and time > now() - (? * interval '1' day) |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
869 | order by time desc |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
870 | """.trimIndent() |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
871 | ) { |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
872 | setBoolean(1, project == null) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
873 | setInt(2, project?.id ?: -1) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
292
diff
changeset
|
874 | setInt(3, days) |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
875 | queryAll { rs-> |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
876 | with(rs) { |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
877 | IssueCommentHistoryEntry( |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
878 | subject = getString("subject"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
879 | time = getTimestamp("time"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
880 | type = getEnum("type"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
881 | currentAssignee = getString("current_assignee"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
882 | issueid = getInt("issueid"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
883 | commentid = getInt("commentid"), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
884 | comment = getString("comment") |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
885 | ) |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
886 | } |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
887 | } |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
888 | } |
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
889 | |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
232
diff
changeset
|
890 | //</editor-fold> |
167
3f30adba1c63
major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
891 | } |