aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma/BusActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suma/BusActivity.java')
-rw-r--r--src/net/cbaines/suma/BusActivity.java528
1 files changed, 262 insertions, 266 deletions
diff --git a/src/net/cbaines/suma/BusActivity.java b/src/net/cbaines/suma/BusActivity.java
index b802cfb..c626158 100644
--- a/src/net/cbaines/suma/BusActivity.java
+++ b/src/net/cbaines/suma/BusActivity.java
@@ -25,319 +25,315 @@ import android.widget.Toast;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
public class BusActivity extends OrmLiteBaseActivity<DatabaseHelper> implements Preferences {
- final static String TAG = "BusActivity";
+ final static String TAG = "BusActivity";
- private TextView U1RouteTextView;
- private TextView U1NRouteTextView;
- private TextView U2RouteTextView;
- private TextView U6RouteTextView;
- private TextView U9RouteTextView;
+ private TextView U1RouteTextView;
+ private TextView U1NRouteTextView;
+ private TextView U2RouteTextView;
+ private TextView U6RouteTextView;
+ private TextView U9RouteTextView;
- private TextView busIDTextView;
+ private TextView busIDTextView;
- private TextView busContentMessage;
- private LinearLayout busActivityContentLayout;
+ private TextView busContentMessage;
+ private LinearLayout busActivityContentLayout;
- Toast activityToast;
+ Toast activityToast;
- /**
- * The bus this activity is focused on
- */
- private Bus bus;
- /**
- * The bus stop this activity is working from
- */
- private BusStop busStop;
-
- Runnable refreshData;
-
- protected Timetable timetable;
- private Timetable visibleTimetable;
+ /**
+ * The bus this activity is focused on
+ */
+ private Bus bus;
+ /**
+ * The bus stop this activity is working from
+ */
+ private BusStop busStop;
- private ListView timetableView;
+ Runnable refreshData;
- private Context instance;
+ protected Timetable timetable;
+ private Timetable visibleTimetable;
- // BusStops and if they are being updated by the handler
- List<BusStop> busStops;
+ private ListView timetableView;
- private HashMap<BusStop, GetTimetableStopTask> tasks = new HashMap<BusStop, GetTimetableStopTask>();
+ private Context instance;
- Handler handler;
+ // BusStops and if they are being updated by the handler
+ List<BusStop> busStops;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.bus_activity);
- instance = this;
+ private HashMap<BusStop, GetTimetableStopTask> tasks = new HashMap<BusStop, GetTimetableStopTask>();
- String busID = getIntent().getExtras().getString("busID");
- String busStopID = getIntent().getExtras().getString("busStopID");
- final DatabaseHelper helper = getHelper();
+ Handler handler;
- try {
- List<Bus> buses = helper.getBusDao().queryForEq(Bus.ID_FIELD_NAME, busID);
- bus = null;
- if (buses.size() == 0) {
- Log.e(TAG, "Bus " + busID + " not found!");
- } else if (buses.size() == 1) {
- bus = buses.get(0);
- } else if (buses.size() > 1) {
- Log.e(TAG, "Found more than one bus? " + busID);
- }
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.bus_activity);
+ instance = this;
- helper.getBusRouteDao().refresh(bus.route);
+ String busID = getIntent().getExtras().getString("busID");
+ String busStopID = getIntent().getExtras().getString("busStopID");
+ final DatabaseHelper helper = getHelper();
- busStop = null;
- if (busStopID != null) {
- List<BusStop> busStops = helper.getBusStopDao().queryForEq(BusStop.ID_FIELD_NAME, busStopID);
- if (busStops.size() == 0) {
- Log.e(TAG, "BusStop " + busStopID + " not found!");
- } else if (busStops.size() == 1) {
- busStop = busStops.get(0);
- } else if (busStops.size() > 1) {
- Log.e(TAG, "Found more than one busStop? " + busStopID);
- }
- }
-
- U1RouteTextView = (TextView) findViewById(R.id.busActivityU1);
- U1NRouteTextView = (TextView) findViewById(R.id.busActivityU1N);
- U2RouteTextView = (TextView) findViewById(R.id.busActivityU2);
- U6RouteTextView = (TextView) findViewById(R.id.busActivityU6);
- U9RouteTextView = (TextView) findViewById(R.id.busActivityU9);
-
- busIDTextView = (TextView) findViewById(R.id.busActivityBusID);
-
- busContentMessage = (TextView) findViewById(R.id.busActivityMessage);
- busActivityContentLayout = (LinearLayout) findViewById(R.id.busActivityContentLayout);
- timetableView = (ListView) findViewById(R.id.busActivityTimes);
-
- if (bus.id != null) {
- Log.i(TAG, "Bus id is not null (" + bus.id + ") setting busIDTextView");
- busIDTextView.setText(bus.id + " " + bus.getName());
- } else {
- Log.w(TAG, "Bus id is null?");
- // Might not ever happen
- busIDTextView.setText("Unidentified");
- }
-
- U1RouteTextView.setVisibility(View.GONE);
- U1NRouteTextView.setVisibility(View.GONE);
- U2RouteTextView.setVisibility(View.GONE);
- U6RouteTextView.setVisibility(View.GONE);
- U9RouteTextView.setVisibility(View.GONE);
-
- // if (bus.route.uniLink) {
- Log.i(TAG, "Bus is uniLink");
- if (bus.route.code.equals("U1")) {
- U1RouteTextView.setVisibility(View.VISIBLE);
- } else if (bus.route.code.equals("U1N")) {
- U1NRouteTextView.setVisibility(View.VISIBLE);
- } else if (bus.route.code.equals("U2")) {
- U2RouteTextView.setVisibility(View.VISIBLE);
- } else if (bus.route.code.equals("U6")) {
- U6RouteTextView.setVisibility(View.VISIBLE);
- } else if (bus.route.code.equals("U9")) {
- U9RouteTextView.setVisibility(View.VISIBLE);
- } else {
- Log.e(TAG, "Route not found " + bus.route.code);
- }
- // } else {
- // Log.i(TAG, "Bus is not uniLink");
- // }
-
- } catch (NumberFormatException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
+ try {
+ List<Bus> buses = helper.getBusDao().queryForEq(Bus.ID_FIELD_NAME, busID);
+ bus = null;
+ if (buses.size() == 0) {
+ Log.e(TAG, "Bus " + busID + " not found!");
+ } else if (buses.size() == 1) {
+ bus = buses.get(0);
+ } else if (buses.size() > 1) {
+ Log.e(TAG, "Found more than one bus? " + busID);
+ }
- busStops = bus.route.getRouteSection(instance, bus.direction);
- Log.i(TAG, "Got " + busStops.size() + " bus stops for this bus");
+ helper.getBusRouteDao().refresh(bus.route);
+
+ busStop = null;
+ if (busStopID != null) {
+ List<BusStop> busStops = helper.getBusStopDao().queryForEq(BusStop.ID_FIELD_NAME, busStopID);
+ if (busStops.size() == 0) {
+ Log.e(TAG, "BusStop " + busStopID + " not found!");
+ } else if (busStops.size() == 1) {
+ busStop = busStops.get(0);
+ } else if (busStops.size() > 1) {
+ Log.e(TAG, "Found more than one busStop? " + busStopID);
+ }
+ }
- if (bus.destination != null) {
- Log.i(TAG, "Bus destination is " + bus.destination);
- } else {
- Log.i(TAG, "Bus destination is null");
- }
+ U1RouteTextView = (TextView) findViewById(R.id.busActivityU1);
+ U1NRouteTextView = (TextView) findViewById(R.id.busActivityU1N);
+ U2RouteTextView = (TextView) findViewById(R.id.busActivityU2);
+ U6RouteTextView = (TextView) findViewById(R.id.busActivityU6);
+ U9RouteTextView = (TextView) findViewById(R.id.busActivityU9);
+
+ busIDTextView = (TextView) findViewById(R.id.busActivityBusID);
+
+ busContentMessage = (TextView) findViewById(R.id.busActivityMessage);
+ busActivityContentLayout = (LinearLayout) findViewById(R.id.busActivityContentLayout);
+ timetableView = (ListView) findViewById(R.id.busActivityTimes);
+
+ if (bus.id != null) {
+ Log.i(TAG, "Bus id is not null (" + bus.id + ") setting busIDTextView");
+ busIDTextView.setText(bus.id + " " + bus.getName());
+ } else {
+ Log.w(TAG, "Bus id is null?");
+ // Might not ever happen
+ busIDTextView.setText("Unidentified");
+ }
- /*
- * for (int i = 0;; i++) { BusStop nextStop = bus.route.moveInRoute(instance, busStops.get(i), bus.direction,
- * 1);
- *
- * if (nextStop.equals(busStop) || (bus.destination != null && bus.destination.equals(nextStop))) { break; }
- *
- * busStops.add(nextStop); busStopsActive.add(false);
- *
- * if (busStops.size() > 50) { Log.e(TAG, "Got more than 50 bus stops"); break; } }
- */
+ U1RouteTextView.setVisibility(View.GONE);
+ U1NRouteTextView.setVisibility(View.GONE);
+ U2RouteTextView.setVisibility(View.GONE);
+ U6RouteTextView.setVisibility(View.GONE);
+ U9RouteTextView.setVisibility(View.GONE);
+
+ // if (bus.route.uniLink) {
+ Log.i(TAG, "Bus is uniLink");
+ if (bus.route.code.equals("U1")) {
+ U1RouteTextView.setVisibility(View.VISIBLE);
+ } else if (bus.route.code.equals("U1N")) {
+ U1NRouteTextView.setVisibility(View.VISIBLE);
+ } else if (bus.route.code.equals("U2")) {
+ U2RouteTextView.setVisibility(View.VISIBLE);
+ } else if (bus.route.code.equals("U6")) {
+ U6RouteTextView.setVisibility(View.VISIBLE);
+ } else if (bus.route.code.equals("U9")) {
+ U9RouteTextView.setVisibility(View.VISIBLE);
+ } else {
+ Log.e(TAG, "Route not found " + bus.route.code);
+ }
+ // } else {
+ // Log.i(TAG, "Bus is not uniLink");
+ // }
+
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
- refreshData = new Runnable() {
- @Override
- public void run() {
- for (int num = timetableView.getFirstVisiblePosition(); num < timetableView.getLastVisiblePosition(); num++) {
- Stop stop = timetable.get(num);
+ busStops = bus.route.getRouteSection(instance, bus.direction);
+ Log.i(TAG, "Got " + busStops.size() + " bus stops for this bus");
- GetTimetableStopTask task = tasks.get(busStops.get(num));
+ if (bus.destination != null) {
+ Log.i(TAG, "Bus destination is " + bus.destination);
+ } else {
+ Log.i(TAG, "Bus destination is null");
+ }
- if (stop.timeOfFetch == null || (stop.timeOfFetch.getTime() - System.currentTimeMillis()) > 20000) {
- if (task != null) {
- if (task.getStatus() == AsyncTask.Status.FINISHED) {
- task = null;
- }
+ /*
+ * for (int i = 0;; i++) { BusStop nextStop = bus.route.moveInRoute(instance, busStops.get(i), bus.direction, 1);
+ *
+ * if (nextStop.equals(busStop) || (bus.destination != null && bus.destination.equals(nextStop))) { break; }
+ *
+ * busStops.add(nextStop); busStopsActive.add(false);
+ *
+ * if (busStops.size() > 50) { Log.e(TAG, "Got more than 50 bus stops"); break; } }
+ */
+
+ refreshData = new Runnable() {
+ public void run() {
+ for (int num = timetableView.getFirstVisiblePosition(); num < timetableView.getLastVisiblePosition(); num++) {
+ Stop stop = timetable.get(num);
+
+ GetTimetableStopTask task = tasks.get(busStops.get(num));
+
+ if (stop.timeOfFetch == null || (stop.timeOfFetch.getTime() - System.currentTimeMillis()) > 20000) {
+ if (task != null) {
+ if (task.getStatus() == AsyncTask.Status.FINISHED) {
+ task = null;
+ }
+ }
+
+ if (task == null) {
+ task = new GetTimetableStopTask();
+ BusStop[] str = { stop.busStop };
+ task.execute(str);
+ tasks.put(stop.busStop, task);
+ }
+ }
+
+ }
+ handler.postDelayed(refreshData, 50000);
}
+ };
- if (task == null) {
- task = new GetTimetableStopTask();
- BusStop[] str = { stop.busStop };
- task.execute(str);
- tasks.put(stop.busStop, task);
- }
- }
+ }
- }
- handler.postDelayed(refreshData, 50000);
- }
- };
+ public void onResume() {
+ super.onResume();
- }
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+ if (sharedPrefs.getBoolean(UNI_LINK_BUS_TIMES, UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)
+ || sharedPrefs.getBoolean(NON_UNI_LINK_BUS_TIMES, NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)) {
+ Log.i(TAG, "Live Times enabled");
+ timetable = (Timetable) getLastNonConfigurationInstance();
- public void onResume() {
- super.onResume();
+ handler = new Handler();
- SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- if (sharedPrefs.getBoolean(UNI_LINK_BUS_TIMES, UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)
- || sharedPrefs.getBoolean(NON_UNI_LINK_BUS_TIMES, NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)) {
- Log.i(TAG, "Live Times enabled");
- timetable = (Timetable) getLastNonConfigurationInstance();
+ if (timetable == null) {
+ Log.i(TAG, "No Previous timetable");
+ timetable = new Timetable();
+ for (int i = 0; i < busStops.size(); i++) {
+ timetable.add(new Stop(bus, busStops.get(i), null, null, false));
+ }
+ Log.v(TAG, "Finished adding placeholder stops");
+ } else {
+ Log.i(TAG, "Displaying previous timetable");
- handler = new Handler();
+ }
+ displayTimetable(timetable);
+ handler.postDelayed(refreshData, 500);
- if (timetable == null) {
- Log.i(TAG, "No Previous timetable");
- timetable = new Timetable();
- for (int i = 0; i < busStops.size(); i++) {
- timetable.add(new Stop(bus, busStops.get(i), null, null, false));
+ } else {
+ Log.i(TAG, "Live Times Disabled");
+ busContentMessage.setText("Live bus times disabled");
+ busContentMessage.setVisibility(View.VISIBLE);
}
- Log.v(TAG, "Finished adding placeholder stops");
- } else {
- Log.i(TAG, "Displaying previous timetable");
-
- }
- displayTimetable(timetable);
- handler.postDelayed(refreshData, 500);
-
- } else {
- Log.i(TAG, "Live Times Disabled");
- busContentMessage.setText("Live bus times disabled");
- busContentMessage.setVisibility(View.VISIBLE);
+
}
- }
+ public void onPause() {
+ if (handler != null) { // BusTimes are enabled
+ handler.removeCallbacks(refreshData);
+ for (GetTimetableStopTask task : tasks.values()) {
+ if (task != null) {
+ task.cancel(true);
+ }
+ }
- public void onPause() {
- if (handler != null) { // BusTimes are enabled
- handler.removeCallbacks(refreshData);
- for (GetTimetableStopTask task : tasks.values()) {
- if (task != null) {
- task.cancel(true);
+ Log.i(TAG, "Stoping refreshing timetable data");
}
- }
- Log.i(TAG, "Stoping refreshing timetable data");
+ super.onPause();
}
- super.onPause();
- }
+ private class GetTimetableStopTask extends AsyncTask<BusStop, Integer, Stop> {
+ private String errorMessage;
- private class GetTimetableStopTask extends AsyncTask<BusStop, Integer, Stop> {
- private String errorMessage;
+ private BusStop busStop;
- private BusStop busStop;
-
- private int position;
-
- protected void onPreExecute() {
- // progBar.setVisibility(View.VISIBLE);
- }
+ private int position;
- protected Stop doInBackground(BusStop... busStopArray) {
- busStop = busStopArray[0];
- position = busStops.indexOf(busStop);
- Stop stop = null;
+ protected void onPreExecute() {
+ // progBar.setVisibility(View.VISIBLE);
+ }
- try {
- Log.i(TAG, "Fetching stop for busStop " + position);
- stop = DataManager.getStop(instance, bus, busStop);
- if (stop == null) {
- stop = new Stop(bus, busStop, null, null, false);
+ protected Stop doInBackground(BusStop... busStopArray) {
+ busStop = busStopArray[0];
+ position = busStops.indexOf(busStop);
+ Stop stop = null;
+
+ try {
+ Log.i(TAG, "Fetching stop for busStop " + position);
+ stop = DataManager.getStop(instance, bus, busStop);
+ if (stop == null) {
+ stop = new Stop(bus, busStop, null, null, false);
+ }
+ Log.i(TAG, "Finished fetching stop for busStop " + position);
+ } catch (SQLException e) {
+ errorMessage = "Error message regarding SQL?";
+ e.printStackTrace();
+ } catch (ClientProtocolException e) {
+ errorMessage = "ClientProtocolException!?!";
+ e.printStackTrace();
+ } catch (IOException e) {
+ errorMessage = "Error fetching bus times from server, are you connected to the internet?";
+ e.printStackTrace();
+ } catch (JSONException e) {
+ errorMessage = "Error parsing bus times";
+ e.printStackTrace();
+ }
+ return stop;
}
- Log.i(TAG, "Finished fetching stop for busStop " + position);
- } catch (SQLException e) {
- errorMessage = "Error message regarding SQL?";
- e.printStackTrace();
- } catch (ClientProtocolException e) {
- errorMessage = "ClientProtocolException!?!";
- e.printStackTrace();
- } catch (IOException e) {
- errorMessage = "Error fetching bus times from server, are you connected to the internet?";
- e.printStackTrace();
- } catch (JSONException e) {
- errorMessage = "Error parsing bus times";
- e.printStackTrace();
- }
- return stop;
- }
- protected void onPostExecute(Stop stop) {
- // Log.i(TAG, "Got timetable");
- if (stop == null) {
- Log.i(TAG, "Its null");
-
- busContentMessage.setText(errorMessage);
- busContentMessage.setVisibility(View.VISIBLE);
- } else {
- synchronized (timetable) {
- timetable.set(position, stop);
- displayTimetable(timetable);
+ protected void onPostExecute(Stop stop) {
+ // Log.i(TAG, "Got timetable");
+ if (stop == null) {
+ Log.i(TAG, "Its null");
+
+ busContentMessage.setText(errorMessage);
+ busContentMessage.setVisibility(View.VISIBLE);
+ } else {
+ synchronized (timetable) {
+ timetable.set(position, stop);
+ displayTimetable(timetable);
+ }
+ }
}
- }
+
}
- }
-
- private void displayTimetable(Timetable timetable) {
- visibleTimetable = (Timetable) timetable.clone();
-
- // Log.i(TAG, "Displaying timetable, it contains " + visibleTimetable.size() + " stops");
-
- if (timetable.size() == 0) {
- busContentMessage.setText("No Busses");
- busContentMessage.setVisibility(View.VISIBLE);
- busActivityContentLayout.setGravity(Gravity.CENTER);
- } else {
- if (visibleTimetable.size() == 0) {
- busActivityContentLayout.setGravity(Gravity.CENTER);
- busContentMessage.setText("No Busses (With the current enabled routes)");
- busContentMessage.setVisibility(View.VISIBLE);
- timetableView.setVisibility(View.GONE);
- } else {
- timetableView.setVisibility(View.VISIBLE);
- busContentMessage.setVisibility(View.GONE);
- BusSpecificTimetableAdapter adapter;
- if ((adapter = (BusSpecificTimetableAdapter) timetableView.getAdapter()) != null) {
- adapter.updateTimetable(visibleTimetable);
+ private void displayTimetable(Timetable timetable) {
+ visibleTimetable = (Timetable) timetable.clone();
+
+ // Log.i(TAG, "Displaying timetable, it contains " + visibleTimetable.size() + " stops");
+
+ if (timetable.size() == 0) {
+ busContentMessage.setText("No Busses");
+ busContentMessage.setVisibility(View.VISIBLE);
+ busActivityContentLayout.setGravity(Gravity.CENTER);
} else {
- adapter = new BusSpecificTimetableAdapter(this, visibleTimetable);
- timetableView.setAdapter(adapter);
- if (busStop != null) {
- Log.i(TAG,
- "Moving to position of " + busStop.description + " which is "
- + busStops.indexOf(busStop));
- timetableView.setSelection(busStops.indexOf(busStop));
- }
+ if (visibleTimetable.size() == 0) {
+ busActivityContentLayout.setGravity(Gravity.CENTER);
+ busContentMessage.setText("No Busses (With the current enabled routes)");
+ busContentMessage.setVisibility(View.VISIBLE);
+ timetableView.setVisibility(View.GONE);
+ } else {
+ timetableView.setVisibility(View.VISIBLE);
+ busContentMessage.setVisibility(View.GONE);
+ BusSpecificTimetableAdapter adapter;
+ if ((adapter = (BusSpecificTimetableAdapter) timetableView.getAdapter()) != null) {
+ adapter.updateTimetable(visibleTimetable);
+ } else {
+ adapter = new BusSpecificTimetableAdapter(this, visibleTimetable);
+ timetableView.setAdapter(adapter);
+ if (busStop != null) {
+ Log.i(TAG, "Moving to position of " + busStop.description + " which is " + busStops.indexOf(busStop));
+ timetableView.setSelection(busStops.indexOf(busStop));
+ }
+ }
+ busActivityContentLayout.setGravity(Gravity.TOP);
+ }
}
- busActivityContentLayout.setGravity(Gravity.TOP);
- }
}
- }
}