universe@38: /* universe@38: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. universe@38: * universe@38: * Copyright 2018 Mike Becker. All rights reserved. universe@38: * universe@38: * Redistribution and use in source and binary forms, with or without universe@38: * modification, are permitted provided that the following conditions are met: universe@38: * universe@38: * 1. Redistributions of source code must retain the above copyright universe@38: * notice, this list of conditions and the following disclaimer. universe@38: * universe@38: * 2. Redistributions in binary form must reproduce the above copyright universe@38: * notice, this list of conditions and the following disclaimer in the universe@38: * documentation and/or other materials provided with the distribution. universe@38: * universe@38: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@38: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@38: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE universe@38: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE universe@38: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR universe@38: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF universe@38: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS universe@38: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN universe@38: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) universe@38: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE universe@38: * POSSIBILITY OF SUCH DAMAGE. universe@38: * universe@38: */ universe@38: package de.uapcore.lightpit.dao; universe@38: universe@134: import de.uapcore.lightpit.entities.*; universe@38: universe@59: import java.sql.SQLException; universe@59: import java.util.List; universe@59: universe@128: public interface IssueDao extends ChildEntityDao { universe@75: universe@75: /** universe@134: * Lists all issues that are related to the specified component and version. universe@134: * If component or version is null, search for issues that are not assigned to any universe@134: * component or version, respectively. universe@86: * universe@134: * @param project the project universe@134: * @param component the component or null universe@105: * @param version the version or null universe@86: * @return a list of issues universe@86: * @throws SQLException on any kind of SQL error universe@86: */ universe@134: List list(Project project, Component component, Version version) throws SQLException; universe@134: universe@134: /** universe@134: * Lists all issues that are related to the specified version. universe@134: * If the version is null, lists issues that are not assigned to any version. universe@134: * universe@134: * @param project the project (mandatory) universe@134: * @param version the version or null universe@134: * @return a list of issues universe@134: * @throws SQLException on any kind of SQL error universe@134: */ universe@134: List list(Project project, Version version) throws SQLException; universe@134: universe@134: /** universe@134: * Lists all issues that are related to the specified component. universe@134: * If the component is null, lists issues that are not assigned to a component. universe@134: * universe@134: * @param project the project (mandatory) universe@134: * @param component the component or null universe@134: * @return a list of issues universe@134: * @throws SQLException on any kind of SQL error universe@134: */ universe@134: List list(Project project, Component component) throws SQLException; universe@86: universe@86: /** universe@124: * Lists all comments for a specific issue in chronological order. universe@124: * universe@124: * @param issue the issue universe@124: * @return the list of comments universe@124: * @throws SQLException on any kind of SQL error universe@124: */ universe@124: List listComments(Issue issue) throws SQLException; universe@124: universe@124: /** universe@124: * Stores the specified comment in database. universe@124: * This is an update-or-insert operation. universe@124: * universe@150: * @param issue the issue to save the comment for universe@124: * @param comment the comment to save universe@124: * @throws SQLException on any kind of SQL error universe@124: */ universe@150: void saveComment(Issue issue, IssueComment comment) throws SQLException; universe@124: universe@124: /** universe@75: * Saves an instances to the database. universe@75: * Implementations of this DAO must guarantee that the generated ID is stored in the instance. universe@75: * universe@75: * @param instance the instance to insert universe@128: * @param project the parent project universe@75: * @throws SQLException on any kind of SQL error universe@75: * @see Issue#setId(int) universe@75: */ universe@75: @Override universe@128: void save(Issue instance, Project project) throws SQLException; universe@75: universe@75: /** universe@75: * Retrieves the affected, scheduled and resolved versions for the specified issue. universe@75: * universe@75: * @param issue the issue to join the information for universe@75: * @throws SQLException on any kind of SQL error universe@75: */ universe@75: void joinVersionInformation(Issue issue) throws SQLException; universe@38: }