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.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.RouteTitles;
import com.schneeloch.bostonbusmap_library.data.Selection;
import com.schneeloch.bostonbusmap_library.data.StopLocation;
import com.schneeloch.bostonbusmap_library.data.VehicleLocations;
import com.schneeloch.bostonbusmap_library.database.Schema;
import com.schneeloch.bostonbusmap_library.provider.IDatabaseAgent;
public interface ITransitSystem {
public abstract void setDefaultTransitSource(ITransitDrawables busDrawables,
ITransitDrawables subwayDrawables,
ITransitDrawables commuterRailDrawables,
ITransitDrawables hubwayDrawables,
IDatabaseAgent databaseAgent);
public abstract TransitSource getDefaultTransitSource();
public abstract TransitSource getTransitSource(String routeToUpdate);
public abstract RouteTitles getRouteKeysToTitles();
public abstract void refreshData(RouteConfig routeConfig,
Selection selection, int maxStops, double centerLatitude,
double centerLongitude,
VehicleLocations busMapping,
RoutePool routePool, Directions directions, Locations locations)
throws IOException, ParserConfigurationException, SAXException;
public abstract String searchForRoute(String indexingQuery,
String lowercaseQuery);
public abstract StopLocation createStop(float latitude, float longitude,
String stopTag, String stopTitle,
String route, Optional<String> parent);
IAlerts getAlerts();
public void startObtainAlerts(IDatabaseAgent databaseAgent, Runnable runnable);
TransitSource getTransitSourceByRouteType(Schema.Routes.SourceId routeType);
/**
* Do we know anything about vehicles for a particular transit source type
* @param transitSourceType
* @return
*/
boolean hasVehicles(Schema.Routes.SourceId transitSourceType);
}