Skip to content

Commit

Permalink
1. Make sure restaurants are only downloaded once.
Browse files Browse the repository at this point in the history
2. Check whether it's necessary to download restaurants on each resume.
3. Change OpeningTime model
  • Loading branch information
joshliberty committed Jul 5, 2014
1 parent f10e7e4 commit 00fe120
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 24 deletions.
4 changes: 3 additions & 1 deletion res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
<string name="app_name">VeganFriendly</string>
<string name="view_list">הצג כרשימה</string>
<string name="no_internet_connection">אין חיבור אינטרנט</string>
<string name="error_getting_restaurants">שגיאה בטעינת רשימת המסעדות.</string>
<string name="error_getting_restaurants">אירעה שגיאה בעת ההתחברות לשרת. אנא ודאו כי אתם מחוברים לאינטרנט, ונסו שנית.</string>
<string name="no_location">שירותי מיקום לא פעילים</string>
<string name="enable_location">אנו ממליצים להפעיל את שירותי המיקום על מנת לראות מסעדות בסביבתכם.</string>
<string name="go_to_settings">הפעלה</string>
<string name="cancel">ביטול</string>
<string name="rest_photo_desc">תמונת המסעדה</string>
<string name="navigate">ניווט למסעדה</string>
<string name="call">חיוג למסעדה</string>
<string name="error">שגיאת התחברות</string>
<string name="retry">נסה שנית</string>


</resources>
46 changes: 40 additions & 6 deletions src/com/joshliberty/veganfriendly/MapActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

import java.util.*;

@SuppressWarnings("unchecked")
public class MapActivity extends Activity implements Callback<List<Restaurant>>,
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener, View.OnClickListener {
Expand All @@ -48,6 +49,8 @@ public class MapActivity extends Activity implements Callback<List<Restaurant>>,
FileDownloader fileDownloader;
private LocationClient locationClient;
private boolean initialMoveDone;
private boolean gettingRestaurants;
private boolean active = false;

// Android Framework Callbacks
public void onCreate(Bundle savedInstanceState) {
Expand All @@ -66,13 +69,21 @@ protected void onResume(){
super.onResume();
setupMap();
setupLocationClient();
if(restaurantsInDb == null){
if(!gettingRestaurants && (restaurantsInDb == null || restaurantsInDb.size() == 0)){
getRestaurants();
} else {
showRestaurantsOnMap();
}

}
protected void onStart(){
super.onStart();
active = true;
}
protected void onStop(){
super.onStop();
active = false;
}
public void onClick(View v) {
switch (v.getId()){
default:
Expand All @@ -90,7 +101,6 @@ private void setUserLocation(Location location){
if(!initialMoveDone){
initialMoveDone = true;
moveCameraToLocation(userLocation.getLatitude(), userLocation.getLongitude());
getRestaurants();
}
}
private void startLocationClient(){
Expand Down Expand Up @@ -149,7 +159,6 @@ public void onClick(DialogInterface dialog, int which) {
@Override
public void onCancel(DialogInterface dialog) {
Log.d(MapActivity.class.getSimpleName(), "Dialog cancelled. We'll get restaurants");
getRestaurants();
dialog.dismiss();
}
});
Expand Down Expand Up @@ -181,6 +190,7 @@ protected void onPostExecute(Void result){
restaurantsInDb.addAll(restaurantsToAdd);
showRestaurantsOnMap();
fileDownloader.fetchMissingImages();
gettingRestaurants = false;
}
}.execute(restaurants);

Expand Down Expand Up @@ -227,6 +237,7 @@ private void addRestaurant(Restaurant restaurant){
}
}
private void getRestaurants(){
gettingRestaurants = true;
Log.d(MapActivity.class.getSimpleName(), "Loading restaurants from db");
restaurantsInDb = new Select().from(Restaurant.class).execute();
Log.d(MapActivity.class.getSimpleName(), "Got "+ restaurantsInDb.size()+" restaurants");
Expand All @@ -236,12 +247,13 @@ private void getRestaurants(){
Log.d(MapActivity.class.getSimpleName(), "Trying to get restaurants from server");
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(ApiService.API_SERVER).build();
ApiService service = restAdapter.create(ApiService.class);
service.getRestaurants(mapCenter.target.latitude, mapCenter.target.longitude, this);
service.getRestaurants(this);
} else {
gettingRestaurants = false;
}
showRestaurantsOnMap();
fileDownloader.fetchMissingImages();
}
@SuppressWarnings("unchecked")
private void showRestaurantsOnMap(){
Log.d(MapActivity.class.getSimpleName(), "Showing restaurants in map");
Log.d(MapActivity.class.getSimpleName(), "Zoom level is "+mapCenter.zoom);
Expand All @@ -266,13 +278,35 @@ public void success(List<Restaurant> restaurants, Response response) {
handleRetrievedRestaurants(restaurants);
}
public void failure(RetrofitError error) {
gettingRestaurants = false;
String err;
if(error == null || error.getResponse() == null || error.getBody() == null){
err = "Unknown Error";
} else {
err = error.getBody().toString();
}
Toast.makeText(this, getString(R.string.error_getting_restaurants)+err, Toast.LENGTH_LONG).show();
Toast.makeText(this, getString(R.string.error_getting_restaurants), Toast.LENGTH_LONG).show();

if(active){
DialogUtil.showDialog(this, R.string.error,
R.string.error_getting_restaurants,
R.string.retry,
R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getRestaurants();
dialog.dismiss();
}
},
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
Log.d(MapActivity.class.getSimpleName(), "Dialog cancelled.");
dialog.dismiss();
}
});
}
}

