Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/backend/mato/MatoAPIFetcher.kt
Show All 31 Lines | |||||
open class MatoAPIFetcher(val minNumPassaggi: Int) : ArrivalsFetcher { | open class MatoAPIFetcher(val minNumPassaggi: Int) : ArrivalsFetcher { | ||||
var appContext: Context? = null | var appContext: Context? = null | ||||
set(value) { | set(value) { | ||||
field = value!!.applicationContext | field = value!!.applicationContext | ||||
} | } | ||||
constructor(): this(3) | constructor(): this(2) | ||||
override fun ReadArrivalTimesAll(stopID: String?, res: AtomicReference<Fetcher.Result>?): Palina { | override fun ReadArrivalTimesAll(stopID: String?, res: AtomicReference<Fetcher.Result>?): Palina { | ||||
stopID!! | stopID!! | ||||
val future = RequestFuture.newFuture<Palina>() | val future = RequestFuture.newFuture<Palina>() | ||||
val now = Calendar.getInstance().time | val now = Calendar.getInstance().time | ||||
var numMinutes = 30 | var numMinutes = 15 | ||||
var palina = Palina(stopID) | var palina = Palina(stopID) | ||||
var numPassaggi = 0 | var numPassaggi = 0 | ||||
var trials = 0 | var trials = 0 | ||||
var numDepartures = 5 | |||||
while (numPassaggi < minNumPassaggi && trials < 4) { | while (numPassaggi < minNumPassaggi && trials < 4) { | ||||
numDepartures+=5 | |||||
numMinutes += 15 | numMinutes += 15 | ||||
val request = MapiArrivalRequest(stopID, now, numMinutes * 60, 10, res, future, future) | val request = MapiArrivalRequest(stopID, now, numMinutes * 60, numDepartures, res, future, future) | ||||
if (appContext == null || res == null) { | if (appContext == null || res == null) { | ||||
Log.e("BusTO:MatoAPIFetcher", "ERROR: Given null context or null result ref") | Log.e("BusTO:MatoAPIFetcher", "ERROR: Given null context or null result ref") | ||||
return Palina(stopID) | return Palina(stopID) | ||||
} | } | ||||
val requestQueue = NetworkVolleyManager.getInstance(appContext).requestQueue | val requestQueue = NetworkVolleyManager.getInstance(appContext).requestQueue | ||||
request.setTag(getVolleyReqTag(QueryType.ARRIVALS)) | request.setTag(getVolleyReqTag(QueryType.ARRIVALS)) | ||||
requestQueue.add(request) | requestQueue.add(request) | ||||
try { | try { | ||||
val palinaResult = future.get(5, TimeUnit.SECONDS) | val palinaResult = future.get(5, TimeUnit.SECONDS) | ||||
if (palinaResult!=null) { | if (palinaResult!=null) { | ||||
palina = palinaResult | palina = palinaResult | ||||
numPassaggi = palina.totalNumberOfPassages | numPassaggi = palina.minNumberOfPassages | ||||
} | } | ||||
} catch (e: InterruptedException) { | } catch (e: InterruptedException) { | ||||
e.printStackTrace() | e.printStackTrace() | ||||
res.set(Fetcher.Result.PARSER_ERROR) | res.set(Fetcher.Result.PARSER_ERROR) | ||||
} catch (e: ExecutionException) { | } catch (e: ExecutionException) { | ||||
e.printStackTrace() | e.printStackTrace() | ||||
if (res.get() == Fetcher.Result.OK) | if (res.get() == Fetcher.Result.OK) | ||||
res.set(Fetcher.Result.SERVER_ERROR) | res.set(Fetcher.Result.SERVER_ERROR) | ||||
▲ Show 20 Lines • Show All 177 Lines • ▼ Show 20 Lines | open class MatoAPIFetcher(val minNumPassaggi: Int) : ArrivalsFetcher { | ||||
} | } | ||||
enum class QueryType { | enum class QueryType { | ||||
ARRIVALS, ALL_STOPS | ARRIVALS, ALL_STOPS | ||||
} | } | ||||
} | } | ||||
No newline at end of file | No newline at end of file |
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register