package models; import java.text.SimpleDateFormat; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import com.avaje.ebean.Page; import play.Play; import play.db.ebean.Model; @Entity public class Alert extends Model { @Id public Long id; @ManyToOne @JoinColumn(name="id_creator") public User user; @Column(columnDefinition="text") public String text; public Date createdAt = new Date(); public boolean read = false; public static final Model.Finder<Long, Alert> find = new Model.Finder<>(Long.class, Alert.class); public static Page<Alert> page(Long userId, int page, int pageSize, String sortBy, String order) { return find.where().eq("id_creator", userId) .orderBy(sortBy + " " + order) .findPagingList(pageSize) .setFetchAhead(false) .getPage(page); } public static String numberOfUnreadAlerts(User user) { int unreadAlerts = find.where().eq("id_creator", user.id) .eq("read", false) .findRowCount(); if (unreadAlerts == 0) return ""; return " (" + unreadAlerts + ")"; } public String formattedDateString() { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm"); return dateFormat.format(createdAt); } public String getHtml() { return text.replace("href=\"/", "href=\"" + Play.application().configuration().getString("application.context") + "/"); } public static String link(Document document) { return "<a href=\"/documents/" + document.id + "\">" + document.title + "</a>"; } public static String compareLink(Document d1, Document d2) { return "<a href=\"/documents/compare/" + d1.id + ".." + d2.id + "\">compare</a>"; } }