package org.kalipo.domain; import org.hibernate.validator.constraints.Email; import org.joda.time.DateTime; import org.kalipo.validation.ModelExistsConstraint; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.io.Serializable; /** * A Report. */ @Document(collection = "T_REPORT") public class Report implements Serializable { @Id private String id; @NotNull @Field("author_id") private String authorId; @NotNull(message = "{constraint.notnull.reportReason}") private Reason reason; @Size(min = 1, max = 148) private String customReason; @Email private String email; private Status status; @NotNull(message = "{constraint.notnull.commentId}") @Field("comment_id") @ModelExistsConstraint(Comment.class) private String commentId; private boolean abused; @NotNull(message = "{constraint.notnull.threadId}") @Field("thread_id") private String threadId; private String ip; @CreatedDate private DateTime createdDate; @LastModifiedDate private DateTime lastModifiedDate; private String reviewerId; private String reviewNote; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getAuthorId() { return authorId; } public void setAuthorId(String authorId) { this.authorId = authorId; } public Reason getReason() { return reason; } public void setReason(Reason reason) { this.reason = reason; } public String getCustomReason() { return customReason; } public void setCustomReason(String customReason) { this.customReason = customReason; } public Status getStatus() { return status; } public Report setStatus(Status status) { this.status = status; return this; } public String getCommentId() { return commentId; } public void setCommentId(String commentId) { this.commentId = commentId; } public boolean isAbused() { return abused; } public void setAbused(boolean abused) { this.abused = abused; } public String getThreadId() { return threadId; } public void setThreadId(String threadId) { this.threadId = threadId; } public DateTime getCreatedDate() { return createdDate; } public void setCreatedDate(DateTime createdDate) { this.createdDate = createdDate; } public DateTime getLastModifiedDate() { return lastModifiedDate; } public void setLastModifiedDate(DateTime lastModifiedDate) { this.lastModifiedDate = lastModifiedDate; } public String getReviewerId() { return reviewerId; } public void setReviewerId(String reviewerId) { this.reviewerId = reviewerId; } public String getReviewNote() { return reviewNote; } public void setReviewNote(String reviewNote) { this.reviewNote = reviewNote; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } /** * Created by damoeb on 8/8/14. */ public enum Status { PENDING, APPROVED, REJECTED } public enum Reason { Other, Offensive_Language, Personal_Abuse, Off_Topic, Legal_Issue, Trolling, Hate_Speech, Offensive_Threatening_Language, Copyright, Spam } }