package issueData; import org.apache.commons.codec.digest.DigestUtils; import java.util.ArrayList; import java.util.List; import java.util.Objects; public class Issue { private String title; private String description; private String creator; private String originalHash; private List<Comment> comments; private boolean status; private long creationTime; private long edited; public Issue(String title, String description) { this.title = title; this.description = description; this.status = true; long time = System.currentTimeMillis(); this.creationTime = time + 1; //Lamport timestamps this.edited = time + 1; this.originalHash = DigestUtils.sha256Hex(title + description + creationTime); this.comments = new ArrayList<>(); } public Issue() { comments = new ArrayList<>(); } private void edited() { edited = System.currentTimeMillis(); } public long getCreationTime() { return creationTime; } public void setCreationTime(long creationTime) { this.creationTime = creationTime; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getOriginalHash() { return originalHash; } public void setOriginalHash(String originalHash) { this.originalHash = originalHash; } public void addComment(Comment comment) { comments.add(comment); } public List<Comment> getComments() { return comments; } public long getEdited() { return edited; } public void setEdited(long edited) { this.edited = edited; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getCreator() { return creator; } public void setCreator(String creator) { this.creator = creator; } public boolean isopen() { return status; } public void setStatus(boolean status) { this.status = status; } public void write() { IssueWriter writer = new IssueWriter(this); writer.write(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Issue issue = (Issue) o; return creationTime == issue.creationTime && Objects.equals(title, issue.title) && Objects.equals(description, issue.description) && Objects.equals(creator, issue.creator) && Objects.equals(originalHash, issue.originalHash); } @Override public int hashCode() { return Objects.hash(title, description, creator, originalHash, creationTime); } @Override public String toString() { return "Hash: " + originalHash + " Title: " + title; } }