/* * Copyright (c) 2015 Washington State Department of Transportation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/> * */ package gov.wa.wsdot.mobile.client.service; import com.google.code.gwt.database.client.GenericRow; import com.google.code.gwt.database.client.service.*; import gov.wa.wsdot.mobile.client.service.WSDOTContract.*; import gov.wa.wsdot.mobile.shared.*; import java.util.List; @Connection(name="wsdot", version="", description="WSDOT Mobile App Database", maxsize=2000000) public interface WSDOTDataService extends DataService { interface Tables { String CACHES = "caches"; String CAMERAS = "cameras"; String HIGHWAY_ALERTS = "highway_alerts"; String MOUNTAIN_PASSES = "mountain_passes"; String TRAVEL_TIMES = "travel_times"; String FERRIES_SCHEDULES = "ferries_schedules"; String FERRIES_TERMINAL_SAILING_SPACE = "ferries_terminal_sailing_space"; String BORDER_WAIT = "border_wait"; String MAP_LOCATION = "map_location"; } /** * Create initial table structures in database. * * @param callback */ @Update("CREATE TABLE IF NOT EXISTS " + Tables.CACHES + " (" + CachesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + CachesColumns.CACHE_TABLE_NAME + " TEXT," + CachesColumns.CACHE_LAST_UPDATED + " INTEGER)") void createCachesTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.CAMERAS + " (" + CamerasColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + CamerasColumns.CAMERA_ID + " INTEGER," + CamerasColumns.CAMERA_TITLE + " TEXT," + CamerasColumns.CAMERA_URL + " TEXT," + CamerasColumns.CAMERA_LATITUDE + " REAL," + CamerasColumns.CAMERA_LONGITUDE + " REAL," + CamerasColumns.CAMERA_HAS_VIDEO + " INTEGER NOT NULL default 0," + CamerasColumns.CAMERA_ROAD_NAME + " TEXT," + CamerasColumns.CAMERA_IS_STARRED + " INTEGER NOT NULL default 0)") void createCamerasTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.HIGHWAY_ALERTS + " (" + HighwayAlertsColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + HighwayAlertsColumns.HIGHWAY_ALERT_ID + " INTEGER," + HighwayAlertsColumns.HIGHWAY_ALERT_HEADLINE + " TEXT," + HighwayAlertsColumns.HIGHWAY_ALERT_LATITUDE + " REAL," + HighwayAlertsColumns.HIGHWAY_ALERT_LONGITUDE + " REAL," + HighwayAlertsColumns.HIGHWAY_ALERT_CATEGORY + " TEXT," + HighwayAlertsColumns.HIGHWAY_ALERT_PRIORITY + " TEXT," + HighwayAlertsColumns.HIGHWAY_ALERT_ROAD_NAME + " TEXT," + HighwayAlertsColumns.HIGHWAY_ALERT_LAST_UPDATED + " TEXT)") void createHighwayAlertsTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.MOUNTAIN_PASSES + " (" + MountainPassesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + MountainPassesColumns.MOUNTAIN_PASS_ID + " INTEGER," + MountainPassesColumns.MOUNTAIN_PASS_NAME + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_WEATHER_CONDITION + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_ELEVATION + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_TRAVEL_ADVISORY_ACTIVE + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_ROAD_CONDITION + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_TEMPERATURE + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_DATE_UPDATED + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_ONE + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_ONE_DIRECTION + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_TWO + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_TWO_DIRECTION + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_CAMERA + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_FORECAST + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_WEATHER_ICON + " TEXT," + MountainPassesColumns.MOUNTAIN_PASS_IS_STARRED + " INTEGER NOT NULL default 0)") void createMountainPassesTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.TRAVEL_TIMES + " (" + TravelTimesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + TravelTimesColumns.TRAVEL_TIMES_ID + " INTEGER," + TravelTimesColumns.TRAVEL_TIMES_TITLE + " TEXT," + TravelTimesColumns.TRAVEL_TIMES_UPDATED + " TEXT," + TravelTimesColumns.TRAVEL_TIMES_DISTANCE + " TEXT," + TravelTimesColumns.TRAVEL_TIMES_AVERAGE + " INTEGER," + TravelTimesColumns.TRAVEL_TIMES_CURRENT + " INTEGER," + TravelTimesColumns.TRAVEL_TIMES_IS_STARRED + " INTEGER NOT NULL default 0)") void createTravelTimesTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.FERRIES_SCHEDULES + " (" + FerriesSchedulesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_ID + " INTEGER," + FerriesSchedulesColumns.FERRIES_SCHEDULE_TITLE + " TEXT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_CROSSING_TIME + " TEXT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_DATE + " TEXT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_ALERT + " TEXT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_UPDATED + " TEXT," + FerriesSchedulesColumns.FERRIES_SCHEDULE_IS_STARRED + " INTEGER NOT NULL default 0)") void createFerriesSchedulesTable(VoidCallback callback); @Update("CREATE TABLE " + Tables.FERRIES_TERMINAL_SAILING_SPACE + " (" + FerriesTerminalSailingSpaceColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + FerriesTerminalSailingSpaceColumns.TERMINAL_ID + " INTEGER," + FerriesTerminalSailingSpaceColumns.TERMINAL_NAME + " TEXT," + FerriesTerminalSailingSpaceColumns.TERMINAL_ABBREV + " TEXT," + FerriesTerminalSailingSpaceColumns.TERMINAL_DEPARTING_SPACES + " TEXT," + FerriesTerminalSailingSpaceColumns.TERMINAL_LAST_UPDATED + " TEXT," + FerriesTerminalSailingSpaceColumns.TERMINAL_IS_STARRED + " INTEGER NOT NULL default 0)") void createFerriesTerminalSailingSpaceTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.BORDER_WAIT + " (" + BorderWaitColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + BorderWaitColumns.BORDER_WAIT_ID + " INTEGER," + BorderWaitColumns.BORDER_WAIT_TITLE + " TEXT," + BorderWaitColumns.BORDER_WAIT_UPDATED + " TEXT," + BorderWaitColumns.BORDER_WAIT_LANE + " TEXT," + BorderWaitColumns.BORDER_WAIT_ROUTE + " INTEGER," + BorderWaitColumns.BORDER_WAIT_DIRECTION + " TEXT," + BorderWaitColumns.BORDER_WAIT_TIME + " INTEGER," + BorderWaitColumns.BORDER_WAIT_IS_STARRED + " INTEGER NOT NULL default 0)") void createBorderWaitTable(VoidCallback callback); @Update("CREATE TABLE IF NOT EXISTS " + Tables.MAP_LOCATION + " (" + LocationColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + LocationColumns.LOCATION_TITLE + " TEXT," + LocationColumns.LOCATION_LAT + " INTEGER," + LocationColumns.LOCATION_LONG + " INTEGER," + LocationColumns.LOCATION_ZOOM + " INTEGER);") void createLocationsTable(VoidCallback callback); /** * Initialize cache table. * * @param items * @param callback */ @Update(sql="INSERT INTO " + Tables.CACHES + " (" + CachesColumns.CACHE_TABLE_NAME + ", " + CachesColumns.CACHE_LAST_UPDATED + ") " + "VALUES ({_.getTableName()}, {_.getLastUpdated()})", foreach="cacheItems") void initCachesTable(List<CacheItem> cacheItems, RowIdListCallback callback); /** * Update timestamp in cache table. * * @param cacheItems * @param callback */ @Update(sql="UPDATE " + Tables.CACHES + " SET " + CachesColumns.CACHE_LAST_UPDATED + " = {_.getLastUpdated()}" + " WHERE " + CachesColumns.CACHE_TABLE_NAME + " LIKE {_.getTableName()}", foreach="cacheItems") void updateCachesTable(List<CacheItem> cacheItems, VoidCallback callback); /** * Obtains the number of entries in the caches table. * * @param callback */ @Select("SELECT count(*) FROM " + Tables.CACHES) void getCachesTableCount(ScalarCallback<Integer> callback); /** * Returns the last time data was downloaded and cached for a specific table. * * @param tableName * @param callback */ @Select("SELECT " + CachesColumns.CACHE_LAST_UPDATED + " FROM " + Tables.CACHES + " WHERE " + CachesColumns.CACHE_TABLE_NAME + " LIKE {tableName}") void getCacheLastUpdated(String tableName, ListCallback<GenericRow> callback); /** * Initialize camera table. * * @param cameraItems * @param callback */ @Update(sql="INSERT INTO " + Tables.CAMERAS + " (" + CamerasColumns.CAMERA_ID + ", " + CamerasColumns.CAMERA_TITLE + ", " + CamerasColumns.CAMERA_URL + ", " + CamerasColumns.CAMERA_LATITUDE + ", " + CamerasColumns.CAMERA_LONGITUDE + ", " + CamerasColumns.CAMERA_HAS_VIDEO + ", " + CamerasColumns.CAMERA_ROAD_NAME + ", " + CamerasColumns.CAMERA_IS_STARRED + ") " + "VALUES " + "({_.getCameraId()}, {_.getTitle()}, {_.getImageUrl()}, {_.getLatitude()}, " + "{_.getLongitude()}, {_.getHasVideo()}, {_.getRoadName()}, " + "{_.getIsStarred()})", foreach="cameraItems") void initCamerasTable(List<CameraItem> cameraItems, RowIdListCallback callback); /** * Obtains the number of entries in the cameras table. * * @param callback */ @Select("SELECT count(*) FROM " + Tables.CAMERAS) void getCamerasTableCount(ScalarCallback<Integer> callback); /** * Delete all rows from highway alerts table. * * @param callback */ @Update("DELETE FROM " + Tables.HIGHWAY_ALERTS) void deleteHighwayAlerts(VoidCallback callback); /** * Insert highway alerts into table. * * @param highwayAlertItems * @param callback */ @Update(sql="INSERT INTO " + Tables.HIGHWAY_ALERTS + " (" + HighwayAlertsColumns.HIGHWAY_ALERT_ID + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_HEADLINE + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_CATEGORY + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_PRIORITY + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_LATITUDE + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_LONGITUDE + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_ROAD_NAME + ", " + HighwayAlertsColumns.HIGHWAY_ALERT_LAST_UPDATED + ") " + "VALUES " + "({_.getAlertId()}, {_.getHeadlineDescription()}, {_.getEventCategory()}, " + "{_.getPriority()}, {_.getStartLatitude()}, {_.getStartLongitude()}, " + "{_.getStartRoadName()}, {_.getLastUpdatedTime()})", foreach="highwayAlertItems") void insertHighwayAlerts(List<HighwayAlertItem> highwayAlertItems, RowIdListCallback callback); /** * Retrieve highway alerts from table. * * @param callback */ @Select("SELECT * FROM " + Tables.HIGHWAY_ALERTS) void getHighwayAlerts(ListCallback<GenericRow> callback); /** * Retrieve individual highway alert. * * @param alertId * @param callback */ @Select("SELECT * FROM " + Tables.HIGHWAY_ALERTS + " WHERE " + HighwayAlertsColumns.HIGHWAY_ALERT_ID + " = {alertId}") void getHighwayAlert(String alertId, ListCallback<GenericRow> callback); /** * Delete all rows from border wait table. * * @param callback */ @Update("DELETE FROM " + Tables.BORDER_WAIT) void deleteBorderWaits(VoidCallback callback); /** * Insert border wait items into table. * * @param borderWaitItems * @param callback */ @Update(sql="INSERT INTO " + Tables.BORDER_WAIT + " (" + BorderWaitColumns.BORDER_WAIT_ID + ", " + BorderWaitColumns.BORDER_WAIT_TITLE + ", " + BorderWaitColumns.BORDER_WAIT_UPDATED + ", " + BorderWaitColumns.BORDER_WAIT_LANE + ", " + BorderWaitColumns.BORDER_WAIT_ROUTE + ", " + BorderWaitColumns.BORDER_WAIT_DIRECTION + ", " + BorderWaitColumns.BORDER_WAIT_TIME + ", " + BorderWaitColumns.BORDER_WAIT_IS_STARRED + ") " + "VALUES " + "({_.getId()}, {_.getTitle()}, {_.getUpdated()}, " + "{_.getLane()}, {_.getRoute()}, {_.getDirection()}, " + "{_.getWait()}, {_.getIsStarred()})", foreach="borderWaitItems") void insertBorderWaits(List<BorderWaitItem> borderWaitItems, RowIdListCallback callback); /** * Retrieve border waits from table. * * @param callback */ @Select("SELECT * FROM " + Tables.BORDER_WAIT) void getBorderWaits(ListCallback<GenericRow> callback); /** * Returns rows from border waits table which have been starred as favorites. * * @param callback */ @Select("SELECT * FROM " + Tables.BORDER_WAIT + " WHERE " + BorderWaitColumns.BORDER_WAIT_IS_STARRED + " = 1") void getStarredBorderWaits(ListCallback<GenericRow> callback); /** * Update rows from border waits table which have been starred or unstarred * as favorites. * * @param items * @param callback */ @Update(sql="UPDATE " + Tables.BORDER_WAIT + " SET " + BorderWaitColumns.BORDER_WAIT_IS_STARRED + " = {_.getIsStarred()}" + " WHERE " + BorderWaitColumns.BORDER_WAIT_ID + " = {_.getId()}", foreach="borderWaitItems") void updateStarredBorderWaits(List<BorderWaitItem> borderWaitItems, VoidCallback callback); /** * Delete all rows from ferries schedules table. * * @param callback */ @Update("DELETE FROM " + Tables.FERRIES_SCHEDULES) void deleteFerriesSchedules(VoidCallback callback); /** * Insert ferries schedule items into table. * * @param ferriesRouteItems * @param callback */ @Update(sql="INSERT INTO " + Tables.FERRIES_SCHEDULES + " (" + FerriesSchedulesColumns.FERRIES_SCHEDULE_ID + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_TITLE + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_CROSSING_TIME + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_DATE + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_ALERT + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_UPDATED + ", " + FerriesSchedulesColumns.FERRIES_SCHEDULE_IS_STARRED + ") " + "VALUES " + "({_.getRouteID()}, {_.getDescription()}, {_.getCrossingTime()}, {_.getScheduleDate()}, " + "{_.getRouteAlert()}, {_.getCacheDate()}, {_.getIsStarred()})", foreach="ferriesRouteItems") void insertFerriesSchedules(List<FerriesRouteItem> ferriesRouteItems, RowIdListCallback callback); /** * Retrieve ferries schedules from table. * * @param callback */ @Select("SELECT * FROM " + Tables.FERRIES_SCHEDULES) void getFerriesSchedules(ListCallback<GenericRow> callback); /** * Retrieve ferries schedule for specific route. * * @param routeId * @param callback */ @Select("SELECT * FROM " + Tables.FERRIES_SCHEDULES + " WHERE " + FerriesSchedulesColumns.FERRIES_SCHEDULE_ID + " = {routeId}") void getFerriesSchedulesRoute(String routeId, ListCallback<GenericRow> callback); /** * Returns rows from ferries schedules table which have been starred as favorites. * * @param callback */ @Select("SELECT * FROM " + Tables.FERRIES_SCHEDULES + " WHERE " + FerriesSchedulesColumns.FERRIES_SCHEDULE_IS_STARRED + " = 1") void getStarredFerriesSchedules(ListCallback<GenericRow> callback); /** * Update rows from ferries schedule table which have been starred or unstarred * as favorites. * * @param items * @param callback */ @Update(sql="UPDATE " + Tables.FERRIES_SCHEDULES + " SET " + FerriesSchedulesColumns.FERRIES_SCHEDULE_IS_STARRED + " = {_.getIsStarred()}" + " WHERE " + FerriesSchedulesColumns.FERRIES_SCHEDULE_ID + " = {_.getRouteID()}", foreach="items") void updateStarredFerriesSchedules(List<FerriesRouteItem> items, VoidCallback callback); /** * Delete all rows from ferries terminal sailing space * * @param callback */ @Update("DELETE FROM " + Tables.FERRIES_TERMINAL_SAILING_SPACE) void deleteFerriesTerminalSailingSpace(VoidCallback callback); /** * Insert ferries terminal sailing space items into table. * * @param ferriesTerminalSailingSpaceItems * @param callback */ @Update(sql="INSERT INTO " + Tables.FERRIES_TERMINAL_SAILING_SPACE + " (" + FerriesTerminalSailingSpaceColumns.TERMINAL_ID + ", " + FerriesTerminalSailingSpaceColumns.TERMINAL_NAME + ", " + FerriesTerminalSailingSpaceColumns.TERMINAL_ABBREV + ", " + FerriesTerminalSailingSpaceColumns.TERMINAL_DEPARTING_SPACES + ", " + FerriesTerminalSailingSpaceColumns.TERMINAL_LAST_UPDATED + ", " + FerriesTerminalSailingSpaceColumns.TERMINAL_IS_STARRED + ") " + "VALUES " + "({_.getTerminalId()}, {_.getTerminalName()}, {_.getTerminalAbbrev()}, {_.getTerminalDepartingSpaces()}, " + "{_.getLastUpdated()}, {_.getIsStarred()})", foreach="ferriesTerminalSailingSpaceItems") void insertFerriesTerminalSailingSpace(List<FerriesTerminalSailingSpaceItem> ferriesTerminalSailingSpaceItems, RowIdListCallback callback); /** * Retrieve ferries terminal sailing spaces from table. * * @param callback */ @Select("SELECT * FROM " + Tables.FERRIES_TERMINAL_SAILING_SPACE) void getFerriesTerminalSailingSpaces(ListCallback<GenericRow> callback); /** * Retrieve ferries terminal sailing spaces for a specific terminal. * * @param terminalId * @param callback */ @Select("SELECT * FROM " + Tables.FERRIES_TERMINAL_SAILING_SPACE + " WHERE " + FerriesTerminalSailingSpaceColumns.TERMINAL_ID + " = {terminalId}") void getFerriesTerminalSailingSpace(String terminalId, ListCallback<GenericRow> callback); /** * Returns rows from mountain passes table which have been starred as favorites. * * @param callback */ @Select("SELECT * FROM " + Tables.MOUNTAIN_PASSES + " WHERE " + MountainPassesColumns.MOUNTAIN_PASS_IS_STARRED + " = 1") void getStarredMountainPasses(ListCallback<GenericRow> callback); /** * Update rows from mountain passes table which have been starred or unstarred * as favorites. * * @param items * @param callback */ @Update(sql="UPDATE " + Tables.MOUNTAIN_PASSES + " SET " + MountainPassesColumns.MOUNTAIN_PASS_IS_STARRED + " = {_.getIsStarred()}" + " WHERE " + MountainPassesColumns.MOUNTAIN_PASS_ID + " = {_.getMountainPassId()}", foreach="items") void updateStarredMountainPasses(List<MountainPassItem> items, VoidCallback callback); /** * Delete all rows from mountain passes table. * * @param callback */ @Update("DELETE FROM " + Tables.MOUNTAIN_PASSES) void deleteMountainPasses(VoidCallback callback); /** * Insert mountain pass items into table. * * @param mountainPassItems * @param callback */ @Update(sql="INSERT INTO " + Tables.MOUNTAIN_PASSES + " (" + MountainPassesColumns.MOUNTAIN_PASS_ID + ", " + MountainPassesColumns.MOUNTAIN_PASS_ELEVATION + ", " + MountainPassesColumns.MOUNTAIN_PASS_ROAD_CONDITION + ", " + MountainPassesColumns.MOUNTAIN_PASS_TEMPERATURE + ", " + MountainPassesColumns.MOUNTAIN_PASS_DATE_UPDATED + ", " + MountainPassesColumns.MOUNTAIN_PASS_NAME + ", " + MountainPassesColumns.MOUNTAIN_PASS_WEATHER_ICON + " ," + MountainPassesColumns.MOUNTAIN_PASS_WEATHER_CONDITION + ", " + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_ONE + ", " + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_ONE_DIRECTION + ", " + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_TWO + ", " + MountainPassesColumns.MOUNTAIN_PASS_RESTRICTION_TWO_DIRECTION + ", " + MountainPassesColumns.MOUNTAIN_PASS_CAMERA + ", " + MountainPassesColumns.MOUNTAIN_PASS_FORECAST + ", " + MountainPassesColumns.MOUNTAIN_PASS_IS_STARRED + ") " + "VALUES " + "({_.getMountainPassId()}, {_.getElevationInFeet()}, {_.getRoadCondition()}, " + "{_.getTemperatureInFahrenheit()}, {_.getDateUpdated()}, {_.getMountainPassName()}, " + "{_.getWeatherIcon()}, {_.getWeatherCondition()}, {_.getRestrictionOneText()}, {_.getRestrictionOneTravelDirection()}, " + "{_.getRestrictionTwoText()}, {_.getRestrictionTwoTravelDirection()}, " + "{_.getCamera()}, {_.getForecast()}, {_.getIsStarred()})", foreach="mountainPassItems") void insertMountainPasses(List<MountainPassItem> mountainPassItems, RowIdListCallback callback); /** * Retrieve mountain passes from table. * * @param callback */ @Select("SELECT * FROM " + Tables.MOUNTAIN_PASSES) void getMountainPasses(ListCallback<GenericRow> callback); /** * Retrieve content for specific mountain pass. * * @param routeId * @param callback */ @Select("SELECT * FROM " + Tables.MOUNTAIN_PASSES + " WHERE " + MountainPassesColumns.MOUNTAIN_PASS_ID + " = {passId}") void getMountainPass(String passId, ListCallback<GenericRow> callback); /** * Delete all rows from travel times table. * * @param callback */ @Update("DELETE FROM " + Tables.TRAVEL_TIMES) void deleteTravelTimes(VoidCallback callback); /** * Insert travel times content into table. * * @param items * @param callback */ @Update(sql="INSERT INTO " + Tables.TRAVEL_TIMES + " (" + TravelTimesColumns.TRAVEL_TIMES_ID + ", " + TravelTimesColumns.TRAVEL_TIMES_TITLE + ", " + TravelTimesColumns.TRAVEL_TIMES_UPDATED + ", " + TravelTimesColumns.TRAVEL_TIMES_DISTANCE + ", " + TravelTimesColumns.TRAVEL_TIMES_AVERAGE + ", " + TravelTimesColumns.TRAVEL_TIMES_CURRENT + ", " + TravelTimesColumns.TRAVEL_TIMES_IS_STARRED + ") " + "VALUES " + "({_.getRouteId()}, {_.getTitle()}, {_.getUpdated()}, " + "{_.getDistance()}, {_.getAverageTime()}, {_.getCurrentTime()}, " + "{_.getIsStarred()})", foreach="items") void insertTravelTimes(List<TravelTimesItem> items, RowIdListCallback callback); /** * Return travel times from table. * * @param callback */ @Select("SELECT * FROM " + Tables.TRAVEL_TIMES) void getTravelTimes(ListCallback<GenericRow> callback); /** * Return travel times from table which match a search filter. * * @param filter * @param callback */ @Select("SELECT * FROM " + Tables.TRAVEL_TIMES + " WHERE " + TravelTimesColumns.TRAVEL_TIMES_TITLE + " LIKE {filter}") void getTravelTimes(String filter, ListCallback<GenericRow> callback); /** * Retrieve content for specific travel time. * * @param routeId * @param callback */ @Select("SELECT * FROM " + Tables.TRAVEL_TIMES + " WHERE " + TravelTimesColumns.TRAVEL_TIMES_ID + " = {timesId}") void getTravelTime(String timesId, ListCallback<GenericRow> callback); /** * Returns rows from travel times table which have been starred as favorites. * * @param callback */ @Select("SELECT * FROM " + Tables.TRAVEL_TIMES + " WHERE " + TravelTimesColumns.TRAVEL_TIMES_IS_STARRED + " = 1") void getStarredTravelTimes(ListCallback<GenericRow> callback); /** * Update rows from travel times table which have been starred or unstarred * as favorites. * * @param items * @param callback */ @Update(sql="UPDATE " + Tables.TRAVEL_TIMES + " SET " + TravelTimesColumns.TRAVEL_TIMES_IS_STARRED + " = {_.getIsStarred()}" + " WHERE " + TravelTimesColumns.TRAVEL_TIMES_ID + " = {_.getRouteId()}", foreach="items") void updateStarredTravelTimes(List<TravelTimesItem> items, VoidCallback callback); /** * Returns rows from cameras table which have been starred as favorites. * * @param callback */ @Select("SELECT " + CamerasColumns.CAMERA_ID + " ," + CamerasColumns.CAMERA_TITLE + " FROM " + Tables.CAMERAS + " WHERE " + CamerasColumns.CAMERA_IS_STARRED + " = 1") void getStarredCameras(ListCallback<GenericRow> callback); /** * Update rows from cameras table which have been starred or unstarred as favorites. * * @param items * @param callback */ @Update(sql="UPDATE " + Tables.CAMERAS + " SET " + CamerasColumns.CAMERA_IS_STARRED + " = {_.getIsStarred()}" + " WHERE " + CamerasColumns.CAMERA_ID + " = {_.getCameraId()}", foreach="items") void updateStarredCameras(List<CameraItem> items, VoidCallback callback); /** * Delete all rows from cameras table. * * @param callback */ @Update("DELETE FROM " + Tables.CAMERAS) void deleteCameras(VoidCallback callback); /** * Insert cameras into table. * * @param cameraItems * @param callback */ @Update(sql="INSERT INTO " + Tables.CAMERAS + " (" + CamerasColumns.CAMERA_ID + ", " + CamerasColumns.CAMERA_TITLE + ", " + CamerasColumns.CAMERA_ROAD_NAME + ", " + CamerasColumns.CAMERA_URL + ", " + CamerasColumns.CAMERA_LATITUDE + ", " + CamerasColumns.CAMERA_LONGITUDE + ", " + CamerasColumns.CAMERA_HAS_VIDEO + ", " + CamerasColumns.CAMERA_IS_STARRED + ") " + "VALUES " + "({_.getCameraId()}, {_.getTitle()}, {_.getRoadName()}, {_.getImageUrl()}, " + "{_.getLatitude()}, {_.getLongitude()}, {_.getHasVideo()}, " + "{_.getIsStarred()})", foreach="cameraItems") void insertCameras(List<CameraItem> cameraItems, RowIdListCallback callback); /** * Retrieve cameras from table. * * @param callback */ @Select("SELECT * FROM " + Tables.CAMERAS) void getCameras(ListCallback<GenericRow> callback); /** * Retrieve individual camera. * * @param cameraId * @param callback */ @Select("SELECT * FROM " + Tables.CAMERAS + " WHERE " + CamerasColumns.CAMERA_ID + " = {cameraId}") void getCamera(String cameraId, ListCallback<GenericRow> callback); /** * Insert location into table. * * @param locationItem * @param callback */ @Update(sql="INSERT INTO " + Tables.MAP_LOCATION + " (" + LocationColumns.LOCATION_LAT + ", " + LocationColumns.LOCATION_LONG + ", " + LocationColumns.LOCATION_TITLE + ", " + LocationColumns.LOCATION_ZOOM + ") " + "VALUES " + "({locationItem.getLatitude()}, {locationItem.getLongitude()}, {locationItem.getTitle()}, {locationItem.getZoom()})") void insertLocation(LocationItem locationItem, VoidCallback callback); /** * Gets all favorite locations */ @Select("SELECT * FROM " + Tables.MAP_LOCATION) void getLocations(ListCallback<GenericRow> callback); /** * Edits a location name */ @Select("UPDATE " + Tables.MAP_LOCATION + " SET " + LocationColumns.LOCATION_TITLE + " = {newName}" + " WHERE " + LocationColumns._ID + " = {id} ") void editLocation(int id, String newName, VoidCallback callback); /** * Removes a favorite location */ @Update("DELETE FROM " + Tables.MAP_LOCATION + " WHERE " + LocationColumns._ID + " = {locationItem.getId()}") void removeLocation(LocationItem locationItem, VoidCallback callback); }