From 3f0f6979b3a06f48fecacc8e59549a2f629b040f Mon Sep 17 00:00:00 2001 From: evilbunny2008 <34211365+evilbunny2008@users.noreply.github.com> Date: Sat, 5 Jan 2019 18:55:24 +1100 Subject: [PATCH] More automated forecast update fixes --- app/build.gradle | 4 +- .../com/odiousapps/weewxweather/Common.java | 40 +++++++++++-------- .../com/odiousapps/weewxweather/Forecast.java | 10 ++--- .../odiousapps/weewxweather/MainActivity.java | 6 +-- .../com/odiousapps/weewxweather/Weather.java | 10 ++--- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e803d57..4d4ff1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.odiousapps.weewxweather" minSdkVersion 19 targetSdkVersion 28 - versionCode 8019 - versionName "0.8.19" + versionCode 8020 + versionName "0.8.20" } buildTypes { release { diff --git a/app/src/main/java/com/odiousapps/weewxweather/Common.java b/app/src/main/java/com/odiousapps/weewxweather/Common.java index 10514ce..4898bc7 100644 --- a/app/src/main/java/com/odiousapps/weewxweather/Common.java +++ b/app/src/main/java/com/odiousapps/weewxweather/Common.java @@ -386,7 +386,7 @@ String[] processDarkSky(String data, boolean showHeader) boolean metric = GetBoolPref("metric", true); String desc; - long timestamp = (long) GetIntPref("rssCheck", 0) * 1000; + long timestamp = GetLongPref("rssCheck", 0) * 1000; List days = new ArrayList<>(); try @@ -926,7 +926,7 @@ String[] processMET(String data, boolean showHeader) boolean metric = GetBoolPref("metric", true); boolean use_icons = GetBoolPref("use_icons", false); - long timestamp = (long)GetIntPref("rssCheck", 0) * 1000; + long timestamp = GetLongPref("rssCheck", 0) * 1000; String desc; List days = new ArrayList<>(); @@ -2106,7 +2106,7 @@ String[] processOWM(String data, boolean showHeader) String desc; boolean metric = GetBoolPref("metric", true); - long timestamp = (long)GetIntPref("rssCheck", 0) * 1000; + long timestamp = GetLongPref("rssCheck", 0) * 1000; try { @@ -2180,7 +2180,7 @@ String[] processYR(String data, boolean showHeader) JSONObject location = jobj.getJSONObject("location"); desc = location.getString("name") + ", " + location.getString("country"); - timestamp = (long)GetIntPref("rssCheck", 0) * 1000; + timestamp = GetLongPref("rssCheck", 0) * 1000; JSONArray jarr = jobj.getJSONObject("forecast") .getJSONObject("tabular") @@ -3391,6 +3391,21 @@ void getForecast(boolean force) return; } + final long curtime = round(System.currentTimeMillis() / 1000); + + if(GetStringPref("forecastData", "").equals("") || GetLongPref("rssCheck", 0) + 7190 < curtime) + { + LogMessage("no forecast data or cache is more than 2 hour old"); + } else { + LogMessage("cache isn't more than 2 hour old"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); + String date = sdf.format(GetLongPref("rssCheck", 0) * 1000); + LogMessage("rsscheck == " + date); + date = sdf.format(curtime * 1000); + LogMessage("curtime == " + date); + return; + } + LogMessage("forecast checking: " + forecast_url); Thread t = new Thread(new Runnable() @@ -3400,19 +3415,12 @@ public void run() { try { - int curtime = round(System.currentTimeMillis() / 1000); - - if(GetStringPref("forecastData", "").equals("") || GetIntPref("rssCheck", 0) + 7190 < curtime) + String tmp = downloadForecast(); + if(tmp != null) { - LogMessage("no forecast data or cache is more than 2 hour old"); - - String tmp = downloadForecast(); - if(tmp != null) - { - LogMessage("updating rss cache"); - SetIntPref("rssCheck", curtime); - SetStringPref("forecastData", tmp); - } + LogMessage("updating rss cache"); + SetLongPref("rssCheck", curtime); + SetStringPref("forecastData", tmp); } } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/odiousapps/weewxweather/Forecast.java b/app/src/main/java/com/odiousapps/weewxweather/Forecast.java index f51bf7a..596f71c 100644 --- a/app/src/main/java/com/odiousapps/weewxweather/Forecast.java +++ b/app/src/main/java/com/odiousapps/weewxweather/Forecast.java @@ -225,8 +225,8 @@ public void onScrollChanged() if(!common.GetStringPref("RADAR_URL", "").equals("") && f2.lastModified() + period[0] < System.currentTimeMillis()) reloadWebView(false); - int curtime = Math.round(System.currentTimeMillis() / 1000); - if(!common.GetBoolPref("radarforecast", true) && common.GetIntPref("rssCheck", 0) + 7190 < curtime) + long curtime = Math.round(System.currentTimeMillis() / 1000); + if(!common.GetBoolPref("radarforecast", true) && common.GetLongPref("rssCheck", 0) + 7190 < curtime) getForecast(false); return rootView; @@ -478,16 +478,16 @@ public void run() { try { - int curtime = Math.round(System.currentTimeMillis() / 1000); + long curtime = Math.round(System.currentTimeMillis() / 1000); - if(common.GetStringPref("forecastData", "").equals("") || common.GetIntPref("rssCheck", 0) + 7190 < curtime) + if(common.GetStringPref("forecastData", "").equals("") || common.GetLongPref("rssCheck", 0) + 7190 < curtime) { Common.LogMessage("no forecast data or cache is more than 2 hour old"); String tmp = common.downloadForecast(); Common.LogMessage("updating rss cache"); - common.SetIntPref("rssCheck", curtime); + common.SetLongPref("rssCheck", curtime); common.SetStringPref("forecastData", tmp); handlerDone.sendEmptyMessage(0); } diff --git a/app/src/main/java/com/odiousapps/weewxweather/MainActivity.java b/app/src/main/java/com/odiousapps/weewxweather/MainActivity.java index 0aad900..e3c656e 100644 --- a/app/src/main/java/com/odiousapps/weewxweather/MainActivity.java +++ b/app/src/main/java/com/odiousapps/weewxweather/MainActivity.java @@ -506,7 +506,7 @@ public void run() Switch use_icons = findViewById(R.id.use_icons); RadioButton showRadar = findViewById(R.id.showRadar); - int curtime = Math.round(System.currentTimeMillis() / 1000); + long curtime = Math.round(System.currentTimeMillis() / 1000); if(use_icons.isChecked() && (common.GetLongPref("icon_version", 0) < Common.icon_version || !common.checkForImages())) { @@ -805,7 +805,7 @@ public void run() { validURL3 = true; Common.LogMessage("updating rss cache"); - common.SetIntPref("rssCheck", curtime); + common.SetLongPref("rssCheck", curtime); common.SetStringPref("forecastData", tmp); } } catch (Exception e) { @@ -876,7 +876,7 @@ public void run() if(forecast.equals("")) { - common.SetIntPref("rssCheck", 0); + common.SetLongPref("rssCheck", 0); common.SetStringPref("forecastData", ""); } diff --git a/app/src/main/java/com/odiousapps/weewxweather/Weather.java b/app/src/main/java/com/odiousapps/weewxweather/Weather.java index c3650c4..7cc31c9 100644 --- a/app/src/main/java/com/odiousapps/weewxweather/Weather.java +++ b/app/src/main/java/com/odiousapps/weewxweather/Weather.java @@ -284,8 +284,8 @@ public boolean onConsoleMessage(ConsoleMessage cm) if(!common.GetStringPref("RADAR_URL", "").equals("") && f2.lastModified() + period[0] < System.currentTimeMillis()) reloadWebView(false); - int curtime = round(System.currentTimeMillis() / 1000); - if(!common.GetBoolPref("radarforecast", true) && common.GetIntPref("rssCheck", 0) + 7190 < curtime) + long curtime = round(System.currentTimeMillis() / 1000); + if(!common.GetBoolPref("radarforecast", true) && common.GetLongPref("rssCheck", 0) + 7190 < curtime) reloadForecast(false); return updateFields(); @@ -910,9 +910,9 @@ public void run() { try { - int curtime = round(System.currentTimeMillis() / 1000); + long curtime = round(System.currentTimeMillis() / 1000); - if(common.GetStringPref("forecastData", "").equals("") || common.GetIntPref("rssCheck", 0) + 7190 < curtime) + if(common.GetStringPref("forecastData", "").equals("") || common.GetLongPref("rssCheck", 0) + 7190 < curtime) { Common.LogMessage("no forecast data or cache is more than 2 hour old"); @@ -920,7 +920,7 @@ public void run() if(tmp != null) { Common.LogMessage("updating rss cache"); - common.SetIntPref("rssCheck", curtime); + common.SetLongPref("rssCheck", curtime); common.SetStringPref("forecastData", tmp); handlerDone.sendEmptyMessage(0);