diff -r 30b840ed8c0e -r 822b7e3d064d src/main/java/de/uapcore/lightpit/entities/Issue.java --- a/src/main/java/de/uapcore/lightpit/entities/Issue.java Fri Oct 23 18:40:50 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 2018 Mike Becker. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - */ -package de.uapcore.lightpit.entities; - -import java.sql.Date; -import java.sql.Timestamp; -import java.time.Instant; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -public final class Issue { - - private int id; - private Project project; - private Component component; - - private IssueStatus status; - private IssueCategory category; - - private String subject; - private String description; - private User assignee; - - private List affectedVersions = Collections.emptyList(); - private List resolvedVersions = Collections.emptyList(); - - private Timestamp created = Timestamp.from(Instant.now()); - private Timestamp updated = Timestamp.from(Instant.now()); - private Date eta; - - public Issue(int id) { - this.id = id; - } - - public int getId() { - return id; - } - - /** - * Should only be used by a DAO to store the generated ID. - * @param id the freshly generated ID returned from the database after insert - */ - public void setId(int id) { - this.id = id; - } - - public void setProject(Project project) { - this.project = project; - } - - public Project getProject() { - return project; - } - - public Component getComponent() { - return component; - } - - public void setComponent(Component component) { - this.component = component; - } - - public IssueStatus getStatus() { - return status; - } - - public void setStatus(IssueStatus status) { - this.status = status; - } - - public int getPhase() { - return this.status.getPhase(); - } - - public IssueCategory getCategory() { - return category; - } - - public void setCategory(IssueCategory category) { - this.category = category; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public User getAssignee() { - return assignee; - } - - public void setAssignee(User assignee) { - this.assignee = assignee; - } - - public List getAffectedVersions() { - return affectedVersions; - } - - public void setAffectedVersions(List affectedVersions) { - this.affectedVersions = affectedVersions; - } - - public List getResolvedVersions() { - return resolvedVersions; - } - - public void setResolvedVersions(List resolvedVersions) { - this.resolvedVersions = resolvedVersions; - } - - public Timestamp getCreated() { - return created; - } - - public void setCreated(Timestamp created) { - this.created = created; - } - - public Timestamp getUpdated() { - return updated; - } - - public void setUpdated(Timestamp updated) { - this.updated = updated; - } - - public Date getEta() { - return eta; - } - - public void setEta(Date eta) { - this.eta = eta; - } - - /** - * An issue is overdue, if it is not done and the ETA is before the current time. - * @return true if this issue is overdue, false otherwise - */ - public boolean isOverdue() { - return eta != null && status.getPhase() != IssueStatus.PHASE_DONE - && eta.before(new Date(System.currentTimeMillis())); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Issue issue = (Issue) o; - return id == issue.id; - } - - @Override - public int hashCode() { - return Objects.hash(id); - } -}