fix warings in TCoRAPIController
This commit is contained in:
		| @ -32,6 +32,7 @@ import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion. | ||||
| import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime | ||||
| import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime | ||||
| import org.mosad.seil0.projectlaogai.hsoparser.CoursesList | ||||
| import org.mosad.seil0.projectlaogai.hsoparser.Lesson | ||||
| import org.mosad.seil0.projectlaogai.hsoparser.MensaMenu | ||||
| import org.mosad.seil0.projectlaogai.hsoparser.TimetableCourseWeek | ||||
| import java.io.BufferedWriter | ||||
| @ -49,29 +50,27 @@ class TCoRAPIController { | ||||
|          * 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): Job { | ||||
|             val url = URL("$tcorBaseURL/courseList") | ||||
|             val file = File(context.filesDir, "courses.json") | ||||
|  | ||||
|             try { | ||||
|                 // read data from the API | ||||
|                 val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) | ||||
|             return GlobalScope.launch(Dispatchers.IO) { | ||||
|                 try { | ||||
|                     // read data from the API | ||||
|                     val coursesObject = JSONObject(url.readText()) | ||||
|  | ||||
|                 // write the json object to a file | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write the json object to a file | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(coursesObject.toString()) | ||||
|                     writer.close() | ||||
|                 } | ||||
|  | ||||
|                 // update cache time | ||||
|                 coursesCacheTime = System.currentTimeMillis() / 1000 | ||||
|                 PreferencesController.save(context) | ||||
|             } catch (ex: Exception) { | ||||
|                 Log.e(className, "failed to get /courseList", ex) | ||||
|                     // update cache time | ||||
|                     coursesCacheTime = System.currentTimeMillis() / 1000 | ||||
|                     PreferencesController.save(context) | ||||
|                 } catch (ex: Exception) { | ||||
|                     Log.e(className, "failed to get /courseList", ex) | ||||
|  | ||||
|                 // write a empty file, since it is loaded later | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write a empty file, since it is loaded later | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(GsonBuilder().create().toJson(CoursesList())) | ||||
|                     writer.close() | ||||
| @ -83,29 +82,27 @@ class TCoRAPIController { | ||||
|          * 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 getMensaMenu(context: Context) = GlobalScope.launch { | ||||
|         fun getMensaMenu(context: Context): Job { | ||||
|             val url = URL("$tcorBaseURL/mensamenu") | ||||
|             val file = File(context.filesDir, "mensa.json") | ||||
|  | ||||
|             try { | ||||
|                 // read data from the API | ||||
|                 val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) | ||||
|             return GlobalScope.launch(Dispatchers.IO) { | ||||
|                 try { | ||||
|                     // read data from the API | ||||
|                     val mensaObject = JSONObject(url.readText()) | ||||
|  | ||||
|                 // write the json object to a file | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write the json object to a file | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(mensaObject.toString()) | ||||
|                     writer.close() | ||||
|                 } | ||||
|  | ||||
|                 // update cache time | ||||
|                 mensaCacheTime = System.currentTimeMillis() / 1000 | ||||
|                 PreferencesController.save(context) | ||||
|             } catch (ex: Exception) { | ||||
|                 Log.e(className, "failed to get /mensamenu", ex) | ||||
|                     // update cache time | ||||
|                     mensaCacheTime = System.currentTimeMillis() / 1000 | ||||
|                     PreferencesController.save(context) | ||||
|                 } catch (ex: Exception) { | ||||
|                     Log.e(className, "failed to get /mensamenu", ex) | ||||
|  | ||||
|                 // write a empty file, since it is loaded later | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write a empty file, since it is loaded later | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(GsonBuilder().create().toJson(MensaMenu())) | ||||
|                     writer.close() | ||||
| @ -118,29 +115,27 @@ class TCoRAPIController { | ||||
|          * 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): Job { | ||||
|             val url = URL("$tcorBaseURL/timetable?courseName=$courseName&week=$week") | ||||
|             val file = File(context.filesDir, "timetable-$courseName-$week.json") | ||||
|  | ||||
|             try { | ||||
|                 // read data from the API | ||||
|                 val timetableObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) | ||||
|             return GlobalScope.launch(Dispatchers.IO) { | ||||
|                 try { | ||||
|                     // read data from the API | ||||
|                     val timetableObject = JSONObject(url.readText()) | ||||
|  | ||||
|                 // write the json object to a file | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write the json object to a file | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(timetableObject.toString()) | ||||
|                     writer.close() | ||||
|                 } | ||||
|  | ||||
|                 // update cache time | ||||
|                 timetableCacheTime = System.currentTimeMillis() / 1000 | ||||
|                 PreferencesController.save(context) | ||||
|             } catch (ex: Exception) { | ||||
|                 Log.e(className, "failed to get /timetable", ex) | ||||
|                     // update cache time | ||||
|                     timetableCacheTime = System.currentTimeMillis() / 1000 | ||||
|                     PreferencesController.save(context) | ||||
|                 } catch (ex: Exception) { | ||||
|                     Log.e(className, "failed to get /timetable", ex) | ||||
|  | ||||
|                 // write a empty file, since it is loaded later | ||||
|                 withContext(Dispatchers.IO) { | ||||
|                     // write a empty file, since it is loaded later | ||||
|                     val writer = BufferedWriter(FileWriter(file)) | ||||
|                     writer.write(GsonBuilder().create().toJson(TimetableCourseWeek())) | ||||
|                     writer.close() | ||||
| @ -150,7 +145,9 @@ class TCoRAPIController { | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * TODO | ||||
|          * Get all lessons for a course at one week (async) | ||||
|          * @param courseName the course name | ||||
|          * @param week the week to look up | ||||
|          */ | ||||
|         fun getLessonSubjectListAsync(courseName: String, week: Int): Deferred<ArrayList<String>> { | ||||
|             val url = URL("$tcorBaseURL/lessonSubjectList?courseName=$courseName&week=$week") | ||||
| @ -159,6 +156,20 @@ class TCoRAPIController { | ||||
|                 Gson().fromJson(url.readText(), ArrayList<String>()::class.java) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Get all occurrences of a lesson for a course at one week | ||||
|          * @param courseName the course name | ||||
|          * @param lessonSubject the subject to search for | ||||
|          * @param week the week to look up | ||||
|          */ | ||||
|         fun getLessonsAsync(courseName: String, lessonSubject: String, week: Int): Deferred<ArrayList<Lesson>> { | ||||
|             val url = URL("$tcorBaseURL/lessons?courseName=$courseName&lessonSubject=$lessonSubject&week=$week") | ||||
|  | ||||
|             return GlobalScope.async { | ||||
|                 Gson().fromJson(url.readText(), ArrayList<Lesson>()::class.java) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -47,12 +47,13 @@ class AddLessonDialog(_context: Context) { | ||||
|     private val context = _context | ||||
|  | ||||
|     private lateinit var spinnerCourses: Spinner | ||||
|     private lateinit var spinnerLessons: Spinner | ||||
|     private lateinit var spinnerSubjects: Spinner | ||||
|  | ||||
|     private val lessonSubjectsList = ArrayList<String>() | ||||
|     private val subjectsList = ArrayList<String>() | ||||
|     private val courseNamesList = getCourseNames() | ||||
|  | ||||
|     var selectedCourse = "" | ||||
|     var selectedSubject = "" | ||||
|  | ||||
|     /** | ||||
|      * create a new AddLessonDialog (BottomSheet) | ||||
| @ -64,22 +65,29 @@ class AddLessonDialog(_context: Context) { | ||||
|             .customView(R.layout.dialog_add_lesson) | ||||
|             .setPeekHeight(900) | ||||
|             .positiveButton(R.string.add) { | ||||
|                 println("add course \"$selectedCourse\"") | ||||
|                 println("add lesson \"$selectedCourse: $selectedSubject\"") | ||||
|                 // TODO call add function | ||||
|                 val test = runBlocking { | ||||
|                      TCoRAPIController.getLessonsAsync(selectedCourse, selectedSubject, 0).await() | ||||
|                 } | ||||
|  | ||||
|                 println(test.toString()) | ||||
|             } | ||||
|             .negativeButton(R.string.cancel) {  } | ||||
|  | ||||
|         // initialize the spinners | ||||
|         spinnerCourses = dialog.getCustomView().findViewById(R.id.spinner_Courses) | ||||
|         spinnerLessons = dialog.getCustomView().findViewById(R.id.spinner_Lessons) | ||||
|         spinnerSubjects = dialog.getCustomView().findViewById(R.id.spinner_Lessons) | ||||
|  | ||||
|         setArrayAdapter(spinnerCourses, courseNamesList) | ||||
|         val lessonsAdapter = setArrayAdapter(spinnerLessons, lessonSubjectsList) | ||||
|         val lessonsAdapter = setArrayAdapter(spinnerSubjects, subjectsList) | ||||
|  | ||||
|         spinnerCourses.setSelection(0,false) // don't call onItemSelected() on spinnerCourses.onItemSelectedListener | ||||
|         spinnerCourses.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { | ||||
|             override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) { | ||||
|                 selectedCourse = parent.getItemAtPosition(pos).toString() | ||||
|  | ||||
|                 // TODO show loading dialog while loading | ||||
|                 val lessonSubjects = runBlocking { | ||||
|                     TCoRAPIController.getLessonSubjectListAsync(parent.getItemAtPosition(pos).toString(), 0).await() | ||||
|                 } | ||||
| @ -94,10 +102,10 @@ class AddLessonDialog(_context: Context) { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         spinnerLessons.setSelection(0,false) // don't call onItemSelected() on spinnerCourses.onItemSelectedListener | ||||
|         spinnerLessons.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { | ||||
|         spinnerSubjects.setSelection(0,false) // don't call onItemSelected() on spinnerCourses.onItemSelectedListener | ||||
|         spinnerSubjects.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { | ||||
|             override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) { | ||||
|                 selectedCourse = parent.getItemAtPosition(pos).toString() | ||||
|                 selectedSubject = parent.getItemAtPosition(pos).toString() | ||||
|             } | ||||
|  | ||||
|             override fun onNothingSelected(parent: AdapterView<*>) { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user