add courses to addLesson Dialog, read lessonSubjects from tcor
This commit is contained in:
parent
1ba3f1fa87
commit
34a68ff75d
|
@ -56,7 +56,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 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) {
|
if ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || (currentTime - mensaMenu.meta.updateTime) > 86400) {
|
||||||
Log.i(className, "update mensa blocking")
|
Log.i(className, "update mensa blocking")
|
||||||
GlobalScope.launch(Dispatchers.Default) { TCoRAPIController.getMensa(context).join() }
|
GlobalScope.launch(Dispatchers.Default) { TCoRAPIController.getMensaMenu(context).join() }
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if we need to update the timetables before displaying them
|
// check if we need to update the timetables before displaying them
|
||||||
|
@ -84,7 +84,7 @@ class CacheController(cont: Context) {
|
||||||
TCoRAPIController.getCoursesList(context)
|
TCoRAPIController.getCoursesList(context)
|
||||||
|
|
||||||
if (currentTime - PreferencesController.mensaCacheTime > 10800)
|
if (currentTime - PreferencesController.mensaCacheTime > 10800)
|
||||||
TCoRAPIController.getMensa(context)
|
TCoRAPIController.getMensaMenu(context)
|
||||||
|
|
||||||
if (currentTime - PreferencesController.timetableCacheTime > 10800) {
|
if (currentTime - PreferencesController.timetableCacheTime > 10800) {
|
||||||
TCoRAPIController.getTimetable(cCourse.courseName, 0, context)
|
TCoRAPIController.getTimetable(cCourse.courseName, 0, context)
|
||||||
|
@ -129,7 +129,7 @@ class CacheController(cont: Context) {
|
||||||
|
|
||||||
// make sure the file exists
|
// make sure the file exists
|
||||||
if (!file.exists())
|
if (!file.exists())
|
||||||
runBlocking { TCoRAPIController.getMensa(context).join() }
|
runBlocking { TCoRAPIController.getMensaMenu(context).join() }
|
||||||
|
|
||||||
val fileReader = FileReader(file)
|
val fileReader = FileReader(file)
|
||||||
val bufferedReader = BufferedReader(fileReader)
|
val bufferedReader = BufferedReader(fileReader)
|
||||||
|
|
|
@ -24,11 +24,9 @@ package org.mosad.seil0.projectlaogai.controller
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import com.google.gson.Gson
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime
|
||||||
|
@ -48,7 +46,8 @@ class TCoRAPIController {
|
||||||
private const val tcorBaseURL = "https://tcor.mosad.xyz"
|
private const val tcorBaseURL = "https://tcor.mosad.xyz"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the json object from tcor api and write it as file (cache)
|
* Get a array of all currently available courses at the tcor API.
|
||||||
|
* Read the json object from tcor api and write it as file (cache).
|
||||||
*/
|
*/
|
||||||
fun getCoursesList(context: Context) = GlobalScope.launch {
|
fun getCoursesList(context: Context) = GlobalScope.launch {
|
||||||
val url = URL("$tcorBaseURL/courseList")
|
val url = URL("$tcorBaseURL/courseList")
|
||||||
|
@ -81,9 +80,10 @@ class TCoRAPIController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the json object from tcor api and write it as file (cache)
|
* Get this and next weeks mensa menus from the tcor API.
|
||||||
|
* Read the json object from tcor api and write it as file (cache).
|
||||||
*/
|
*/
|
||||||
fun getMensa(context: Context) = GlobalScope.launch {
|
fun getMensaMenu(context: Context) = GlobalScope.launch {
|
||||||
val url = URL("$tcorBaseURL/mensamenu")
|
val url = URL("$tcorBaseURL/mensamenu")
|
||||||
val file = File(context.filesDir, "mensa.json")
|
val file = File(context.filesDir, "mensa.json")
|
||||||
|
|
||||||
|
@ -115,7 +115,8 @@ class TCoRAPIController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the json object from tcor api and write it as file (cache)
|
* Get the timetable for @param courseName at week @param week
|
||||||
|
* Read the json object from tcor api and write it as file (cache).
|
||||||
*/
|
*/
|
||||||
fun getTimetable(courseName: String, week: Int, context: Context) = GlobalScope.launch {
|
fun getTimetable(courseName: String, week: Int, context: Context) = GlobalScope.launch {
|
||||||
val url = URL("$tcorBaseURL/timetable?courseName=$courseName&week=$week")
|
val url = URL("$tcorBaseURL/timetable?courseName=$courseName&week=$week")
|
||||||
|
@ -147,6 +148,19 @@ class TCoRAPIController {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
|
fun getLessonSubjectList(courseName: String, week: Int): Deferred<Array<String>> {
|
||||||
|
val url = URL("$tcorBaseURL/lessonSubjectList?courseName=$courseName&week=$week")
|
||||||
|
|
||||||
|
return GlobalScope.async {
|
||||||
|
println(courseName)
|
||||||
|
println(url.readText())
|
||||||
|
Gson().fromJson(url.readText(), Array<String>::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -124,7 +124,7 @@ class MensaFragment : Fragment() {
|
||||||
*/
|
*/
|
||||||
private fun updateMensaScreen() = GlobalScope.launch(Dispatchers.Default) {
|
private fun updateMensaScreen() = GlobalScope.launch(Dispatchers.Default) {
|
||||||
// update the cache
|
// update the cache
|
||||||
TCoRAPIController.getMensa(context!!).join() // blocking since we want the new data
|
TCoRAPIController.getMensaMenu(context!!).join() // blocking since we want the new data
|
||||||
CacheController.readMensa(context!!)
|
CacheController.readMensa(context!!)
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
|
|
|
@ -22,12 +22,14 @@
|
||||||
|
|
||||||
package org.mosad.seil0.projectlaogai.fragments
|
package org.mosad.seil0.projectlaogai.fragments
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.AdapterView.OnItemSelectedListener
|
import android.widget.AdapterView.OnItemSelectedListener
|
||||||
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.ScrollView
|
import android.widget.ScrollView
|
||||||
import android.widget.Spinner
|
import android.widget.Spinner
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
@ -41,11 +43,15 @@ import kotlinx.android.synthetic.main.fragment_timetable.*
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import org.mosad.seil0.projectlaogai.R
|
import org.mosad.seil0.projectlaogai.R
|
||||||
import org.mosad.seil0.projectlaogai.controller.CacheController
|
import org.mosad.seil0.projectlaogai.controller.CacheController
|
||||||
|
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.coursesList
|
||||||
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables
|
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
|
||||||
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
|
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
|
||||||
|
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController.Companion.getLessonSubjectList
|
||||||
|
import org.mosad.seil0.projectlaogai.hsoparser.Course
|
||||||
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
|
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
|
||||||
import org.mosad.seil0.projectlaogai.uicomponents.DayCardView
|
import org.mosad.seil0.projectlaogai.uicomponents.DayCardView
|
||||||
|
import java.util.stream.Collectors
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The timetable controller class
|
* The timetable controller class
|
||||||
|
@ -178,9 +184,34 @@ class TimeTableFragment : Fragment() {
|
||||||
val spinnerCourses: Spinner = dialog.getCustomView().findViewById(R.id.spinner_Courses)
|
val spinnerCourses: Spinner = dialog.getCustomView().findViewById(R.id.spinner_Courses)
|
||||||
val spinnerLessons: Spinner = dialog.getCustomView().findViewById(R.id.spinner_Lessons)
|
val spinnerLessons: Spinner = dialog.getCustomView().findViewById(R.id.spinner_Lessons)
|
||||||
|
|
||||||
|
|
||||||
|
val field1List: List<String>
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
field1List = coursesList.stream().map(Course::courseName).collect(Collectors.toList())
|
||||||
|
} else {
|
||||||
|
field1List = ArrayList()
|
||||||
|
coursesList.forEach { course ->
|
||||||
|
field1List.add(course.courseName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayAdapter(
|
||||||
|
context!!,
|
||||||
|
android.R.layout.simple_spinner_item,
|
||||||
|
field1List
|
||||||
|
).also { adapter ->
|
||||||
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||||
|
spinnerCourses.adapter = adapter
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME onItemSelectedListener is called on dialog.show
|
||||||
spinnerCourses.onItemSelectedListener = object : OnItemSelectedListener {
|
spinnerCourses.onItemSelectedListener = object : OnItemSelectedListener {
|
||||||
override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
|
override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
|
||||||
println(parent.getItemAtPosition(pos))
|
println("onItemSelected: ${parent.getItemAtPosition(pos)}")
|
||||||
|
|
||||||
|
// TODO get Lessons
|
||||||
|
val lessonSubjects = getLessonSubjectList(parent.getItemAtPosition(pos).toString(), 0)
|
||||||
|
println(lessonSubjects)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNothingSelected(parent: AdapterView<*>) {
|
override fun onNothingSelected(parent: AdapterView<*>) {
|
||||||
|
|
Loading…
Reference in New Issue