2021-05-07 25일차

2021. 5. 7. 23:58공부 기록

코틀린

  • addArticle함수에 mapper랑 article 변수를 새로 추가했다
    • 라이브러리에서 jacksonObjectMapper() 클래스를 호출하여 mapper 변수에 넣었다
    • jacksonObjectMapper()클래스가 선언되있는 mapper 변수에 writerWithDefaultPrettyPrinter()함수를 호출하여 json을 줄맞춰서 이쁘게 만들어 writeValue 함수를 이용해 File("./File/article/${id}.json")파일로 저장하였다
fun addArticle(boardId: Int, memberId: Int, title: String, body: String): Int {
        val id = ++lastId
        val regDate = Util.getNowDateStr()
        val updateDate = Util.getNowDateStr()
        articles.add(Article(id, regDate, updateDate, memberId, boardId, title, body))

        val mapper  = jacksonObjectMapper()
        val article = Article(id, regDate, updateDate, memberId, boardId, title, body)
        mapper.writerWithDefaultPrettyPrinter().writeValue(File("./File/article/${id}.json"), article)
        return id
 }
  • ArticleController클래스에 있는 detail함수이다
    • 기존방식에서 변환을 주었다
    • 기존에 param에서 id를 입력받아 id를 getArticleById 함수에 넣어서 선택한 article 을 찾던 방식에서 .json 파일로 저장되어있는 파일들중 입력받은id 값이 이름으로 저장되어있는 파일을 여는 방식으로 변경했다
    • .json 파일을 그대로 출력할수도 있지만, 미관상 println에 넣어서 기존방식을 유지하는방법을 선택했다 readValue로 읽어왔기 때문에 value 값을 key값으로로 호출할수가 있었다
    • 예외처리를 이용하여 FileNotFoundException이 발생하면 존재하지 않는 파일이기 때문에 "해당 게시물이 존재하지 않습니다"라는 문구를 출력하고 바로 return하여 함수를 빠져나오도록 했다
val id = rq.getIntParam("id", 0)

        val mapper = jacksonObjectMapper()
        try {
            val article = mapper.readValue<Article>(File("./File/article/${id}.json"))
            println("번호 : ${article.id}")
            println("작성 날짜 : ${article.regDate}")
            println("수정 날짜 : ${article.updateDate}")
            println("제목 : ${article.title}")
            println("내용 : ${article.body}")
        } catch (e: FileNotFoundException) {
            println("해당 게시물이 존재하지 않습니다")
            return
        }
  • ArticleController 클래스 안에있는 modify 함수이다
    • detail 함수와같이 article을 찾아오는 로직을 변경했다
    • regDate, memberID, boardId같이 수정하면 안되는 부분들은 val regDate = article.regDate처럼 처리하여 원본상태 그대로 넘겨주었고 수정해야 할 부분들은 readLineTrim()함수를 사용하여 다시 입력받았고 그 값들을 modifyArticle()함수 안에 인자로 넘겨주었다
    • detail 함수와 마찬가지로 예외처리를 통하여 FileNotFoundException이 발생하면 함수를 빠져나가게 했다
	val id = rq.getIntParam("id", 0)

        val mapper = jacksonObjectMapper()
        try {
            val article = mapper.readValue<Article>(File("./File/article/${id}.json"))
            val regDate = article.regDate
            val memberId = article.memberId
            val boardId = article.boardId
            print("제목 : ")
            val title = readLineTrim()
            print("내용 : ")
            val body = readLineTrim()

            articleRepository.modifyArticle(id, regDate, memberId, boardId, title, body, regDate)
            println("${article.id}번 게시물이 수정되었습니다")
        } catch (e: FileNotFoundException) {
            println("해당 게시물이 존재하지 않습니다")
            return
        }

 

  • modifyArticle 함수
    • 기존 수정방식 처럼 article.title = readLineTrim() 이렇게 수정 해 보려고 했으나 오류는 나지 않지만 파일이 수정되지는 않았다
    • 그래서 선택한 방법이 기존 파일을 덮어쓰는 방식이다 이게 맞는 방식인지는 모르겠으나 아무튼 수정되긴한다
fun modifyArticle(id: Int, regDate: String, memberId: Int, boardId: Int, title: String, body: String, regDate1: String) {
        val mapper  = jacksonObjectMapper()

        val updateDate = Util.getNowDateStr()

        val newArticle = Article(id, regDate, updateDate, memberId, boardId, title, body)

        mapper.writerWithDefaultPrettyPrinter().writeValue(File("./File/article/${id}.json"), newArticle)
    }

자주하는 실수

  • kotlin으로 코딩할때 var로 입력해야 하는 변수들을 버릇처럼 val로 입력하고 나중에서야 그 변수를 사용할때 알게된다

내가 모르는 것

  • 아두이노 LCD를 푸쉬버튼 누를시에 출력되게 하는법을 모르겠다
    • 오늘도 성공하지 못했다 푸쉬버튼 연결할때 버튼을 누르면 어떤 핀이 꺼져야하는지 몰라서 노가다로 하나씩 다해봤는데 다 아니었다
  • 코틀린 택스트 게시판 만들기에서 기존 사용하던 lastId 를 수정해야 하는데 DB에서 처럼 jackson에서도 auto_increment같은 기능이 있을까 하여 찾아보았지만 찾지 못했다
    • lastId를 기존방식처럼 사용하면 프로그램이 실행될때마다 값이 0이 되기때문에 이미 저장되어있는 게시물에는 지장이 없지만 새로운 개시물을 추가할수가 없다(추가한다고 해도 기존 게시물이 수정되는 형태다)
    • lastId 로직을 변경해야하는데 감이안잡힌다 어떻게하지

느낀점

  • 틴커캐드 코드 택스트보드에서도 문법오류나 오타같은걸 잡아줬으면 좋겟다 오타 한개가 있었는데 실행이안되서 오타찾느냐고 한참을 헤맸다
  • 코틀린 택스트 게시판에 영속성을 추가하려는데 생각보다 쉽지가않다 json방식으로 변경하면서 너무 많은것들을 바꿔야해서 어렵다

'공부 기록' 카테고리의 다른 글

2021-05-09 27일차  (0) 2021.05.10
2021-05-08 26일차  (0) 2021.05.10
2021-05-06 24일차  (0) 2021.05.07
2021-05-05 23일차  (0) 2021.05.06
2021-05-04 22일차  (0) 2021.05.04