// Location Service Callbacks
Expand Down
4 changes: 2 additions & 2 deletions src/com/joshliberty/veganfriendly/api/ApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
public interface ApiService {
public static String API_SERVER = "http://futuremeat.org:8080";
public static String STATIC_PATH = "/static/";
@GET("/restaurants/{latitude}/{longitude}")
void getRestaurants(@Path("latitude") double latitude, @Path("longitude") double longitude, Callback<List<Restaurant>> cb);
@GET("/restaurants/")
void getRestaurants(Callback<List<Restaurant>> cb);
@GET("/static/{filename}")
void getImage(@Path("filename") String filename, Callback<File> cb);
}
113 changes: 99 additions & 14 deletions src/com/joshliberty/veganfriendly/models/OpeningTime.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,31 +13,116 @@
@Table(name="opening_times")
public class OpeningTime extends Model {
@Column(name="sunday_open")
public Time sundayOpen;
public String sunday_o;
@Column(name="sunday_close")
public Time sundayClose;
public String sunday_c;
@Column(name="monday_open")
public Time mondayOpen;
public String monday_o;
@Column(name="monday_close")
public Time mondayClose;
public String monday_c;
@Column(name="tuesday_open")
public Time tuesdayOpen;
public String tuesday_o;
@Column(name="tuesday_close")
public Time tuesdayClose;
public String tuesday_c;
@Column(name="wednesday_open")
public Time wednesdayOpen;
public String wednesday_o;
@Column(name="wednesday_close")
public Time wednesdayClose;
public String wednesday_c;
@Column(name="thursday_open")
public Time thursdayOpen;
public String thursday_o;
@Column(name="thursday_close")
public Time thursdayClose;
public String thursday_c;
@Column(name="friday_open")
public Time fridayOpen;
public String friday_o;
@Column(name="friday_close")
public Time fridayClose;
public String friday_c;
@Column(name="saturday_open")
public Time saturdayOpen;
public String saturday_o;
@Column(name="saturday_close")
public Time saturdayClose;
public String saturday_c;

public String getSunday_o() {
return sunday_o;
}
public void setSunday_o(String sunday_o) {
this.sunday_o = sunday_o;
}
public String getSunday_c() {
return sunday_c;
}
public void setSunday_c(String sunday_c) {
this.sunday_c = sunday_c;
}
public String getMonday_o() {
return monday_o;
}
public void setMonday_o(String monday_o) {
this.monday_o = monday_o;
}
public String getMonday_c() {
return monday_c;
}
public void setMonday_c(String monday_c) {
this.monday_c = monday_c;
}
public String getTuesday_o() {
return tuesday_o;
}
public void setTuesday_o(String tuesday_o) {
this.tuesday_o = tuesday_o;
}
public String getTuesday_c() {
return tuesday_c;
}
public void setTuesday_c(String tuesday_c) {
this.tuesday_c = tuesday_c;
}
public String getWednesday_o() {
return wednesday_o;
}
public void setWednesday_o(String wednesday_o) {
this.wednesday_o = wednesday_o;
}
public String getWednesday_c() {
return wednesday_c;
}
public void setWednesday_c(String wednesday_c) {
this.wednesday_c = wednesday_c;
}
public String getThursday_o() {
return thursday_o;
}
public void setThursday_o(String thursday_o) {
this.thursday_o = thursday_o;
}
public String getThursday_c() {
return thursday_c;
}
public void setThursday_c(String thursday_c) {
this.thursday_c = thursday_c;
}
public String getFriday_o() {
return friday_o;
}
public void setFriday_o(String friday_o) {
this.friday_o = friday_o;
}
public String getFriday_c() {
return friday_c;
}
public void setFriday_c(String friday_c) {
this.friday_c = friday_c;
}
public String getSaturday_o() {
return saturday_o;
}
public void setSaturday_o(String saturday_o) {
this.saturday_o = saturday_o;
}
public String getSaturday_c() {
return saturday_c;
}
public void setSaturday_c(String saturday_c) {
this.saturday_c = saturday_c;
}
}
10 changes: 9 additions & 1 deletion src/com/joshliberty/veganfriendly/models/Restaurant.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ public class Restaurant extends Model {
@Column(name="Opening_times")
public OpeningTime opening_times;

@Column(name="Opening_time_id")
public Integer opening_time;

// Public API
public LatLng getLocation(){
return new LatLng(latitude, longitude);
Expand Down Expand Up @@ -127,5 +130,10 @@ public boolean isImage_fetched() {
public void setImage_fetched(boolean image_fetched) {
this.image_fetched = image_fetched;
}

public Integer getOpening_time() {
return opening_time;
}
public void setOpening_time(Integer opening_time) {
this.opening_time = opening_time;
}
}

0 comments on commit 00fe120

Please sign in to comment.