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.Gson | ||||||
| import com.google.gson.reflect.TypeToken | 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( |     fun interface TimerFactory { | ||||||
|         "endless" to TimerFactory { EndlessTimerInfo(it.name, it.description) }, |         fun makeTimer(map: TimerJson) : TimerInfo | ||||||
|         "custom" to TimerFactory { CustomTimerInfo(it.name, it.description, it.studyTime) }, |     } | ||||||
|         "break" to TimerFactory { PomodoroTimerInfo( | 
 | ||||||
|  |     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.name, | ||||||
|             it.description, |             it.description, | ||||||
|             it.studyTime, |             it.studyTime, | ||||||
|             it.breakTime, |             it.breakTime, | ||||||
|             it.repeats |             it.repeats, | ||||||
|  |             it.id | ||||||
|         ) } |         ) } | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
|     private fun getTimer(timerJson: TimerJson): TimerInfo{ |     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> { |     fun convertToTimerInfoList(timerJsonList: List<TimerJson>): List<TimerInfo> { | ||||||
|         return a.map(this::getTimer) |         return timerJsonList.map(this::getTimer) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun jsonToTimerJsonList(json: String): List<TimerJson> { |     fun jsonToTimerJsonList(json: String): List<TimerJson> { | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 lbarraga
						lbarraga