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

Mon, 05 Aug 2024 18:40:47 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 05 Aug 2024 18:40:47 +0200
changeset 311
bf67e0ff7131
parent 292
703591e739f4
permissions
-rw-r--r--

add new global issues page - fixes #404

159
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
1 /*
180
009700915269 merge resource bundles
Mike Becker <universe@uap-core.de>
parents: 167
diff changeset
2 * Copyright 2021 Mike Becker. All rights reserved.
159
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
3 *
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
4 * Redistribution and use in source and binary forms, with or without
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
5 * modification, are permitted provided that the following conditions are met:
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
6 *
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
7 * 1. Redistributions of source code must retain the above copyright
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
8 * notice, this list of conditions and the following disclaimer.
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
9 *
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
10 * 2. Redistributions in binary form must reproduce the above copyright
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
11 * notice, this list of conditions and the following disclaimer in the
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
12 * documentation and/or other materials provided with the distribution.
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
13 *
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
17 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
20 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
21 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
22 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
24 */
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
25
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
26 package de.uapcore.lightpit.dao
86b5d8a1662f migrates DAO classes
mike@uapl01.localdomain
parents:
diff changeset
27
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
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
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
30 import de.uapcore.lightpit.viewmodel.ComponentSummary
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
31 import de.uapcore.lightpit.viewmodel.IssueSummary
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
32 import de.uapcore.lightpit.viewmodel.VersionSummary
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
33
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
34 interface DataAccessObject {
248
90dc13c78b5d simplify listIssues() interface
Mike Becker <universe@uap-core.de>
parents: 242
diff changeset
35
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
36 fun listUsers(): List<User>
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
37 fun findUser(id: Int): User?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
38 fun findUserByName(username: String): User?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
39 fun insertUser(user: User)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
40 fun updateUser(user: User)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
41
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
42 /**
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
43 * Lists all versions of the specified [project].
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
44 *
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
45 * The list is first ordered by the ordinal of the version and
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
46 * then by name, both descending.
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
47 */
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
48 fun listVersions(project: Project): List<Version>
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
49 fun listVersionSummaries(project: Project): List<VersionSummary>
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
50 fun findVersion(id: Int): Version?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
51 fun findVersionByNode(project: Project, node: String): Version?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
52 fun insertVersion(version: Version)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
53 fun updateVersion(version: Version)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
54
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
55 fun listComponents(project: Project): List<Component>
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
56 fun listComponentSummaries(project: Project): List<ComponentSummary>
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
57 fun findComponent(id: Int): Component?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
58 fun findComponentByNode(project: Project, node: String): Component?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
59 fun insertComponent(component: Component)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
60 fun updateComponent(component: Component)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
61
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
62 /**
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
63 * Lists all projects ordered by name.
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
64 */
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
65 fun listProjects(): List<Project>
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
66 fun findProject(id: Int): Project?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
67 fun findProjectByNode(node: String): Project?
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
68 fun insertProject(project: Project)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
69 fun updateProject(project: Project)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
70
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
71 fun collectIssueSummary(project: Project): IssueSummary
257
c1be672af7ff #164 add issue summary for developers
Mike Becker <universe@uap-core.de>
parents: 248
diff changeset
72 fun collectIssueSummary(assignee: User): IssueSummary
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
73
284
671c1c8fbf1c add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents: 268
diff changeset
74 fun mergeCommitRefs(refs: List<CommitRef>)
671c1c8fbf1c add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents: 268
diff changeset
75
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
76 /**
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
77 * Lists all issues.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
78 * The result will only [includeDone] issues, if requested.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
79 */
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
80 fun listIssues(includeDone: Boolean): List<Issue>
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
81
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
82 /**
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
83 * Lists issues for the specified [project].
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
84 * The result will only [includeDone] issues, if requested.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
85 */
268
ca5501d851fa #15 add issue filters
Mike Becker <universe@uap-core.de>
parents: 263
diff changeset
86 fun listIssues(project: Project, includeDone: Boolean): List<Issue>
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
87
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
88 /**
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
89 * Lists all issues for the specified [project].
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
90 * The result will only [includeDone] issues, if requested.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
91 * When a [specificVersion] or a [specificComponent] is requested,
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
92 * the result is filtered for [version] or [component] respectively.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
93 * In both cases null means that only issues without version or component shall be returned.
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
94 */
292
703591e739f4 add possibility to show issues w/o version or component - fixes #335
Mike Becker <universe@uap-core.de>
parents: 284
diff changeset
95 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
96 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
97 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
98 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
99 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
100 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
101 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
102 ): List<Issue>
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
103 fun findIssue(id: Int): Issue?
184
e8eecee6aadf completes kotlin migration
Mike Becker <universe@uap-core.de>
parents: 180
diff changeset
104 fun insertIssue(issue: Issue): Int
167
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
105 fun updateIssue(issue: Issue)
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
106
3f30adba1c63 major refactoring of DAO architecture - also fixes #114
Mike Becker <universe@uap-core.de>
parents: 159
diff changeset
107 fun listComments(issue: Issue): List<IssueComment>
207
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents: 184
diff changeset
108 fun findComment(id: Int): IssueComment?
232
296e12ff8d1c #109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
109 fun insertComment(issueComment: IssueComment): Int
207
479dd7993ef9 #22 adds possibility to edit own comments
Mike Becker <universe@uap-core.de>
parents: 184
diff changeset
110 fun updateComment(issueComment: IssueComment)
232
296e12ff8d1c #109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
111
263
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
112 /**
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
113 * Inserts an issue relation, if it does not already exist.
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
114 */
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
115 fun insertIssueRelation(rel: IssueRelation)
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
116 fun deleteIssueRelation(rel: IssueRelation)
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
117 fun listIssueRelations(issue: Issue): List<IssueRelation>
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
118 fun getIssueRelationMap(includeDone: Boolean): IssueRelationMap
268
ca5501d851fa #15 add issue filters
Mike Becker <universe@uap-core.de>
parents: 263
diff changeset
119 fun getIssueRelationMap(project: Project, includeDone: Boolean): IssueRelationMap
263
aa22103809cd #29 add possibility to relate issues
Mike Becker <universe@uap-core.de>
parents: 257
diff changeset
120
232
296e12ff8d1c #109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
121 fun insertHistoryEvent(issue: Issue, newId: Int = 0)
242
b7f3e972b13c #109 add comment history
Mike Becker <universe@uap-core.de>
parents: 241
diff changeset
122 fun insertHistoryEvent(issue: Issue, issueComment: IssueComment, newId: Int = 0)
235
4258b9e010ae change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents: 232
diff changeset
123
239
9365c7fb0240 #109 add assignee filter to rss feed
Mike Becker <universe@uap-core.de>
parents: 235
diff changeset
124 /**
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
125 * Lists the issue history, optionally restricted to [project], for the past [days].
239
9365c7fb0240 #109 add assignee filter to rss feed
Mike Becker <universe@uap-core.de>
parents: 235
diff changeset
126 */
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
127 fun listIssueHistory(project: Project?, days: Int): List<IssueHistoryEntry>
241
1ca4f27cefe8 #109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents: 239
diff changeset
128
1ca4f27cefe8 #109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents: 239
diff changeset
129 /**
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
130 * Lists the issue comment history, optionally restricted to [project], for the past [days].
241
1ca4f27cefe8 #109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents: 239
diff changeset
131 */
311
bf67e0ff7131 add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents: 292
diff changeset
132 fun listIssueCommentHistory(project: Project?, days: Int): List<IssueCommentHistoryEntry>
284
671c1c8fbf1c add full support for commit references - fixes #276
Mike Becker <universe@uap-core.de>
parents: 268
diff changeset
133 fun listCommitRefs(issue: Issue): List<CommitRef>
232
296e12ff8d1c #109 adds Stasi that collects intel for the feed
Mike Becker <universe@uap-core.de>
parents: 207
diff changeset
134 }

mercurial