converter to convert TimerJson to TimerInfo
This commit is contained in:
parent
ce57425957
commit
505f5c882a
1 changed files with 33 additions and 9 deletions
|
@ -4,26 +4,50 @@ import be.ugent.sel.studeez.data.local.models.timer_info.*
|
|||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
|
||||
class JsonToTimerConverter {
|
||||
/**
|
||||
* Wordt gebruikt door de ConfigurationService en door de TimerDAO.
|
||||
*
|
||||
* ConfigurationService: configuration wordt gefetched als een json-string,
|
||||
* die wordt omgezet naar een TimerJson, die hier wordt omgezet naar de juiste TimerInfo
|
||||
*
|
||||
* timerDAO: Timers worden direct naar TimerJson gefetched, die hier ook worden omgezet naar
|
||||
* de juiste timerInfo
|
||||
*/
|
||||
class ToTimerConverter {
|
||||
|
||||
private val timerInfoMap: Map<String, TimerFactory> = mapOf(
|
||||
"endless" to TimerFactory { EndlessTimerInfo(it.name, it.description) },
|
||||
"custom" to TimerFactory { CustomTimerInfo(it.name, it.description, it.studyTime) },
|
||||
"break" to TimerFactory { PomodoroTimerInfo(
|
||||
fun interface TimerFactory {
|
||||
fun makeTimer(map: TimerJson) : TimerInfo
|
||||
}
|
||||
|
||||
private val timerInfoMap: Map<TimerType, TimerFactory> = mapOf(
|
||||
TimerType.ENDLESS to TimerFactory { EndlessTimerInfo(
|
||||
it.name,
|
||||
it.description,
|
||||
it.id
|
||||
) },
|
||||
TimerType.CUSTOM to TimerFactory { CustomTimerInfo(
|
||||
it.name,
|
||||
it.description,
|
||||
it.studyTime,
|
||||
it.id
|
||||
) },
|
||||
TimerType.BREAK to TimerFactory { BreakTimerInfo(
|
||||
it.name,
|
||||
it.description,
|
||||
it.studyTime,
|
||||
it.breakTime,
|
||||
it.repeats
|
||||
it.repeats,
|
||||
it.id
|
||||
) }
|
||||
)
|
||||
|
||||
private fun getTimer(timerJson: TimerJson): TimerInfo{
|
||||
return timerInfoMap.getValue(timerJson.type).makeTimer(timerJson)
|
||||
val type: TimerType = TimerType.valueOf(timerJson.type.uppercase())
|
||||
return timerInfoMap.getValue(type).makeTimer(timerJson)
|
||||
}
|
||||
|
||||
fun convertToTimerInfoList(a: List<TimerJson>): List<TimerInfo> {
|
||||
return a.map(this::getTimer)
|
||||
fun convertToTimerInfoList(timerJsonList: List<TimerJson>): List<TimerInfo> {
|
||||
return timerJsonList.map(this::getTimer)
|
||||
}
|
||||
|
||||
fun jsonToTimerJsonList(json: String): List<TimerJson> {
|
||||
|
|
Reference in a new issue