package com.qprogramming.tasq.events;
import com.qprogramming.tasq.account.Account;
import com.qprogramming.tasq.support.Utils;
import com.qprogramming.tasq.task.worklog.LogType;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "event_seq_gen")
@SequenceGenerator(name = "event_seq_gen", sequenceName = "event_id_seq", allocationSize = 1)
private Long id;
@Column
private String task;
@ManyToOne
private Account account;
@Enumerated(EnumType.STRING)
private LogType logtype;
@Column
private String who;
@Column(columnDefinition = "text")
private String message;
@Column
private Date date;
@Column
private boolean unread;
@Enumerated(EnumType.STRING)
private Type type;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public String getWho() {
return who;
}
public void setWho(String who) {
this.who = who;
}
public LogType getLogtype() {
return logtype;
}
public void setLogtype(LogType logtype) {
this.logtype = logtype;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDate() {
return Utils.convertDateTimeToString(date);
}
public void setDate(Date date) {
this.date = date;
}
public Date getRawDate() {
return date;
}
public boolean isUnread() {
return unread;
}
public void setUnread(boolean unread) {
this.unread = unread;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((account == null) ? 0 : account.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((logtype == null) ? 0 : logtype.hashCode());
result = prime * result + ((task == null) ? 0 : task.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
result = prime * result + ((who == null) ? 0 : who.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Event other = (Event) obj;
if (account == null) {
if (other.account != null) {
return false;
}
} else if (!account.equals(other.account)) {
return false;
}
if (id == null) {
if (other.id != null) {
return false;
}
} else if (!id.equals(other.id)) {
return false;
}
if (logtype != other.logtype) {
return false;
}
if (task == null) {
if (other.task != null) {
return false;
}
} else if (!task.equals(other.task)) {
return false;
}
if (type != other.type) {
return false;
}
if (who == null) {
if (other.who != null) {
return false;
}
} else if (!who.equals(other.who)) {
return false;
}
return true;
}
public enum Type {
COMMENT, WATCH, SYSTEM
}
}