package com.schneeloch.bostonbusmap_library.transit;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import com.google.common.base.Optional;
import com.schneeloch.bostonbusmap_library.data.BusLocation;
import com.schneeloch.bostonbusmap_library.data.Directions;
import com.schneeloch.bostonbusmap_library.data.IAlerts;
import com.schneeloch.bostonbusmap_library.data.ITransitDrawables;
import com.schneeloch.bostonbusmap_library.data.Locations;
import com.schneeloch.bostonbusmap_library.data.RouteConfig;
import com.schneeloch.bostonbusmap_library.data.RoutePool;
import com.schneeloch.bostonbusmap_library.data.Selection;
import com.schneeloch.bostonbusmap_library.data.StopLocation;
import com.schneeloch.bostonbusmap_library.data.TransitSourceTitles;
import com.schneeloch.bostonbusmap_library.data.VehicleLocations;
import com.schneeloch.bostonbusmap_library.database.Schema;
public interface TransitSource {
void refreshData(RouteConfig routeConfig, Selection selection,
int maxStops, double centerLatitude, double centerLongitude,
VehicleLocations busMapping,
RoutePool routePool, Directions directions, Locations locationsObj)
throws IOException, ParserConfigurationException, SAXException;
boolean hasPaths();
String searchForRoute(String indexingQuery, String lowercaseQuery);
ITransitDrawables getDrawables();
StopLocation createStop(float latitude, float longitude, String stopTag,
String stopTitle, String route, Optional<String> parent);
BusLocation createVehicleLocation(float latitude, float longitude, String id,
long lastFeedUpdateInMillis, Optional<Integer> heading,
String routeName, String headsign);
TransitSourceTitles getRouteTitles();
/**
* The order in which to load transit sources. Lower numbers go first. Must be unique!
* @return
*/
int getLoadOrder();
Schema.Routes.SourceId[] getTransitSourceIds();
/**
* Do we need to look at the Schema.Subway table to get branch
* and platform information?
*/
boolean requiresSubwayTable();
IAlerts getAlerts();
String getDescription();
}