package entity.mx; import entity.system.Users; import javax.persistence.*; import java.io.Serializable; import java.util.*; /** * Entity to handle internal messages between users. * * @author tloehr */ @Entity @Table(name = "mxmsg") public class MXmsg implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MXID") private Long mxid; /** * who this message was sent by */ @JoinColumn(name = "sender", referencedColumnName = "UKennung") @ManyToOne private Users sender; /** * when this msg is not yet ready, then its in draft mode and shall be completed later */ @Basic(optional = false) @Column(name = "draft") private boolean draft; /** * the pit when this message was sent to the recipient. */ @Basic(optional = false) @Column(name = "pit") @Temporal(TemporalType.TIMESTAMP) private Date pit; /** * the subject line of this message */ @Basic(optional = false) @Column(name = "subject") private String subject; /** * the message text itself. */ @Lob @Column(name = "Text") private String text; /** * the list of the users to receive this message */ @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "msg", fetch = FetchType.LAZY) private Set<MXrecipient> recipients; @Version @Column(name = "version") private Long version; public MXmsg() { } public MXmsg(Users sender) { this.sender = sender; this.text = ""; this.subject = ""; this.recipients = new HashSet<>(); this.pit = new Date(); this.draft = true; } public Long getMxid() { return mxid; } public void setMxid(Long mxid) { this.mxid = mxid; } public Users getSender() { return sender; } public void setSender(Users sender) { this.sender = sender; } public Date getPit() { return pit; } public void setPit(Date pit) { this.pit = pit; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public boolean isDraft() { return draft; } public void setDraft(Boolean draft) { this.draft = draft; } public Set<MXrecipient> getRecipients() { return recipients; } public void setRecipients(Set<MXrecipient> recipients) { this.recipients = recipients; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MXmsg mXmsg = (MXmsg) o; return Objects.equals(mxid, mXmsg.mxid) && Objects.equals(sender, mXmsg.sender) && Objects.equals(draft, mXmsg.draft) && Objects.equals(pit, mXmsg.pit) && Objects.equals(subject, mXmsg.subject) && Objects.equals(text, mXmsg.text) && Objects.equals(version, mXmsg.version); } @Override public int hashCode() { return Objects.hash(mxid, sender, draft, pit, subject, text, version); } @Override public String toString() { return "MXmsg{" + "mxid=" + mxid + ", sender=" + sender + ", draft=" + draft + ", pit=" + pit + ", subject='" + subject + '\'' + ", text='" + text + '\'' + ", version=" + version + '}'; } }