package com.QA.messages; import com.QA.QAOperator; import net.sf.json.JSONObject; import org.hibernate.annotations.ForeignKey; import org.hibernate.annotations.Index; import org.hibernate.annotations.Type; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.FieldBridge; import org.hibernate.search.bridge.builtin.IntegerBridge; import org.jblooming.ontology.LoggableIdentifiableSupport; import javax.persistence.*; import java.io.Serializable; import java.util.Date; @Entity @Table(name = "qa_stickynote") public class StickyNote extends LoggableIdentifiableSupport { private String type; private QAOperator author; private QAOperator receiver; private String message; private Date created; private Date read; public StickyNote() { } public StickyNote(Serializable id) { super(id); } public StickyNote(int id, String message) { super(id); this.message = message; } @Id @Type(type = "int") @GeneratedValue(strategy = GenerationType.AUTO) @DocumentId @FieldBridge(impl = IntegerBridge.class) public Serializable getId() { return super.getId(); } @ManyToOne(targetEntity = QAOperator.class) @ForeignKey(name = "fk_sn_aut") @Index(name = "idx_sn_aut") @JoinColumn(name = "author") public QAOperator getAuthor() { return author; } public void setAuthor(QAOperator author) { this.author = author; } @ManyToOne(targetEntity = QAOperator.class) @ForeignKey(name = "fk_sn_rec") @Index(name = "idx_sn_rec") @JoinColumn(name = "receiver") public QAOperator getReceiver() { return receiver; } public void setReceiver(QAOperator receiver) { this.receiver = receiver; } @Lob public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } @Column(name="readx") public Date getRead() { return read; } public void setRead(Date read) { this.read = read; } public String getType() { return type; } public void setType(String type) { this.type = type; } @Transient public String getName() { return getMessage(); } public JSONObject jsonify() { JSONObject ret = new JSONObject(); ret.element("id", getId()); ret.element("type", getType()); ret.element("message", getMessage()); ret.element("lastModifiedMillis", getLastModified().getTime()); ret.element("creationMillis", getCreationDate().getTime()); QAOperator auth = getAuthor(); if (auth != null) { ret.element("authorId", auth.getId()); ret.element("authorName", auth.getDisplayName()); } QAOperator rec = getReceiver(); if (rec != null) { ret.element("receiverId", rec.getId()); ret.element("receiverName", rec.getDisplayName()); } return ret; } }