package entities;
import java.util.Calendar;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@NamedQueries({
@NamedQuery(
name = "ALL_TOPICS",
query = "SELECT t FROM TopicEntity t"),
@NamedQuery(
name = "TOPICS_FOR_USER",
query = "SELECT t FROM TopicEntity t WHERE t.fromUser = ?1")
})
public class TopicEntity {
@Id@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
@Column(columnDefinition = "VARCHAR (255)")
private String channel;
@Column(columnDefinition = "VARCHAR (255)")
private String pattern;
@Column(columnDefinition = "VARCHAR (255)")
private String after;
@Column(columnDefinition = "VARCHAR (255)")
private String fromUser;
@Temporal(TemporalType.TIMESTAMP)
private Date dueDate;
public TopicEntity() {}
public TopicEntity(String fromUser, String channel, String pattern, String after,
Date dueDate) {
super();
this.fromUser = fromUser;
this.channel = channel;
this.pattern = pattern;
this.after = after;
this.dueDate = dueDate;
}
public int getId() {
return id;
}
public String getFromUser() {
return this.fromUser;
}
public String getChannel() {
return this.channel;
}
public String getPattern() {
return pattern;
}
public String getAfter() {
return after;
}
public Date getDueDate() {
return dueDate;
}
public long remainingDays() {
Calendar now = Calendar.getInstance();
Calendar due = Calendar.getInstance();
due.setTime(this.dueDate);
long diff = due.getTimeInMillis() - now.getTimeInMillis();
return diff / (24L * 60L *60L * 1000L);
}
public boolean isDue() {
return this.remainingDays() == 0;
}
}