From e70daa33cc30f4768e4e7eae540fd458cc2f0679 Mon Sep 17 00:00:00 2001 From: Caesar2011 Date: Sat, 20 Oct 2018 00:27:06 +0200 Subject: [PATCH] Added canteens, made Canteen plan more stable --- .../canteen/DaySwitcherFragment.java | 1 + .../fragments/canteen/MealAdapter.java | 32 ++++++++++++++++--- .../services/Canteen/CanteenBrowser.java | 9 +++--- .../services/Canteen/types/Canteen.java | 11 +++++++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values/strings.xml | 3 +- 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java index 46be30a..d657d9e 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java @@ -113,6 +113,7 @@ public class DaySwitcherFragment extends Fragment implements DaySwitcherListener CanteenBrowser browser = ((MainActivity) getActivity()).getCanteenBrowser(); browser.getCanteens(canteens -> { Canteen canteen = canteens.getCanteen(mCanteenId); + canteen.cleanUpDays(); adapterViewPager.setModule(canteen); browser.getCanteen(canteen, success -> { adapterViewPager.setModule(); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java index 1f5f787..5c7d55d 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java @@ -58,16 +58,40 @@ class MealAdapter extends RecyclerView.Adapter { String value; switch (Preferences.getString(mContext, R.array.pref_price_group)) { case "student": - value = mContext.getString(R.string.price, meal.getPriceStdnt()); + if (meal.getPriceStdnt() < 0) + value = mContext.getResources().getString(R.string.no_price_available); + else + value = mContext.getString(R.string.price, meal.getPriceStdnt()); break; case "employee": - value = mContext.getString(R.string.price, meal.getPriceEmply()); + if (meal.getPriceEmply() < 0) + value = mContext.getResources().getString(R.string.no_price_available); + else + value = mContext.getString(R.string.price, meal.getPriceEmply()); break; case "other": - value = mContext.getString(R.string.price, meal.getPriceOther()); + if (meal.getPriceOther() < 0) + value = mContext.getResources().getString(R.string.no_price_available); + else + value = mContext.getString(R.string.price, meal.getPriceOther()); break; default: - value = mContext.getString(R.string.prices, meal.getPriceStdnt(), meal.getPriceEmply(), meal.getPriceOther()); + String value1; + if (meal.getPriceStdnt() < 0) + value1 = " -/- "; + else + value1 = mContext.getString(R.string.price, meal.getPriceStdnt()); + String value2; + if (meal.getPriceEmply() < 0) + value2 = " -/- "; + else + value2 = mContext.getString(R.string.price, meal.getPriceEmply()); + String value3; + if (meal.getPriceOther() < 0) + value3 = " -/- "; + else + value3 = mContext.getString(R.string.price, meal.getPriceOther()); + value = mContext.getString(R.string.prices, value1, value2, value3); } viewHolder.mSubTitle.setText(value); StringBuilder string = new StringBuilder(); diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/CanteenBrowser.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/CanteenBrowser.java index 88df91d..d1f886e 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/CanteenBrowser.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/CanteenBrowser.java @@ -65,7 +65,7 @@ public class CanteenBrowser extends HTTPService { } private void upgradeCanteens(final NetworkCallback callback, final NetworkErrorCallback errorCallback) { - get("https://openmensa.org/api/v2/canteens", null, response -> { + get("https://openmensa.org/api/v2/canteens?near[lat]=52.449743&near[lng]=13.282245&near[dist]=7", null, response -> { String body = response.getParsed(); if (body == null) { errorCallback.onError(new NetworkError(201101, 403, "No canteen list retrieved!")); @@ -192,9 +192,9 @@ public class CanteenBrowser extends HTTPService { double priceEmply = 0; double priceOther = 0; if (prices != null) { - priceStdnt = prices.getDouble("students"); - priceEmply = prices.getDouble("employees"); - priceOther = prices.getDouble("others"); + priceOther = prices.optDouble("others", -1); + priceEmply = prices.optDouble("employees", priceOther); + priceStdnt = prices.optDouble("students", priceEmply); } JSONArray noteArray = meal.getJSONArray("notes"); String[] notes = new String[noteArray.length()]; @@ -206,6 +206,7 @@ public class CanteenBrowser extends HTTPService { } } catch (JSONException e) { e.printStackTrace(); + log.d(body); errorCallback.onError(new NetworkError(201302, 403, "Cannot parse meal list!")); return; } diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java index 165b38b..83d2259 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java @@ -50,6 +50,17 @@ public class Canteen implements Serializable, Iterable { } } + public void cleanUpDays() { + SortedListDay newList = new SortedListDay(); + Calendar cal = Calendar.getInstance(); + for (Day day : list) { + if (Canteen.calendarToKey(day.getCalendar()).compareTo(Canteen.calendarToKey(cal)) >= 0) { + newList.add(day); + } + } + list = newList; + } + public int size() { return this.list.size(); } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5d9f4f1..a17a7db 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -62,4 +62,5 @@ Beim Herunterladen der Datei ist ein Fehler aufgetreten. Prüfe, ob Du mit dem Internet verbunden bist und der App Zugriff auf den Speicher gewährt hast. Ungültiger Benutzername oder Password! Fehler %1$d aufgetreten! + Kein Preis verfügbar! \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e80dc8..92528d8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,7 +40,7 @@ Refresh Go to today Canteens - %1$.2f€ / %2$.2f€ / %3$.2f€ + %1$s / %2$s / %3$s %1$.2f€ / Location: %1$s @@ -69,4 +69,5 @@ An error occurred while downloading the file. Please check if you are connected to the internet and if you have granted storage access to the app. Invalid username or password! Error occurred: %1$d + No price available!