package com.aperture_software.glados_wiki.entities; import com.aperture_software.glados_wiki.entities.page_acl.DefaultAclPolicy; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Indexed; import org.mongodb.morphia.annotations.Reference; import org.mongodb.morphia.utils.IndexDirection; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created with IntelliJ IDEA. * User: jhyun * Date: 13. Nov. 15 * Time: 14:09 */ @Entity public class Page implements Serializable, Cloneable { private static final long serialVersionUID = -5493099655093174578L; @Id private ObjectId id; @NotNull @Indexed(value = IndexDirection.ASC, background = true, unique = true, dropDups = false) private String title; @Reference(ignoreMissing = true) private PageContent current; @Reference(ignoreMissing = true) private List<PageContent> versions = new ArrayList<PageContent>(); private Date ctime = new Date(); private Date mtime; private String aclForEveryone = DefaultAclPolicy.NONE; @Reference(ignoreMissing = true) private List<UserAuthentication> readables = new ArrayList<UserAuthentication>(); @Reference(ignoreMissing = true) private List<UserAuthentication> writables = new ArrayList<UserAuthentication>(); @Reference private List<String> tags = new ArrayList<String>(); public ObjectId getId() { return id; } public void setId(ObjectId id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public PageContent getCurrent() { return current; } public void setCurrent(PageContent current) { this.current = current; } public List<PageContent> getVersions() { return versions; } public void setVersions(List<PageContent> versions) { this.versions = versions; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; } public Date getMtime() { return mtime; } public void setMtime(Date mtime) { this.mtime = mtime; } public List<UserAuthentication> getReadables() { return readables; } public void setReadables(List<UserAuthentication> readables) { this.readables = readables; } public List<UserAuthentication> getWritables() { return writables; } public void setWritables(List<UserAuthentication> writables) { this.writables = writables; } public String getAclForEveryone() { return aclForEveryone; } public void setAclForEveryone(String aclForEveryone) { this.aclForEveryone = aclForEveryone; } public List<String> getTags() { return tags; } public void setTags(List<String> tags) { this.tags = tags; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }