package com.schneeloch.bostonbusmap_library.database; import android.database.DatabaseUtils.InsertHelper; import java.util.Collection; public class Schema { public static final String dbName = "transitData"; public static final String oldDb = "bostonBusMap"; private static final int INT_TRUE = 1; private static final int INT_FALSE = 0; public static int toInteger(boolean b) { return b ? INT_TRUE : INT_FALSE; } public static boolean fromInteger(int i) { return i == INT_TRUE; } public static class Bounds { public static final String table = "bounds"; public static final String[] columns = new String[] { "route", "weekdays", "start", "stop" }; public static final int routeIndex = 1; public static final String routeColumn = "route"; public static final String routeColumnOnTable = "bounds.route"; public static final int weekdaysIndex = 2; public static final String weekdaysColumn = "weekdays"; public static final String weekdaysColumnOnTable = "bounds.weekdays"; public static final int startIndex = 3; public static final String startColumn = "start"; public static final String startColumnOnTable = "bounds.start"; public static final int stopIndex = 4; public static final String stopColumn = "stop"; public static final String stopColumnOnTable = "bounds.stop"; public static final String dropSql = "DROP TABLE IF EXISTS bounds"; public static final String createSql = "CREATE TABLE IF NOT EXISTS bounds (route STRING, weekdays INTEGER, start INTEGER, stop INTEGER)"; public static class Bean { public final String route; public final int weekdays; public final int start; public final int stop; public Bean(String route, int weekdays, int start, int stop) { this.route = route; this.weekdays = weekdays; this.start = start; this.stop = stop; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.route, bean.weekdays, bean.start, bean.stop); } } public static void executeInsertHelper(InsertHelper helper, String route, int weekdays, int start, int stop) { helper.prepareForReplace(); helper.bind(routeIndex, route); helper.bind(weekdaysIndex, weekdays); helper.bind(startIndex, start); helper.bind(stopIndex, stop); helper.execute(); } } public static class Directions { public static final String table = "directions"; public static final String[] columns = new String[] { "dirTag", "dirNameKey", "dirTitleKey", "dirRouteKey", "useAsUI" }; public static final int dirTagIndex = 1; public static final String dirTagColumn = "dirTag"; public static final String dirTagColumnOnTable = "directions.dirTag"; public static final int dirNameKeyIndex = 2; public static final String dirNameKeyColumn = "dirNameKey"; public static final String dirNameKeyColumnOnTable = "directions.dirNameKey"; public static final int dirTitleKeyIndex = 3; public static final String dirTitleKeyColumn = "dirTitleKey"; public static final String dirTitleKeyColumnOnTable = "directions.dirTitleKey"; public static final int dirRouteKeyIndex = 4; public static final String dirRouteKeyColumn = "dirRouteKey"; public static final String dirRouteKeyColumnOnTable = "directions.dirRouteKey"; public static final int useAsUIIndex = 5; public static final String useAsUIColumn = "useAsUI"; public static final String useAsUIColumnOnTable = "directions.useAsUI"; public static final String dropSql = "DROP TABLE IF EXISTS directions"; public static final String createSql = "CREATE TABLE IF NOT EXISTS directions (dirTag STRING PRIMARY KEY, dirNameKey STRING, dirTitleKey STRING, dirRouteKey STRING, useAsUI INTEGER)"; public static class Bean { public final String dirTag; public final String dirNameKey; public final String dirTitleKey; public final String dirRouteKey; public final int useAsUI; public Bean(String dirTag, String dirNameKey, String dirTitleKey, String dirRouteKey, int useAsUI) { this.dirTag = dirTag; this.dirNameKey = dirNameKey; this.dirTitleKey = dirTitleKey; this.dirRouteKey = dirRouteKey; this.useAsUI = useAsUI; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.dirTag, bean.dirNameKey, bean.dirTitleKey, bean.dirRouteKey, bean.useAsUI); } } public static void executeInsertHelper(InsertHelper helper, String dirTag, String dirNameKey, String dirTitleKey, String dirRouteKey, int useAsUI) { helper.prepareForReplace(); helper.bind(dirTagIndex, dirTag); helper.bind(dirNameKeyIndex, dirNameKey); helper.bind(dirTitleKeyIndex, dirTitleKey); helper.bind(dirRouteKeyIndex, dirRouteKey); helper.bind(useAsUIIndex, useAsUI); helper.execute(); } } public static class DirectionsStops { public static final String table = "directionsStops"; public static final String[] columns = new String[] { "dirTag", "tag" }; public static final int dirTagIndex = 1; public static final String dirTagColumn = "dirTag"; public static final String dirTagColumnOnTable = "directionsStops.dirTag"; public static final int tagIndex = 2; public static final String tagColumn = "tag"; public static final String tagColumnOnTable = "directionsStops.tag"; public static final String dropSql = "DROP TABLE IF EXISTS directionsStops"; public static final String createSql = "CREATE TABLE IF NOT EXISTS directionsStops (dirTag STRING, tag STRING)"; public static class Bean { public final String dirTag; public final String tag; public Bean(String dirTag, String tag) { this.dirTag = dirTag; this.tag = tag; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.dirTag, bean.tag); } } public static void executeInsertHelper(InsertHelper helper, String dirTag, String tag) { helper.prepareForReplace(); helper.bind(dirTagIndex, dirTag); helper.bind(tagIndex, tag); helper.execute(); } } public static class Favorites { public static final String table = "favorites"; public static final String[] columns = new String[] { "tag" }; public static final int tagIndex = 1; public static final String tagColumn = "tag"; public static final String tagColumnOnTable = "favorites.tag"; public static final String dropSql = "DROP TABLE IF EXISTS favorites"; public static final String createSql = "CREATE TABLE IF NOT EXISTS favorites (tag TEXT PRIMARY KEY)"; public static class Bean { public final String tag; public Bean(String tag) { this.tag = tag; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.tag); } } public static void executeInsertHelper(InsertHelper helper, String tag) { helper.prepareForReplace(); helper.bind(tagIndex, tag); helper.execute(); } } public static class Locations { public static final String table = "locations"; public static final String[] columns = new String[] { "lat", "lon", "name" }; public static final int latIndex = 1; public static final String latColumn = "lat"; public static final String latColumnOnTable = "locations.lat"; public static final int lonIndex = 2; public static final String lonColumn = "lon"; public static final String lonColumnOnTable = "locations.lon"; public static final int nameIndex = 3; public static final String nameColumn = "name"; public static final String nameColumnOnTable = "locations.name"; public static final String dropSql = "DROP TABLE IF EXISTS locations"; public static final String createSql = "CREATE TABLE IF NOT EXISTS locations (lat FLOAT, lon FLOAT, name TEXT PRIMARY KEY)"; public static class Bean { public final float lat; public final float lon; public final String name; public Bean(float lat, float lon, String name) { this.lat = lat; this.lon = lon; this.name = name; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.lat, bean.lon, bean.name); } } public static void executeInsertHelper(InsertHelper helper, float lat, float lon, String name) { helper.prepareForReplace(); helper.bind(latIndex, lat); helper.bind(lonIndex, lon); helper.bind(nameIndex, name); helper.execute(); } } public static class Routes { public static final String table = "routes"; public static final String[] columns = new String[] { "route", "color", "oppositecolor", "pathblob", "listorder", "agencyid", "routetitle" }; public static final int routeIndex = 1; public static final String routeColumn = "route"; public static final String routeColumnOnTable = "routes.route"; public static final int colorIndex = 2; public static final String colorColumn = "color"; public static final String colorColumnOnTable = "routes.color"; public static final int oppositecolorIndex = 3; public static final String oppositecolorColumn = "oppositecolor"; public static final String oppositecolorColumnOnTable = "routes.oppositecolor"; public static final int pathblobIndex = 4; public static final String pathblobColumn = "pathblob"; public static final String pathblobColumnOnTable = "routes.pathblob"; public static final int listorderIndex = 5; public static final String listorderColumn = "listorder"; public static final String listorderColumnOnTable = "routes.listorder"; public static final int agencyidIndex = 6; public static final String agencyidColumn = "agencyid"; public static final String agencyidColumnOnTable = "routes.agencyid"; public enum SourceId { Subway(1) , CommuterRail(2) , Bus(3) , Hubway(50) ; private final int value; SourceId(int value) { this.value = value; } public int getValue() { return value; } public static SourceId fromValue(int value) { if (value == 1) { return Subway; } if (value == 2) { return CommuterRail; } if (value == 3) { return Bus; } if (value == 50) { return Hubway; } throw new RuntimeException("Unknown value " + value); } } public static final int routetitleIndex = 7; public static final String routetitleColumn = "routetitle"; public static final String routetitleColumnOnTable = "routes.routetitle"; public static final String dropSql = "DROP TABLE IF EXISTS routes"; public static final String createSql = "CREATE TABLE IF NOT EXISTS routes (route STRING PRIMARY KEY, color INTEGER, oppositecolor INTEGER, pathblob BLOB, listorder INTEGER, agencyid INTEGER, routetitle STRING)"; public static class Bean { public final String route; public final int color; public final int oppositecolor; public final byte[] pathblob; public final int listorder; public final int agencyid; public final String routetitle; public Bean(String route, int color, int oppositecolor, byte[] pathblob, int listorder, int agencyid, String routetitle) { this.route = route; this.color = color; this.oppositecolor = oppositecolor; this.pathblob = pathblob; this.listorder = listorder; this.agencyid = agencyid; this.routetitle = routetitle; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.route, bean.color, bean.oppositecolor, bean.pathblob, bean.listorder, bean.agencyid, bean.routetitle); } } public static void executeInsertHelper(InsertHelper helper, String route, int color, int oppositecolor, byte[] pathblob, int listorder, int agencyid, String routetitle) { helper.prepareForReplace(); helper.bind(routeIndex, route); helper.bind(colorIndex, color); helper.bind(oppositecolorIndex, oppositecolor); helper.bind(pathblobIndex, pathblob); helper.bind(listorderIndex, listorder); helper.bind(agencyidIndex, agencyid); helper.bind(routetitleIndex, routetitle); helper.execute(); } } public static class Stopmapping { public static final String table = "stopmapping"; public static final String[] columns = new String[] { "route", "tag" }; public static final int routeIndex = 1; public static final String routeColumn = "route"; public static final String routeColumnOnTable = "stopmapping.route"; public static final int tagIndex = 2; public static final String tagColumn = "tag"; public static final String tagColumnOnTable = "stopmapping.tag"; public static final String dropSql = "DROP TABLE IF EXISTS stopmapping"; public static final String createSql = "CREATE TABLE IF NOT EXISTS stopmapping (route STRING, tag STRING, PRIMARY KEY (route, tag))"; public static class Bean { public final String route; public final String tag; public Bean(String route, String tag) { this.route = route; this.tag = tag; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.route, bean.tag); } } public static void executeInsertHelper(InsertHelper helper, String route, String tag) { helper.prepareForReplace(); helper.bind(routeIndex, route); helper.bind(tagIndex, tag); helper.execute(); } } public static class Stops { public static final String table = "stops"; public static final String[] columns = new String[] { "tag", "lat", "lon", "title", "parent" }; public static final int tagIndex = 1; public static final String tagColumn = "tag"; public static final String tagColumnOnTable = "stops.tag"; public static final int latIndex = 2; public static final String latColumn = "lat"; public static final String latColumnOnTable = "stops.lat"; public static final int lonIndex = 3; public static final String lonColumn = "lon"; public static final String lonColumnOnTable = "stops.lon"; public static final int titleIndex = 4; public static final String titleColumn = "title"; public static final String titleColumnOnTable = "stops.title"; public static final int parentIndex = 5; public static final String parentColumn = "parent"; public static final String parentColumnOnTable = "stops.parent"; public static final String dropSql = "DROP TABLE IF EXISTS stops"; public static final String createSql = "CREATE TABLE IF NOT EXISTS stops (tag STRING PRIMARY KEY, lat FLOAT, lon FLOAT, title STRING, parent STRING)"; public static class Bean { public final String tag; public final float lat; public final float lon; public final String title; public final String parent; public Bean(String tag, float lat, float lon, String title, String parent) { this.tag = tag; this.lat = lat; this.lon = lon; this.title = title; this.parent = parent; } } public static void executeInsertHelper(InsertHelper helper, Collection<Bean> beans) { for (Bean bean : beans) { executeInsertHelper(helper, bean.tag, bean.lat, bean.lon, bean.title, bean.parent); } } public static void executeInsertHelper(InsertHelper helper, String tag, float lat, float lon, String title, String parent) { helper.prepareForReplace(); helper.bind(tagIndex, tag); helper.bind(latIndex, lat); helper.bind(lonIndex, lon); helper.bind(titleIndex, title); helper.bind(parentIndex, parent); helper.execute(); } } }