Various improvements #17
|
@ -42,37 +42,29 @@ class TimetableParser(timetableURL: String? = null, htmlDoc: Document? = null) {
|
|||
val semaphore = Semaphore(3, 0)
|
||||
}
|
||||
|
||||
private val htmlDoc: Document? =
|
||||
htmlDoc
|
||||
?: if (timetableURL == null) {
|
||||
private val htmlDoc: Document? = htmlDoc ?: timetableURL?.let {
|
||||
hannesbraun marked this conversation as resolved
Outdated
|
||||
runBlocking {
|
||||
try {
|
||||
// Only allow sending a limited amount of requests at the same time
|
||||
semaphore.acquire()
|
||||
Jsoup.connect(timetableURL).get()
|
||||
} catch (gex: Exception) {
|
||||
logger.error("general TimetableParser error", gex)
|
||||
null
|
||||
} else {
|
||||
runBlocking {
|
||||
try {
|
||||
// Only allow sending a limited amount of requests at the same time
|
||||
semaphore.acquire()
|
||||
Jsoup.connect(timetableURL).get()
|
||||
} catch (gex: Exception) {
|
||||
logger.error("general TimetableParser error", gex)
|
||||
null
|
||||
} finally {
|
||||
semaphore.release()
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
semaphore.release()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* parse the timetable from the previously given url
|
||||
* the timetable is organised per row not per column;
|
||||
* Mon 1, Tue 1, Wed 1, Thur 1, Fri 1, Sat 1, Mon 2 and so on
|
||||
*/
|
||||
fun parseTimeTable(): TimetableWeek? {
|
||||
if (htmlDoc == null) {
|
||||
return null
|
||||
}
|
||||
|
||||
fun parseTimeTable(): TimetableWeek? = htmlDoc?.let {
|
||||
val timetableWeek = TimetableWeek()
|
||||
val rows = htmlDoc.select("table.timetable").select("tr[scope=\"row\"]")
|
||||
val rows = it.select("table.timetable").select("tr[scope=\"row\"]")
|
||||
|
||||
var sDay = -1
|
||||
var sRow = -1
|
||||
|
@ -141,12 +133,8 @@ class TimetableParser(timetableURL: String? = null, htmlDoc: Document? = null) {
|
|||
/**
|
||||
* parse the week number of the year for the timetable
|
||||
*/
|
||||
fun parseWeekNumberYear(): Int? {
|
||||
if (htmlDoc == null) {
|
||||
return null
|
||||
}
|
||||
|
||||
return htmlDoc.select("h1.timetable-caption").text().substringAfter("- ")
|
||||
fun parseWeekNumberYear(): Int? = htmlDoc?.let {
|
||||
it.select("h1.timetable-caption").text().substringAfter("- ")
|
||||
.substringBefore(".").replace(" ", "").toInt()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
please us
?.let { ... }
for null safety. Something like this:This should be fixed with
ca14a5d2f6