package entities; import java.util.Comparator; 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; import de.skuzzle.polly.sdk.time.Time; @Entity @NamedQueries({ @NamedQuery( name = RemindEntity.ALL_REMINDS, query = "SELECT r FROM RemindEntity r"), @NamedQuery( name = RemindEntity.REMIND_FOR_USER, query = "SELECT r FROM RemindEntity r WHERE r.forUser = ?1"), @NamedQuery( name = RemindEntity.MY_REMIND_FOR_USER, query = "SELECT r FROM RemindEntity r WHERE r.forUser = ?1 OR r.fromUser = ?1"), @NamedQuery( name = RemindEntity.UNDELIVERED_FOR_USER, query = "SELECT r FROM RemindEntity r WHERE r.forUser = ?1 AND " + "r.isMessage = true") }) public class RemindEntity implements Comparable<RemindEntity> { public final static String ALL_REMINDS = "ALL_REMINDS"; //$NON-NLS-1$ public final static String REMIND_FOR_USER = "REMIND_FOR_USER"; //$NON-NLS-1$ public final static String MY_REMIND_FOR_USER = "MY_REMIND_FOR_USER"; //$NON-NLS-1$ public final static String UNDELIVERED_FOR_USER = "UNDELIVERED_FOR_USER"; //$NON-NLS-1$ public static final Comparator<RemindEntity> BY_DUE_DATE = new Comparator<RemindEntity>() { @Override public int compare(RemindEntity re1, RemindEntity re2) { return re1.getDueDate().compareTo(re2.getDueDate()); } }; @Id@GeneratedValue(strategy = GenerationType.TABLE) private int id; @Column(columnDefinition = "VARCHAR(255)") private String message; @Column(columnDefinition = "VARCHAR(255)") private String forUser; @Column(columnDefinition = "VARCHAR(255)") private String fromUser; @Column(columnDefinition = "VARCHAR(255)") private String onChannel; @Temporal(TemporalType.TIMESTAMP) private Date dueDate; @Temporal(TemporalType.TIMESTAMP) private Date leaveDate; private boolean isMessage; private boolean isMail; private boolean remind; private transient boolean onAction; public RemindEntity() {} public RemindEntity(String message, String fromUser, String forUser, String onChannel, Date dueDate, Date leaveDate) { this(message, fromUser, forUser, onChannel, dueDate, false, false, leaveDate); } public RemindEntity(String message, String fromUser, String forUser, String onChannel, Date dueDate, boolean onAction, Date leaveDate) { this(message, fromUser, forUser, onChannel, dueDate, onAction, false, leaveDate); } public RemindEntity(String message, String fromUser, String forUser, String onChannel, Date dueDate, boolean onAction, boolean isMail, Date leaveDate) { this.message = message; this.fromUser = fromUser; this.forUser = forUser; this.dueDate = dueDate; this.onChannel = onChannel; this.leaveDate = leaveDate; this.onAction = onAction; this.isMail = isMail; } public int getId() { return id; } public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public String getForUser() { return this.forUser; } public void setForUser(String forUser) { this.forUser = forUser; } public String getFromUser() { return this.fromUser; } public String getOnChannel() { return this.onChannel; } public Date getDueDate() { return dueDate; } public void setDueDate(Date dueDate) { this.dueDate = dueDate; } public Date getLeaveDate() { return this.leaveDate; } public boolean isMessage() { return this.isMessage; } public void setIsMessage(boolean isMessage) { this.isMessage = isMessage; } public boolean isMail() { return this.isMail; } public void setIsMail(boolean isMail) { this.isMail = isMail; } public boolean wasRemind() { return this.remind; } public void setWasRemind(boolean wasRemind) { this.remind = wasRemind; } public boolean isOnAction() { return this.onAction; } public void setOnAction(boolean onAction) { this.onAction = onAction; } public RemindEntity copyForNewDueDate(Date newDueDate) { RemindEntity copy = new RemindEntity(this.message, this.fromUser, this.forUser, this.onChannel, newDueDate, this.leaveDate); copy.leaveDate = Time.currentTime(); return copy; } @Override public String toString() { return "REMIND " + this.id + " for " + this.getForUser(); //$NON-NLS-1$ //$NON-NLS-2$ } @Override public int compareTo(RemindEntity o) { return this.dueDate.compareTo(o.dueDate); } }