Language/Kotlin

2021 - 05 - 13, Kotlin

Cs.Woo 2021. 5. 14. 09:11

JSON 파일 관련 예제생성

import com.fasterxml.jackson.module.kotlin.readValue
import java.io.File

class MembersRepository {

    // 멤버 내용을 담아줄 비어있는 리스트 선언
    var members :MutableList<Member> = makeMemberDataFile()

    fun addMember(memId: String, memPW: String, memNick: String, memName: String, memPHNum: String, memEmail: String): Int {

     // Member Index
        var lastMembersIndex = (members.lastIndex) + 1

        val memIndex = ++lastMembersIndex
        // 프로그램을 종료하면 자동으로 모든 내용이 저장됨
        // 프로그램을 시작하면 자동으로 모든 내용을 읽어옴

        val regDate = util.getNowDateStr()
        val updateDate = util.getNowDateStr()

        // 멤버 내용을 members에 담아준다.
        members.add(Member(memIndex, memId, memPW, memNick, memName, memPHNum, memEmail, regDate, updateDate))
        //println("Member Saving..")
        //saveMember()
        //println("Member Saving Complete")
        return memIndex
    }

    fun makeMemberDataFile(): MutableList<Member> {

        val members = mutableListOf<Member>()

        var filePath = "data/MembersData/MemberData.json"

        if(!File(filePath).exists()){
            File(filePath).parentFile.mkdirs()
            return members
        }

        return members
    }

    @JvmName("getMembers1")
    fun getMembers(): MutableList<Member> {
        return members
    }

    fun getMemberByMemId(userId: String): Member? {

        for ( member in members ){
            if ( member.memId == userId ){
                return member
            }
        }
        return null
    }

    fun isAddableId(memId: String): Boolean {

        val addableTF = getMemberByMemId(memId)

        return addableTF == null
    }

    fun saveMember(){

        for ( member in members){
            mapper.writerWithDefaultPrettyPrinter().writeValue(File("data/MembersData/${member.memIndex}.json"),member)
        }

    }

    fun getSavedMember(){

        var filePath = "data/MembersData"

        var size = File(filePath).list().size

        for ( i in 1 .. size) {
            members.add(mapper.readValue<Member>(File("data/MembersData/${i}.json")))
        }

    }




}