add courses to addLesson Dialog, read lessonSubjects from tcor
This commit is contained in:
		| @ -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 ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || (currentTime - mensaMenu.meta.updateTime) > 86400) { | ||||
|            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 | ||||
| @ -84,7 +84,7 @@ class CacheController(cont: Context) { | ||||
|             TCoRAPIController.getCoursesList(context) | ||||
|  | ||||
|         if (currentTime - PreferencesController.mensaCacheTime > 10800) | ||||
|             TCoRAPIController.getMensa(context) | ||||
|             TCoRAPIController.getMensaMenu(context) | ||||
|  | ||||
|         if (currentTime - PreferencesController.timetableCacheTime > 10800) { | ||||
|             TCoRAPIController.getTimetable(cCourse.courseName, 0, context) | ||||
| @ -129,7 +129,7 @@ class CacheController(cont: Context) { | ||||
|  | ||||
|             // make sure the file exists | ||||
|             if (!file.exists()) | ||||
|                 runBlocking { TCoRAPIController.getMensa(context).join() } | ||||
|                 runBlocking { TCoRAPIController.getMensaMenu(context).join() } | ||||
|  | ||||
|             val fileReader = FileReader(file) | ||||
|             val bufferedReader = BufferedReader(fileReader) | ||||
|  | ||||
| @ -24,11 +24,9 @@ package org.mosad.seil0.projectlaogai.controller | ||||
|  | ||||
| import android.content.Context | ||||
| import android.util.Log | ||||
| import com.google.gson.Gson | ||||
| import com.google.gson.GsonBuilder | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.GlobalScope | ||||
| import kotlinx.coroutines.launch | ||||
| import kotlinx.coroutines.withContext | ||||
| import kotlinx.coroutines.* | ||||
| import org.json.JSONObject | ||||
| import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime | ||||
| import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime | ||||
| @ -48,7 +46,8 @@ class TCoRAPIController { | ||||
|         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 { | ||||
|             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 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 { | ||||
|             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) { | ||||
|         // 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!!) | ||||
|  | ||||
|         withContext(Dispatchers.Main) { | ||||
|  | ||||
| @ -22,12 +22,14 @@ | ||||
|  | ||||
| package org.mosad.seil0.projectlaogai.fragments | ||||
|  | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| import android.widget.AdapterView | ||||
| import android.widget.AdapterView.OnItemSelectedListener | ||||
| import android.widget.ArrayAdapter | ||||
| import android.widget.ScrollView | ||||
| import android.widget.Spinner | ||||
| import androidx.fragment.app.Fragment | ||||
| @ -41,11 +43,15 @@ import kotlinx.android.synthetic.main.fragment_timetable.* | ||||
| import kotlinx.coroutines.* | ||||
| import org.mosad.seil0.projectlaogai.R | ||||
| 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.PreferencesController.Companion.cCourse | ||||
| 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.uicomponents.DayCardView | ||||
| import java.util.stream.Collectors | ||||
|  | ||||
| /** | ||||
|  * The timetable controller class | ||||
| @ -178,9 +184,34 @@ class TimeTableFragment : Fragment() { | ||||
|         val spinnerCourses: Spinner = dialog.getCustomView().findViewById(R.id.spinner_Courses) | ||||
|         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 { | ||||
|             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<*>) { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user