mike@159: /* universe@180: * Copyright 2021 Mike Becker. All rights reserved. mike@159: * mike@159: * Redistribution and use in source and binary forms, with or without mike@159: * modification, are permitted provided that the following conditions are met: mike@159: * mike@159: * 1. Redistributions of source code must retain the above copyright mike@159: * notice, this list of conditions and the following disclaimer. mike@159: * mike@159: * 2. Redistributions in binary form must reproduce the above copyright mike@159: * notice, this list of conditions and the following disclaimer in the mike@159: * documentation and/or other materials provided with the distribution. mike@159: * mike@159: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" mike@159: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE mike@159: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE mike@159: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE mike@159: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL mike@159: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR mike@159: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER mike@159: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, mike@159: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE mike@159: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. mike@159: */ mike@159: mike@159: package de.uapcore.lightpit.dao mike@159: universe@167: import de.uapcore.lightpit.entities.* universe@184: import de.uapcore.lightpit.util.IssueFilter universe@184: import de.uapcore.lightpit.viewmodel.ComponentSummary universe@184: import de.uapcore.lightpit.viewmodel.IssueSummary universe@184: import de.uapcore.lightpit.viewmodel.VersionSummary universe@167: universe@167: interface DataAccessObject { universe@167: fun listUsers(): List universe@167: fun findUser(id: Int): User? universe@167: fun findUserByName(username: String): User? universe@167: fun insertUser(user: User) universe@167: fun updateUser(user: User) universe@167: universe@184: /** universe@184: * Lists all versions of the specified [project]. universe@184: * universe@184: * The list is first ordered by the ordinal of the version and universe@184: * then by name, both descending. universe@184: */ universe@167: fun listVersions(project: Project): List universe@184: fun listVersionSummaries(project: Project): List universe@167: fun findVersion(id: Int): Version? universe@167: fun findVersionByNode(project: Project, node: String): Version? universe@167: fun insertVersion(version: Version) universe@167: fun updateVersion(version: Version) universe@167: universe@167: fun listComponents(project: Project): List universe@184: fun listComponentSummaries(project: Project): List universe@167: fun findComponent(id: Int): Component? universe@167: fun findComponentByNode(project: Project, node: String): Component? universe@167: fun insertComponent(component: Component) universe@167: fun updateComponent(component: Component) universe@167: universe@184: /** universe@184: * Lists all projects ordered by name. universe@184: */ universe@167: fun listProjects(): List universe@167: fun findProject(id: Int): Project? universe@167: fun findProjectByNode(node: String): Project? universe@167: fun insertProject(project: Project) universe@167: fun updateProject(project: Project) universe@167: universe@167: fun collectIssueSummary(project: Project): IssueSummary universe@167: universe@167: fun listIssues(filter: IssueFilter): List universe@167: fun findIssue(id: Int): Issue? universe@184: fun insertIssue(issue: Issue): Int universe@167: fun updateIssue(issue: Issue) universe@167: universe@167: fun listComments(issue: Issue): List universe@167: fun insertComment(issueComment: IssueComment) mike@159: }