package com.syzton.sunread.model.note;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.syzton.sunread.dto.note.NoteDTO;
import com.syzton.sunread.model.book.Book;
import com.syzton.sunread.model.common.AbstractEntity;
import com.syzton.sunread.model.user.User;
/**
* @author chenty
*
*/
@Entity
@Table(name="note")
public class Note extends AbstractEntity{
public static final int MAX_LENGTH_TITLE = 200;
public static final int MAX_LENGTH_CONTENT = 200000;
public static final int MAX_LENGTH_IMAGE = 10485760; // 10MiB
@Column(name="title",length = MAX_LENGTH_TITLE)
private String title;
@Column(name="content",length = MAX_LENGTH_CONTENT)
private String content;
@OneToMany(cascade = CascadeType.ALL,mappedBy = "note")
@Basic(fetch = FetchType.LAZY)
private Set<Comment> comments;
@Column(name="comment_count")
private Long commentCount = 0L;
@Column(name="content_length")
private int contentLenght = 0;
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH }, optional = true)
@Basic(fetch = FetchType.LAZY)
@JoinColumn(name="book_id")
private Book book;
@Column(name="image",length = MAX_LENGTH_IMAGE)
private String image;
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH }, optional = true)
@Basic(fetch = FetchType.LAZY)
@JoinColumn(name="user_id")
private User user;
public Note() {
}
public Long getCommentCount() {
return commentCount;
}
public void setCommentCount(Long commentCount) {
this.commentCount = commentCount;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public String getImage() {
return image;
}
public String getUsername() {
return user.getUsername();
}
public String getBookname() {
return book.getName();
}
public Long getBookId() {
return book.getId();
}
public String getBookPictureUrl() {
return book.getPictureUrl();
}
public int getContentLenght() {
return contentLenght;
}
public void setTitle(String title) {
this.title = title;
}
public void setContent(String content) {
this.content = content;
}
public void setComments(Set<Comment> comments) {
this.comments = comments;
}
public void setContentLenght(int contentLenght) {
this.contentLenght = contentLenght;
}
public void setBook(Book book) {
this.book = book;
}
public void setImage(String image) {
this.image = image;
}
public void setUser(User user) {
this.user = user;
}
public NoteDTO createDTO(Note model) {
NoteDTO dto = new NoteDTO();
dto.setId(model.getId());
dto.setTitle(model.getTitle());
dto.setContent(model.getContent());
dto.setContentLength(model.getContent().length());
dto.setImage(model.getImage());
dto.setCommentCount(model.getCommentCount());
return dto;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}