package net.spatula.tally_ho.model; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; @Entity @Table(name="message_root") public class MessageRoot { @Id @Column(name="object_id") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "rootSequence") @SequenceGenerator(name="rootSequence", sequenceName = "message_root_object_id_seq") private long objectId; @Column(name="last_post") @Temporal(TemporalType.TIMESTAMP) private Date lastPost; @Column(name="post_count") private int postCount; @Column(name="post_count_24hr") private int postCount24hr; @Column(name="posting_permitted") private boolean postingPermitted; @Column(name="source_id") private long sourceId; @Column(name="source_type") private String sourceType; @OneToMany(mappedBy="root", fetch=FetchType.LAZY) @OrderBy("objectId ASC") private List messages; @Transient private boolean messagesFixed = false; public long getObjectId() { return objectId; } public void setObjectId(int objectId) { this.objectId = objectId; } public Date getLastPost() { return lastPost; } public void setLastPost(Date lastPost) { this.lastPost = lastPost; } public int getPostCount() { return postCount; } public void setPostCount(int postCount) { this.postCount = postCount; } public boolean isPostingPermitted() { return postingPermitted; } public void setPostingPermitted(boolean postingPermitted) { this.postingPermitted = postingPermitted; } public long getSourceId() { return sourceId; } public void setSourceId(long l) { this.sourceId = l; } public String getSourceType() { return sourceType; } public void setSourceType(String sourceType) { this.sourceType = sourceType; } public List getMessages() { if (!messagesFixed) { fixMessages(); } return messages; } private void fixMessages() { for (Message message : messages) { if (message.getParent() != null) { message.getParent().getChildren().add(message); } } messagesFixed = true; } public void setMessages(List messages) { this.messages = messages; } public int getPostCount24hr() { return postCount24hr; } public void setPostCount24hr(int postCount24hr) { this.postCount24hr = postCount24hr; } }