diff options
author | Christopher Baines <cbaines8@gmail.com> | 2012-01-25 13:53:22 +0000 |
---|---|---|
committer | Christopher Baines <cbaines8@gmail.com> | 2012-01-25 13:53:22 +0000 |
commit | abcbffd80637a8aea379e6a774aa5747fd5cd0c7 (patch) | |
tree | e6912fb2fe412fd36b989af26be1051dbbf1a27e /src/net/cbaines/suma/DataManager.java | |
parent | de2979e0f22264ada8326833bfb39746e9bf78cc (diff) | |
download | southamptonuniversitymap-abcbffd80637a8aea379e6a774aa5747fd5cd0c7.tar southamptonuniversitymap-abcbffd80637a8aea379e6a774aa5747fd5cd0c7.tar.gz |
Lots of changes, need to regenerate the database, and add code to replace old databases with the current one.
Diffstat (limited to 'src/net/cbaines/suma/DataManager.java')
-rw-r--r-- | src/net/cbaines/suma/DataManager.java | 173 |
1 files changed, 48 insertions, 125 deletions
diff --git a/src/net/cbaines/suma/DataManager.java b/src/net/cbaines/suma/DataManager.java index d54b25b..461189f 100644 --- a/src/net/cbaines/suma/DataManager.java +++ b/src/net/cbaines/suma/DataManager.java @@ -306,17 +306,8 @@ public class DataManager { routeStopsDao.create(new RouteStops(stop, route, sequence)); - if (route.id == 326) { // U1 - stop.routes = (byte) (stop.routes | 1); - } else if (route.id == 468) { // U1N - stop.routes = (byte) (stop.routes | (1 << 1)); - } else if (route.id == 329) { // U2 - stop.routes = (byte) (stop.routes | (1 << 2)); - } else if (route.id == 327) { // U6 - stop.routes = (byte) (stop.routes | (1 << 3)); - } else if (route.id == 354) { // U9 - stop.routes = (byte) (stop.routes | (1 << 4)); - } + stop.routes.add(route); + Log.v(TAG, "Stop routes " + stop.routes); busStopDao.update(stop); @@ -426,16 +417,13 @@ public class DataManager { if (stopDao == null) stopDao = helper.getStopDao(); - // Log.i(TAG, "Stop " + stopObj); - try { String time = stopObj.getString("time"); GregorianCalendar calender = new GregorianCalendar(); - if (!time.equals("Due")) { - Log.i(TAG, "Time: " + time + " current time " + calender.getTime()); + Log.v(TAG, "Time: " + time + " current time " + calender.getTime()); if (time.contains(":")) { String[] minAndHour = time.split(":"); @@ -446,29 +434,40 @@ public class DataManager { calender.add(Calendar.MINUTE, Integer.parseInt(time.substring(0, time.length() - 1))); } - Log.i(TAG, "Date: " + calender.getTime()); - + Log.v(TAG, "Date: " + calender.getTime()); } - Stop stop; - String name = stopObj.getString("name"); BusRoute route; + Direction dir = null; if (name.equals("U1N")) { route = busRoutes.queryForId(468); - } else if (name.startsWith("U1")) { - route = busRoutes.queryForId(326); - } else if (name.startsWith("U2")) { - route = busRoutes.queryForId(329); - } else if (name.startsWith("U6")) { - route = busRoutes.queryForId(327); } else if (name.startsWith("U9")) { route = busRoutes.queryForId(354); } else { - Log.e(TAG, "Error selecting route for " + name); - return null; + if (name.startsWith("U1")) { + route = busRoutes.queryForId(326); + } else if (name.startsWith("U2")) { + route = busRoutes.queryForId(329); + } else if (name.startsWith("U6")) { + route = busRoutes.queryForId(327); + } else { + Log.e(TAG, "Error detecting route " + name); + return null; + } + + for (Direction possibleDir : route.directions) { + if (name.charAt(3) == possibleDir.direction.charAt(0)) { + dir = possibleDir; + break; + } + } + if (dir.direction.length() == 0) { + Log.e(TAG, "Error detecting direction for " + name); + return null; + } } String destString = stopObj.getString("dest"); @@ -499,52 +498,36 @@ public class DataManager { return null; } + Date now = new Date(System.currentTimeMillis()); + + String busID = null; + Stop stop; + Bus bus; if (stopObj.has("vehicle")) { + busID = stopObj.getString("vehicle"); - int vehicle = Integer.parseInt(stopObj.getString("vehicle")); - // Log.i(TAG, "Looking at vehicle " + vehicle + " (" + stopObj.getString("vehicle") + ")"); - Bus bus = busDao.queryForId(vehicle); - if (bus == null) { - // Log.i(TAG, "Cant find vehicle, creating"); + QueryBuilder<Bus, Integer> busQueryBuilder = busDao.queryBuilder(); + busQueryBuilder.where().eq(Bus.ID_FIELD_NAME, busID); + PreparedQuery<Bus> busPreparedQuery = busQueryBuilder.prepare(); - // for (Bus gotBus : busDao) { - // Log.i(TAG, "Currently have bus " + gotBus.id); - // } + bus = busDao.queryForFirst(busPreparedQuery); - bus = new Bus(vehicle, route); - busDao.create(bus); + if (bus == null) { + bus = new Bus(busID, route, dir); + bus.destination = destStop; + } else { + bus.destination = destStop; + bus.route = route; + bus.direction = dir; } - Date now = new Date(System.currentTimeMillis()); - - stop = new Stop(stopObj.getString("name"), busStop, destStop, bus, calender.getTime(), now); - stop.route = route; - - /* - * if (bus.lastKnownStop != null) { stopDao.delete(bus.lastKnownStop); // TODO Crude, might delete useful data - * - * if (bus.lastKnownStop.arivalTime == null) { Log.e(TAG, " bus.lastKnownStop.arivalTime is null"); } else if (stop.arivalTime == null) { - * Log.e(TAG, " stop.arivalTime is null"); } - * - * if (bus.lastKnownStop.arivalTime.before(stop.arivalTime) && bus.lastKnownStop.arivalTime.after(now)) { bus.lastKnownStop = stop; - * - * if (bus.firstKnownStop == null) { bus.firstKnownStop = stop; - * - * } else if (!bus.firstKnownStop.busStop.equals(stop.busStop)) { stopDao.delete(bus.firstKnownStop); // TODO Crude, might delete useful data - * - * bus.firstKnownStop = stop; } - * - * } } - */ - - // busDao.update(bus); - } else { + bus = new Bus(null, route, dir); + } - stop = new Stop(stopObj.getString("name"), busStop, destStop, calender.getTime(), new Date(System.currentTimeMillis())); - stop.route = route; + busDao.update(bus); - } + stop = new Stop(bus, busStop, calender.getTime(), now); return stop; @@ -556,62 +539,6 @@ public class DataManager { } - public static boolean updateStop(BusStop busStop, boolean onlyUniLink) { - String file = getFileFromServer(busStopUrl + busStop.id + ".json"); - - try { - JSONObject data = new JSONObject(file); - - JSONArray stopsArray = data.getJSONArray("stops"); - - // Log.i(TAG, "Number of entries " + data.length()); - - // Log.i(TAG, "Stops: " + data.getJSONArray("stops")); - - for (int stopNum = 0; stopNum < stopsArray.length(); stopNum++) { - JSONObject stopObj = stopsArray.getJSONObject(stopNum); - - if (onlyUniLink && !stopObj.getString("name").startsWith("U")) { - continue; - } - - Stop stop = getStop(context, stopObj, busStop); - - if (stop == null) { - Log.w(TAG, "Null stop, skiping"); - continue; - } - - if (stop.bus != null) { - Log.i(TAG, "Found stop for " + stop.bus.id + " at " + stop.busStop.id + " at " + stop.arivalTime); - } else { - if (stop.name == null) { - Log.e(TAG, "Null name"); - } else if (stop.busStop == null) { - Log.e(TAG, "Null busStop"); - } else if (stop.arivalTime == null) { - Log.e(TAG, "Null arivalTime"); - } - Log.i(TAG, "Found stop for a unidentified " + stop.name + " at " + stop.busStop.id + " at " + stop.arivalTime); - } - - // stopDao.create(stop); - } - } catch (JSONException ex) { - Log.e(TAG, "", ex); - - return false; - } catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - - return false; - } - - return false; - - } - public static Timetable getTimetable(Context context, String busStop, boolean onlyUniLink) throws SQLException { if (helper == null) @@ -655,11 +582,7 @@ public class DataManager { continue; } - if (stop.bus != null) { - Log.i(TAG, "Found stop for " + stop.bus.id + " at " + stop.busStop.id + " at " + stop.arivalTime); - } else { - Log.i(TAG, "Found stop for a unidentified " + stop.name + " at " + stop.busStop.id + " at " + stop.arivalTime); - } + Log.i(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at " + stop.arivalTime); timetable.add(stop); } |