학습일기 day28 - 텍스트게시판 고도화 복습

이건구·2023년 9월 27일
0

기존에 할수있었던 텍스트게시판에서 더 고도화하여 상세보기 - 상세보기기능추가 - 댓글달기까지 추가했다.

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 객체를 통해 출력을해주었다.

0개의 댓글