From cf0327bc88958443d29a440790cf2572a4fba3e3 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 18 Mar 2019 16:13:13 +0100 Subject: [PATCH] added initial delay for scheduled updates --- build.gradle | 2 +- .../org/mosad/thecitadelofricks/APIController.kt | 13 +++++++++---- .../kotlin/org/mosad/thecitadelofricks/DataTypes.kt | 1 + .../thecitadelofricks/hsoparser/TimetableParser.kt | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index ad1a642..7daec88 100644 --- a/build.gradle +++ b/build.gradle @@ -39,4 +39,4 @@ compileTestKotlin { } group 'org.mosad' -version '1.0.1' +version '1.0.2' diff --git a/src/main/kotlin/org/mosad/thecitadelofricks/APIController.kt b/src/main/kotlin/org/mosad/thecitadelofricks/APIController.kt index 998d9b0..e8d8d73 100644 --- a/src/main/kotlin/org/mosad/thecitadelofricks/APIController.kt +++ b/src/main/kotlin/org/mosad/thecitadelofricks/APIController.kt @@ -47,6 +47,7 @@ class APIController { // Controller stuff var logger: Logger = LoggerFactory.getLogger(APIController::class.java) private val startTime = System.currentTimeMillis() / 1000 + private val softwareVersion = "1.0.2" private val apiVersion = "1.0.1" // hso parser links (hardcoded) @@ -66,19 +67,22 @@ class APIController { init { initUpdates() // without this 5-10 seconds after startup the response will be empty - // TODO we could use a first time delay + val currentTime = System.currentTimeMillis() + val delay24h = (86400000 - ((currentTime + 3600000) % 86400000)) + 60000 + val delay3h = (10800000 - ((currentTime + 3600000) % 10800000)) + 60000 + // update courses every 24 hours (time in ms) - Timer().scheduleAtFixedRate(0, 86400000) { + Timer().scheduleAtFixedRate(delay24h, 86400000) { asyncUpdateCourses() } // update courses every 3 hours (time in ms) - Timer().scheduleAtFixedRate(0, 10800000) { + Timer().scheduleAtFixedRate(delay3h, 10800000) { asyncUpdateMensa() } // update all already existing timetables every 3 hours (time in ms) - Timer().scheduleAtFixedRate(0, 10800000) { + Timer().scheduleAtFixedRate(delay3h, 10800000) { asyncUpdateTimetables() } } @@ -131,6 +135,7 @@ class APIController { LocalDateTime.now(), "$days days, $hours:$minutes", apiVersion, + softwareVersion, Date(coursesLastUpdate * 1000), Date(mensaLastUpdate * 1000), hsoCode, diff --git a/src/main/kotlin/org/mosad/thecitadelofricks/DataTypes.kt b/src/main/kotlin/org/mosad/thecitadelofricks/DataTypes.kt index 4c2f2c8..a4ce5e5 100644 --- a/src/main/kotlin/org/mosad/thecitadelofricks/DataTypes.kt +++ b/src/main/kotlin/org/mosad/thecitadelofricks/DataTypes.kt @@ -66,6 +66,7 @@ data class Status( val time: LocalDateTime, val uptime: String, val apiVersion: String, + val softwareVersion: String, val coursesLastUpdate: Date, val mensaLastUpdate: Date, val hsoResponseCode: Int, diff --git a/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/TimetableParser.kt b/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/TimetableParser.kt index 722cc4f..66d76f2 100644 --- a/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/TimetableParser.kt +++ b/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/TimetableParser.kt @@ -61,7 +61,7 @@ class TimetableParser { // adjust the following slot sDay++ sLesson = Lesson( - "$day.$rowIndex.$elementIndex", + "$day.$rowIndex.$elementIndex", // FIXME this is broken! element.select("div.lesson-subject").text(), element.select("div.lesson-teacher").text(), element.select("div.lesson-room").text(),