procrastinot-team/procrastinot

View on GitHub
app/src/main/java/com/github/mateo762/myapplication/room/HabitTypeConverter.kt

Summary

Maintainability
A
2 hrs
Test Coverage
A
100%
package com.github.mateo762.myapplication.room

import androidx.room.TypeConverter
import com.github.mateo762.myapplication.models.HabitEntity
import com.github.mateo762.myapplication.models.HabitImageEntity
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import java.lang.reflect.Type
import java.time.DayOfWeek

class HabitTypeConverter {
    private var gson = Gson()

    @TypeConverter
    fun stringToHabitEntity(data: String): List<HabitEntity> {
/*        if (data == null) {
            return Collections.emptyList()
        }*/
        val listType: Type = object : TypeToken<List<HabitEntity?>?>() {}.type
        return gson.fromJson(data, listType)
    }

    @TypeConverter
    fun habitEntityListToString(habitsList: List<HabitEntity?>?): String {
        return gson.toJson(habitsList)
    }

    @TypeConverter
    fun habitDaysToString(daysList: List<DayOfWeek?>?): String {
        return gson.toJson(daysList)
    }

    @TypeConverter
    fun stringToHabitDays(data: String): List<DayOfWeek>? {
        /*if (data == null) {
            return Collections.emptyList()
        }*/
        val listType: Type = object : TypeToken<List<DayOfWeek?>?>() {}.type
        return gson.fromJson(data, listType)
    }

    @TypeConverter
    fun habitImageEntityListToJson(habitImageEntityList: List<HabitImageEntity>?): String? {
        return gson.toJson(habitImageEntityList)
    }

    @TypeConverter
    fun jsonToHabitImageEntityList(json: String?): List<HabitImageEntity>? {
        if (json == null) return null
        val type = object : TypeToken<List<HabitImageEntity>>() {}.type
        return gson.fromJson(json, type)
    }

    @TypeConverter
    fun stringListToJson(stringList: List<String>?): String? {
        return gson.toJson(stringList)
    }

    @TypeConverter
    fun jsonToStringList(json: String?): List<String>? {
        if (json == null) return null
        val type = object : TypeToken<List<String>>() {}.type
        return gson.fromJson(json, type)
    }

}