package net.spatula.tally_ho.model; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; @Entity public class Message { @Id @Column(name = "object_id") private int objectId; private String alias; @Column(name="change_summary") private String changeSummary; @OneToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "changer", referencedColumnName = "object_id") private Account changer; @Column(name = "create_date") @Temporal(TemporalType.TIMESTAMP) private Date createDate; private String flags; private String ip; @Column(name = "is_closed") private boolean isClosed; @Column(name = "is_registered") private boolean isRegistered; private String location; @Column(name = "message_text") private String messageText; @OneToOne(optional = true, fetch = FetchType.LAZY) @JoinColumn(name = "parent_id", referencedColumnName = "object_id") private Message parent; // We flag this as transient and populate it after a full load is // done from the root for performance. Bit of a hack, but we can // get away with it because we never look at the children of a // message in isolation, only as part of a whole collection of // messages. @Transient private List children = new ArrayList(); @OneToOne @JoinColumn(name = "root_id", referencedColumnName="object_id") private MessageRoot root; private boolean pending; private String uid; private int version; public int getObjectId() { return objectId; } public void setObjectId(int objectId) { this.objectId = objectId; } public String getAlias() { return alias; } public void setAlias(String alias) { this.alias = alias; } public String getChangeSummary() { return changeSummary; } public void setChangeSummary(String changeSummary) { this.changeSummary = changeSummary; } public Account getChanger() { return changer; } public void setChanger(Account changer) { this.changer = changer; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public String getFlags() { return flags; } public void setFlags(String flags) { this.flags = flags; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public boolean isClosed() { return isClosed; } public void setClosed(boolean isClosed) { this.isClosed = isClosed; } public boolean isRegistered() { return isRegistered; } public void setRegistered(boolean isRegistered) { this.isRegistered = isRegistered; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getMessageText() { return messageText; } public void setMessageText(String messageText) { this.messageText = messageText; } public Message getParent() { return parent; } public void setParent(Message parent) { this.parent = parent; } public MessageRoot getRoot() { return root; } public void setRootObject(MessageRoot root) { this.root = root; } public boolean isPending() { return pending; } public void setPending(boolean pending) { this.pending = pending; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public List getChildren() { return children; } public void setChildren(List children) { this.children = children; } }