From 72efe7ca4fa98b28656056203b3a0c3ee4d1f7db Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Mon, 21 Oct 2019 10:34:35 +0200 Subject: [PATCH] Server: adapt infinity filters to QgsRange API --- src/server/qgsserverapiutils.cpp | 54 ++++++++++++++---- .../test_project_api_timefilters.gpkg | Bin 102400 -> 102400 bytes 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/server/qgsserverapiutils.cpp b/src/server/qgsserverapiutils.cpp index 7b4da71c4d3..8499a0e4d99 100644 --- a/src/server/qgsserverapiutils.cpp +++ b/src/server/qgsserverapiutils.cpp @@ -456,21 +456,51 @@ json QgsServerApiUtils::temporalExtent( const QgsVectorLayer *layer ) } else { - QgsDateTimeRange extent; - for ( const auto &dimension : dimensions ) + try { - // Get min/max for dimension - extent.extend( range( dimension ) ); + QgsDateTimeRange extent; + bool isFirst = true; + for ( const auto &dimension : dimensions ) + { + // Get min/max for dimension + if ( isFirst ) + { + extent = range( dimension ); + isFirst = false; + } + else + { + extent.extend( range( dimension ) ); + } + } + json ret = json::array(); + const QString beginVal { extent.begin().toString( Qt::DateFormat::ISODate ) }; + const QString endVal { extent.end().toString( Qt::DateFormat::ISODate ) }; + // We cannot mix nullptr and std::string :( + if ( beginVal.isEmpty() && endVal.isEmpty() ) + { + ret.push_back( { nullptr, nullptr } ); + } + else if ( beginVal.isEmpty() ) + { + ret.push_back( { nullptr, endVal.toStdString() } ); + } + else if ( endVal.isEmpty() ) + { + ret.push_back( { beginVal.toStdString(), nullptr } ); + } + else + { + ret.push_back( { beginVal.toStdString(), endVal.toStdString() } ); + } + return ret; } - json ret = json::array(); - const QString beginVal { extent.begin().toString( Qt::DateFormat::ISODate ) }; - const QString endVal { extent.end().toString( Qt::DateFormat::ISODate ) }; - ret.push_back( + catch ( std::exception &ex ) { - beginVal.isEmpty() ? nullptr : beginVal.toStdString(), - endVal.isEmpty() ? nullptr : endVal.toStdString() - } ); - return ret; + const QString errorMessage { QStringLiteral( "Error creating temporal extent: %1" ).arg( ex.what() ) }; + QgsMessageLog::logMessage( errorMessage, QStringLiteral( "Server" ), Qgis::Critical ); + throw QgsServerApiInternalServerError( errorMessage ); + } } } diff --git a/tests/testdata/qgis_server/test_project_api_timefilters.gpkg b/tests/testdata/qgis_server/test_project_api_timefilters.gpkg index 013406a6207e360024315aedf117a7943218d5c1..508b8f165fc52c6825414bb45eec72cee69626d8 100644 GIT binary patch delta 173 zcmZozz}B#UO(r K{;i&oO8@}fvn~k$ delta 170 zcmZozz}B#UO(r K{;i&oO8@{ICNHi4