기존에 할수있었던 텍스트게시판에서 더 고도화하여 상세보기 - 상세보기기능추가 - 댓글달기까지 추가했다.
controller패키지에있는 ArticleContriller클래스에서 detail코드를 보면
public void detail() {
System.out.print("상세보기 할 게시물의 번호 : ");
String strNum = sc.nextLine();
int num = convertNum(strNum);
if (num == -1) {
System.out.println("숫자를 입력해주세요");
} else {
Article article = articleRepository.findByNum(num);
if (article == null) {
System.out.println("없는 게시물 번호 입니다.");
} else {
article.setHit(article.getHit() + 1);
ArrayList<Comment> comments = commentRepository.getComments(article.getId());
articleView.printDetail(article, comments);
detailFunc(article);
}
}
}
이렇게 해주었는데 설명을하자면가장 마지막에있는 else 이전까진 똑같다. else이후에 있는코드들은 일단 detailFunc(article); 함수먼저 설명을 해보겠다.
public void detailFunc(Article article) {
while (true) {
System.out.print("상세보기 기능을 선택해주세요 \n1. 댓글 등록, 2. 추천, 3. 수정, 4. 삭제, 5. 목록으로 : ");
String strDetailNum = sc.nextLine();
int detailFunc = convertNum(strDetailNum);
if (detailFunc == 1) {
addComment(article);
} else if (detailFunc == 2) {
System.out.println("추천");
} else if (detailFunc == 3) {
UpdateMyArticle(article);
} else if (detailFunc == 4) {
System.out.println("삭제");
} else if (detailFunc == 5) {
System.out.println("목록으로 돌아갑니다");
break;
}
}
}
코드는 이렇게 생겼고 그냥 상세보기란에서 기능을 새로 Scanner객체로 받아서 실행해주는함수이다.
이제 각자 1,2,3,4,5 에 기능을 추가하는과정인데 1번은 댓글 작성기능이다.
addComment(article); 함수가 실행이되면
public void addComment(Article article) {
System.out.print("댓글 등록 : ");
String comment = sc.nextLine();
commentRepository.insert(article.getId(), comment);
System.out.println("댓글이 등록되었습니다.");
System.out.println("==============================");
ArrayList<Comment> comments = commentRepository.getComments(article.getId());
articleView.printDetail(article, comments);
}
위 코드가 실행이되는데 Article과 똑같이 model패키지에 Comment와 CommentRepository를 만들어 기능을 구현해주었다.
그리고 조건사항에서 댓글이 등록되면 상세보기한 해당 게시물과 댓글을 다시 출력하라고 하였기에 마지막에 articleView 객체를 통해 출력을해주었다.