package net.okjsp.techqna.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.okjsp.community.model.Comment;
import net.okjsp.recommendation.model.BoardRecommend;
import net.okjsp.recommendation.model.BoardRecommendOperator;
import net.okjsp.tag.model.Tag;
import net.okjsp.user.model.User;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.springframework.format.annotation.DateTimeFormat;
/**
* TechQna Model.
*
* @author jaeger
*/
public class TechQna implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 게시물 번호
*/
private Integer writeNo;
/**
* 게시판 ID
*/
private Integer boardId;
/**
* 카테고리 ID
*/
private Integer categoryId;
/**
* 부모 게시물 ID
*/
private Integer parentId = 0;
/**
* 제목
*/
private String qnaTitle;
/**
* 내용
*/
private String content;
/**
* 사용자 ID
*/
private Integer userId;
/**
* 조회수
*/
private Integer postingHit;
/**
* 사용여부
*/
private boolean enabled;
/**
* 작성날짜
*/
@DateTimeFormat(style = "MM", pattern = "yyyy-MM-dd")
private Date writeDate;
/**
* 수정날짜
*/
@DateTimeFormat(style = "MM", pattern = "yyyy-MM-dd")
private Date updateDate;
/**
* 추천/신고/반대 연산자
*/
private BoardRecommendOperator boardRecommendOperator;
/**
* comment List
*/
private List<Comment> commentList;
/**
* 태그 리스트
*/
private List<Tag> tagList;
/**
* 사용자
*/
private User user;
/**
* 게시물 번호 Getter.
*
* @return 게시물 번호
*/
public Integer getWriteNo() {
return writeNo;
}
/**
* 게시물 번호 Setter.
*
* @param writeNo 게시물 번호
*/
public void setWriteNo(Integer writeNo) {
this.writeNo = writeNo;
}
public Integer getBoardId() {
return boardId;
}
public void setBoardId(Integer boardId) {
this.boardId = boardId;
}
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
/**
* Q/A 구분 Getter.
*
* @return 삭제 구분(Y/N)
*/
public boolean getEnabled() {
return enabled;
}
/**
* Q/A 구분
*
* @param 삭제 구분(Y/N)
*/
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
/**
* 부모 게시물 ID Getter.
*
* @return 부모 게시물 ID
*/
public Integer getParentId() {
return parentId;
}
/**
* 부모 게시물 ID Setter.
*
* @param parentId 부모 게시물 ID
*/
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
/**
* 제목 Getter.
*
* @return 제목
*/
public String getQnaTitle() {
return qnaTitle;
}
/**
* 제목 Setter.
*
* @param qnaTitle 제목
*/
public void setQnaTitle(String qnaTitle) {
this.qnaTitle = qnaTitle;
}
/**
* 내용 Getter.
*
* @return 내용
*/
public String getContent() {
return content;
}
/**
* 내용 Setter.
*
* @param content 내용
*/
public void setContent(String content) {
this.content = content;
}
/**
* 사용자ID getter
*
* @return
*/
public Integer getUserId() {
return userId;
}
/**
* 사용자 ID setter
*
* @param userId
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* 조회수 Getter.
*
* @return 조회수
*/
public Integer getPostingHit() {
return postingHit;
}
/**
* 조회수 Setter.
*
* @param postingHit 조회수
*/
public void setPostingHit(Integer postingHit) {
this.postingHit = postingHit;
}
/**
* 작성일자 Getter.
*
* @return 작성일자
*/
public Date getWriteDate() {
return writeDate;
}
/**
* 작성일자 Setter.
*
* @param wirteDate 작성일자
*/
public void setWriteDate(Date writeDate) {
this.writeDate = writeDate;
}
/**
* 수정일자 Getter.
*
* @return 수정일자
*/
public Date getUpdateDate() {
return updateDate;
}
/**
* 수정일자 Setter.
*
* @param updateDate 수정일자
*/
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
/**
* 추천 리스트 getter
*
* @return 추천 조작자
*/
public BoardRecommendOperator getBoardRecommendOperator() {
return boardRecommendOperator;
}
/**
* 추천 리스트 setter
*
* @param boardRecommendList 조작자
*/
public void setBoardRecommendOperator(BoardRecommendOperator boardRecommendOperator) {
this.boardRecommendOperator = boardRecommendOperator;
}
/**
* 태그 리스트 getter
*
* @return 태그 리스트
*/
public List<Tag> getTagList() {
return tagList;
}
/**
* 태그 리스트 setter
*
* @param tagList 태그 리스트
*/
public void setTagList(List<Tag> tagList) {
this.tagList = tagList;
}
/**
* 태그 리스트 setter
*
* @param tags 태그들
*/
public void setTagList(String... tags) {
List<Tag> l = new ArrayList<Tag>();
for(String tag : tags) {
Tag t = new Tag(tag);
l.add(t);
}
this.tagList = l;
}
/**
* comment 리스트 getter
*
* @return 태그 리스트
*/
public List<Comment> getCommentList() {
return commentList;
}
/**
* comment 리스트 setter
*
* @param tagList 태그 리스트
*/
public void setCommentList(List<Comment> commentList) {
this.commentList = commentList;
}
/**
* 사용자 getter
*
* @return 사용자
*/
public User getUser() {
return user;
}
/**
* 사용자 setter
*
* @param user 사용자
*/
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}