courses is now CourseList, added lessonSubjectList & lesson request
closes #1, #2
This commit is contained in:
parent
4313c78edf
commit
62ad7a3b36
@ -39,6 +39,7 @@ import java.net.URL
|
|||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
import kotlin.collections.HashSet
|
||||||
import kotlin.concurrent.scheduleAtFixedRate
|
import kotlin.concurrent.scheduleAtFixedRate
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@ -88,9 +89,15 @@ class APIController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("courses is replaced by courseList")
|
||||||
@RequestMapping("/courses")
|
@RequestMapping("/courses")
|
||||||
fun courses(): CoursesList {
|
fun courses(): CoursesList {
|
||||||
logger.info("courses request at ${LocalDateTime.now()}!")
|
return courseList()
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/courseList")
|
||||||
|
fun courseList(): CoursesList {
|
||||||
|
logger.info("courseList request at ${LocalDateTime.now()}!")
|
||||||
requestCount++
|
requestCount++
|
||||||
return CoursesList(CoursesMeta(coursesLastUpdate, coursesLinkList.size), coursesLinkList)
|
return CoursesList(CoursesMeta(coursesLastUpdate, coursesLinkList.size), coursesLinkList)
|
||||||
}
|
}
|
||||||
@ -109,8 +116,48 @@ class APIController {
|
|||||||
): TimetableCourseWeek {
|
): TimetableCourseWeek {
|
||||||
logger.info("timetable request at ${LocalDateTime.now()}!")
|
logger.info("timetable request at ${LocalDateTime.now()}!")
|
||||||
requestCount++
|
requestCount++
|
||||||
checkTimetableCourse(courseName, week) // check if we need to update and perform the update if so
|
return getTimetable(courseName, week)
|
||||||
return timetableList.stream().filter { x -> x.meta.courseName == courseName && x.meta.week == week }.findAny().orElse(null)
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/lessonSubjectList")
|
||||||
|
fun lessonSubjectList(
|
||||||
|
@RequestParam(value = "courseName", defaultValue = "AI4") courseName: String,
|
||||||
|
@RequestParam(value = "week", defaultValue = "0") week: Int
|
||||||
|
): HashSet<String> {
|
||||||
|
val lessonSubjectList = ArrayList<String>()
|
||||||
|
logger.info("lessonSubjectList request at ${LocalDateTime.now()}!")
|
||||||
|
requestCount++
|
||||||
|
|
||||||
|
// get every lesson subject for the given week
|
||||||
|
val flatMap = getTimetable(courseName, week).timetable.days.flatMap { it.timeslots.asIterable() }
|
||||||
|
flatMap.forEach {
|
||||||
|
it.stream().filter { x -> x.lessonSubject.isNotEmpty() }.findAny().ifPresent { x -> lessonSubjectList.add(x.lessonSubject) }
|
||||||
|
}
|
||||||
|
|
||||||
|
return HashSet(lessonSubjectList)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/lesson")
|
||||||
|
fun lesson(
|
||||||
|
@RequestParam(value = "courseName", defaultValue = "AI4") courseName: String,
|
||||||
|
@RequestParam(value = "lessonSubject", defaultValue = "Mathematik 4") lessonSubject: String,
|
||||||
|
@RequestParam(value = "week", defaultValue = "0") week: Int
|
||||||
|
): ArrayList<Lesson> {
|
||||||
|
val lessonList = ArrayList<Lesson>()
|
||||||
|
|
||||||
|
// get all lessons from the weeks timetable
|
||||||
|
val flatMap = getTimetable(courseName, week).timetable.days.flatMap { it.timeslots.asIterable() }
|
||||||
|
flatMap.forEach {
|
||||||
|
it.forEach { lesson ->
|
||||||
|
if(lesson.lessonSubject.contains(lessonSubject)) {
|
||||||
|
lessonList.add(lesson)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//it.stream().filter { x -> x.lessonSubject.contains(lessonSubject) }.findAny().ifPresent { x -> println("${x.lessonSubject}, ${x.lessonTeacher}") }
|
||||||
|
}
|
||||||
|
|
||||||
|
return lessonList
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/status")
|
@RequestMapping("/status")
|
||||||
@ -213,6 +260,11 @@ class APIController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getTimetable(courseName: String, week: Int): TimetableCourseWeek {
|
||||||
|
checkTimetableCourse(courseName, week) // check if we need to update and perform the update if so
|
||||||
|
return timetableList.stream().filter { x -> x.meta.courseName == courseName && x.meta.week == week }.findAny().orElse(null)
|
||||||
|
}
|
||||||
|
|
||||||
private fun initUpdates() = runBlocking {
|
private fun initUpdates() = runBlocking {
|
||||||
// get all courses on startup
|
// get all courses on startup
|
||||||
val jobCourseUpdate = GlobalScope.async{
|
val jobCourseUpdate = GlobalScope.async{
|
||||||
|
Loading…
Reference in New Issue
Block a user