package org.mtransit.android.task;
import java.util.ArrayList;
import org.mtransit.android.commons.SqlUtils;
import org.mtransit.android.commons.provider.GTFSProviderContract;
import org.mtransit.android.commons.provider.POIProviderContract;
import org.mtransit.android.data.DataSourceManager;
import org.mtransit.android.data.POIManager;
import android.content.Context;
public class RTSTripStopsLoader extends MTAsyncTaskLoaderV4<ArrayList<POIManager>> {
private static final String TAG = RTSAgencyRoutesLoader.class.getSimpleName();
@Override
public String getLogTag() {
return TAG;
}
private long tripId;
private ArrayList<POIManager> pois;
private String authority;
public RTSTripStopsLoader(Context context, long tripId, String authority) {
super(context);
this.tripId = tripId;
this.authority = authority;
}
@Override
public ArrayList<POIManager> loadInBackgroundMT() {
if (this.pois != null) {
return this.pois;
}
this.pois = new ArrayList<POIManager>();
POIProviderContract.Filter poiFilter = POIProviderContract.Filter.getNewSqlSelectionFilter(SqlUtils.getWhereEquals(
GTFSProviderContract.RouteTripStopColumns.T_TRIP_K_ID, this.tripId));
poiFilter.addExtra(POIProviderContract.POI_FILTER_EXTRA_SORT_ORDER, //
SqlUtils.getSortOrderAscending(GTFSProviderContract.RouteTripStopColumns.T_TRIP_STOPS_K_STOP_SEQUENCE));
this.pois = DataSourceManager.findPOIs(getContext(), this.authority, poiFilter);
return pois;
}
@Override
protected void onStartLoading() {
super.onStartLoading();
if (this.pois != null) {
deliverResult(this.pois);
}
if (this.pois == null) {
forceLoad();
}
}
@Override
protected void onStopLoading() {
super.onStopLoading();
cancelLoad();
}
@Override
public void deliverResult(ArrayList<POIManager> data) {
this.pois = data;
if (isStarted()) {
super.deliverResult(data);
}
}
}