@ -27,6 +27,10 @@ import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.JsonParser
import com.google.gson.reflect.TypeToken
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.joinAll
import kotlinx.coroutines.launch
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
import org.mosad.seil0.projectlaogai.hsoparser.Course
import org.mosad.seil0.projectlaogai.hsoparser.MensaMenu
@ -53,7 +57,7 @@ class CacheController(cont: Context) {
// if a) it's monday and the last cache update was on sunday or b) the cache is older than 24hr, update blocking
if ( ( currentDay == Calendar . MONDAY && cal . get ( Calendar . DAY _OF _WEEK ) == Calendar . SUNDAY ) || ( currentTime - mensaMenu . meta . updateTime ) > 86400 ) {
println ( " update mensa blocking " )
TCoRAPIController . getMensa ( context ) . get ( )
GlobalScope . launch ( Dispatchers . Default ) { TCoRAPIController . getMensa ( context ) . join ( ) }
}
// check if we need to update the timetables before displaying them
@ -61,23 +65,29 @@ class CacheController(cont: Context) {
cal . time = Date ( timetables [ 0 ] . meta . updateTime * 1000 )
// if a) it`s monday and the last cache update was not on a sunday or b) the cache is older than 24hr, update blocking
if ( ( currentDay == Calendar . MONDAY && cal . get ( Calendar . DAY _OF _WEEK ) == Calendar . SUNDAY ) || ( currentTime - timetables [ 0 ] . meta . updateTime ) > 86400 ) {
if ( ( currentDay == Calendar . MONDAY && cal . get ( Calendar . DAY _OF _WEEK ) == Calendar . SUNDAY ) || ( currentTime - timetables [ 0 ] . meta . updateTime ) > 86400 ) {
println ( " updating timetable after sunday! " )
val jobA = TCoRAPIController . getTimetable ( cCourse . courseName , 0 , context )
val jobB = TCoRAPIController . getTimetable ( cCourse . courseName , 1 , context )
jobA . get ( )
jobB . get ( )
GlobalScope . launch ( Dispatchers . Default ) {
val threads = listOf (
TCoRAPIController . getTimetable ( cCourse . courseName , 0 , context ) ,
TCoRAPIController . getTimetable ( cCourse . courseName , 1 , context )
)
threads . joinAll ( )
}
TCoRAPIController . getTimetable ( cCourse . courseName , 0 , context )
TCoRAPIController . getTimetable ( cCourse . courseName , 1 , context )
}
// check if an update is necessary, not blocking
if ( currentTime - PreferencesController . coursesCacheTime > 86400 )
if ( currentTime - PreferencesController . coursesCacheTime > 86400 )
TCoRAPIController . getCoursesList ( context )
if ( currentTime - PreferencesController . mensaCacheTime > 10800 )
if ( currentTime - PreferencesController . mensaCacheTime > 10800 )
TCoRAPIController . getMensa ( context )
if ( currentTime - PreferencesController . timetableCacheTime > 10800 ) {
if ( currentTime - PreferencesController . timetableCacheTime > 10800 ) {
TCoRAPIController . getTimetable ( cCourse . courseName , 0 , context )
TCoRAPIController . getTimetable ( cCourse . courseName , 1 , context )
}
@ -99,13 +109,16 @@ class CacheController(cont: Context) {
// make sure the file exists
if ( ! file . exists ( ) )
TCoRAPIController . getCoursesList ( context ) . get ( )
GlobalScope . launch ( Dispatchers . Default ) { TCoRAPIController . getCoursesList ( context ) . join ( ) }
val fileReader = FileReader ( file )
val bufferedReader = BufferedReader ( fileReader )
val coursesObject = JsonParser . parseString ( bufferedReader . readLine ( ) ) . asJsonObject
coursesList = Gson ( ) . fromJson ( coursesObject . getAsJsonArray ( " courses " ) , object : TypeToken < List < Course > > ( ) { } . type )
coursesList = Gson ( ) . fromJson (
coursesObject . getAsJsonArray ( " courses " ) ,
object : TypeToken < List < Course > > ( ) { } . type
)
}
/ * *
@ -116,9 +129,8 @@ class CacheController(cont: Context) {
val file = File ( context . filesDir , " mensa.json " )
// make sure the file exists
if ( ! file . exists ( ) ) {
TCoRAPIController . getMensa ( context ) . get ( )
}
if ( ! file . exists ( ) )
GlobalScope . launch ( Dispatchers . Default ) { TCoRAPIController . getMensa ( context ) . join ( ) }
val fileReader = FileReader ( file )
val bufferedReader = BufferedReader ( fileReader )
@ -136,8 +148,11 @@ class CacheController(cont: Context) {
val file = File ( context . filesDir , " timetable- $courseName - $week .json " )
// make sure the file exists
if ( ! file . exists ( ) )
TCoRAPIController . getTimetable ( courseName , week , context ) . get ( )
if ( ! file . exists ( ) ) {
GlobalScope . launch ( Dispatchers . Default ) {
TCoRAPIController . getTimetable ( courseName , week , context ) . join ( )
}
}
val fileReader = FileReader ( file )
val bufferedReader = BufferedReader ( fileReader )