From ea1569cb769d4c43b61309fe0a8cb00aa7cc3bb2 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 18 Jun 2023 22:34:29 -0500 Subject: [PATCH] Don't attempt to load an object that hasn't been listed yet by the provider - Fixes issue when switching to a new product, product does not display the first time --- .../scwx/qt/manager/radar_product_manager.cpp | 15 ++++++++++++--- wxdata/source/scwx/awips/wmo_header.cpp | 12 ++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp b/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp index e9bb8463..f387f807 100644 --- a/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp @@ -792,7 +792,16 @@ void RadarProductManagerImpl::LoadProviderData( if (existingRecord == nullptr) { std::string key = providerManager->provider_->FindKey(time); - nexradFile = providerManager->provider_->LoadObjectByKey(key); + + if (!key.empty()) + { + nexradFile = providerManager->provider_->LoadObjectByKey(key); + } + else + { + logger_->warn("Attempting to load object without key: {}", + scwx::util::TimeString(time)); + } } else { @@ -1042,7 +1051,7 @@ RadarProductManagerImpl::GetLevel2ProductRecord( record = recordPtr->second.lock(); } - if (record == nullptr && + if (recordPtr != nullptr && record == nullptr && recordTime != std::chrono::system_clock::time_point {}) { // Product is expired, reload it @@ -1107,7 +1116,7 @@ RadarProductManagerImpl::GetLevel3ProductRecord( } } - if (record == nullptr && + if (recordPtr != nullptr && record == nullptr && recordTime != std::chrono::system_clock::time_point {}) { // Product is expired, reload it diff --git a/wxdata/source/scwx/awips/wmo_header.cpp b/wxdata/source/scwx/awips/wmo_header.cpp index 8e6a8519..f75cbded 100644 --- a/wxdata/source/scwx/awips/wmo_header.cpp +++ b/wxdata/source/scwx/awips/wmo_header.cpp @@ -176,28 +176,28 @@ bool WmoHeader::Parse(std::istream& is) if (wmoTokenList.size() < 3 || wmoTokenList.size() > 4) { - logger_->debug("Invalid number of WMO tokens"); + logger_->warn("Invalid number of WMO tokens"); headerValid = false; } else if (wmoTokenList[0].size() != 6) { - logger_->debug("WMO identifier malformed"); + logger_->warn("WMO identifier malformed"); headerValid = false; } else if (wmoTokenList[1].size() != 4) { - logger_->debug("ICAO malformed"); + logger_->warn("ICAO malformed"); headerValid = false; } else if (wmoTokenList[2].size() != 6) { - logger_->debug("Date/time malformed"); + logger_->warn("Date/time malformed"); headerValid = false; } else if (wmoTokenList.size() == 4 && wmoTokenList[3].size() != 3) { // BBB indicator is optional - logger_->debug("BBB indicator malformed"); + logger_->warn("BBB indicator malformed"); headerValid = false; } else @@ -226,7 +226,7 @@ bool WmoHeader::Parse(std::istream& is) { if (awipsLine.size() != 6) { - logger_->debug("AWIPS Identifier Line bad size"); + logger_->warn("AWIPS Identifier Line bad size"); headerValid = false; } else