@@ -9,7 +9,7 | |||||
9 | * @sa IDataProvider |
|
9 | * @sa IDataProvider | |
10 | */ |
|
10 | */ | |
11 | struct DataProviderParameters { |
|
11 | struct DataProviderParameters { | |
12 | SqpDateTime m_Time; |
|
12 | QVector<SqpDateTime> m_Times; | |
13 | }; |
|
13 | }; | |
14 |
|
14 | |||
15 | #endif // SCIQLOP_DATAPROVIDERPARAMETERS_H |
|
15 | #endif // SCIQLOP_DATAPROVIDERPARAMETERS_H |
@@ -30,10 +30,9 public: | |||||
30 | virtual ~IDataProvider() noexcept = default; |
|
30 | virtual ~IDataProvider() noexcept = default; | |
31 |
|
31 | |||
32 | /** |
|
32 | /** | |
33 |
* @brief requestDataLoading provide datas for the data identified by identifier |
|
33 | * @brief requestDataLoading provide datas for the data identified by identifier and parameters | |
34 | * SqpDateTime of dateTimeList |
|
|||
35 | */ |
|
34 | */ | |
36 |
virtual void requestDataLoading(QUuid identifier, const |
|
35 | virtual void requestDataLoading(QUuid identifier, const DataProviderParameters ¶meters) = 0; | |
37 |
|
36 | |||
38 | signals: |
|
37 | signals: | |
39 | /** |
|
38 | /** |
@@ -186,7 +186,7 void VariableController::onRequestDataLoading(std::shared_ptr<Variable> variable | |||||
186 | // Ask the provider for each data on the dateTimeListNotInCache |
|
186 | // Ask the provider for each data on the dateTimeListNotInCache | |
187 | auto identifier = impl->m_VariableToIdentifier.at(variable); |
|
187 | auto identifier = impl->m_VariableToIdentifier.at(variable); | |
188 | impl->m_VariableToProviderMap.at(variable)->requestDataLoading( |
|
188 | impl->m_VariableToProviderMap.at(variable)->requestDataLoading( | |
189 | identifier, std::move(dateTimeListNotInCache)); |
|
189 | identifier, DataProviderParameters{std::move(dateTimeListNotInCache)}); | |
190 | } |
|
190 | } | |
191 | else { |
|
191 | else { | |
192 | emit variable->updated(); |
|
192 | emit variable->updated(); |
@@ -21,10 +21,10 class SCIQLOP_AMDA_EXPORT AmdaProvider : public IDataProvider { | |||||
21 | public: |
|
21 | public: | |
22 | explicit AmdaProvider(); |
|
22 | explicit AmdaProvider(); | |
23 |
|
23 | |||
24 |
void requestDataLoading(QUuid token, const |
|
24 | void requestDataLoading(QUuid token, const DataProviderParameters ¶meters) override; | |
25 |
|
25 | |||
26 | private: |
|
26 | private: | |
27 |
void retrieveData(QUuid token, const |
|
27 | void retrieveData(QUuid token, const SqpDateTime &dateTime); | |
28 |
|
28 | |||
29 | class AmdaProviderPrivate; |
|
29 | class AmdaProviderPrivate; | |
30 | spimpl::unique_impl_ptr<AmdaProviderPrivate> impl; |
|
30 | spimpl::unique_impl_ptr<AmdaProviderPrivate> impl; |
@@ -38,7 +38,7 QString dateFormat(double sqpDateTime) noexcept | |||||
38 | } // namespace |
|
38 | } // namespace | |
39 |
|
39 | |||
40 | struct AmdaProvider::AmdaProviderPrivate { |
|
40 | struct AmdaProvider::AmdaProviderPrivate { | |
41 | DataProviderParameters m_Params{}; |
|
41 | SqpDateTime m_DateTime{}; | |
42 | std::unique_ptr<QNetworkAccessManager> m_AccessManager{nullptr}; |
|
42 | std::unique_ptr<QNetworkAccessManager> m_AccessManager{nullptr}; | |
43 | QNetworkReply *m_Reply{nullptr}; |
|
43 | QNetworkReply *m_Reply{nullptr}; | |
44 | // std::unique_ptr<QTemporaryFile> m_File{nullptr}; |
|
44 | // std::unique_ptr<QTemporaryFile> m_File{nullptr}; | |
@@ -56,22 +56,23 AmdaProvider::AmdaProvider() : impl{spimpl::make_unique_impl<AmdaProviderPrivate | |||||
56 | } |
|
56 | } | |
57 | } |
|
57 | } | |
58 |
|
58 | |||
59 |
void AmdaProvider::requestDataLoading(QUuid token, const |
|
59 | void AmdaProvider::requestDataLoading(QUuid token, const DataProviderParameters ¶meters) | |
60 | { |
|
60 | { | |
61 | // NOTE: Try to use multithread if possible |
|
61 | // NOTE: Try to use multithread if possible | |
62 | for (const auto &dateTime : dateTimeList) { |
|
62 | const auto times = parameters.m_Times; | |
63 | retrieveData(token, DataProviderParameters{dateTime}); |
|
63 | for (const auto &dateTime : qAsConst(times)) { | |
|
64 | retrieveData(token, dateTime); | |||
64 | } |
|
65 | } | |
65 | } |
|
66 | } | |
66 |
|
67 | |||
67 |
void AmdaProvider::retrieveData(QUuid token, const |
|
68 | void AmdaProvider::retrieveData(QUuid token, const SqpDateTime &dateTime) | |
68 | { |
|
69 | { | |
69 | // /////////// // |
|
70 | // /////////// // | |
70 | // Creates URL // |
|
71 | // Creates URL // | |
71 | // /////////// // |
|
72 | // /////////// // | |
72 |
|
73 | |||
73 |
auto startDate = dateFormat( |
|
74 | auto startDate = dateFormat(dateTime.m_TStart); | |
74 |
auto endDate = dateFormat( |
|
75 | auto endDate = dateFormat(dateTime.m_TEnd); | |
75 | auto productId = QStringLiteral("imf(0)"); |
|
76 | auto productId = QStringLiteral("imf(0)"); | |
76 |
|
77 | |||
77 | auto url = QUrl{QString{AMDA_URL_FORMAT}.arg(startDate, endDate, productId)}; |
|
78 | auto url = QUrl{QString{AMDA_URL_FORMAT}.arg(startDate, endDate, productId)}; | |
@@ -91,7 +92,7 void AmdaProvider::retrieveData(QUuid token, const DataProviderParameters ¶m | |||||
91 |
|
92 | |||
92 | // Parse results file |
|
93 | // Parse results file | |
93 | if (auto dataSeries = AmdaResultParser::readTxt(tempFile->fileName())) { |
|
94 | if (auto dataSeries = AmdaResultParser::readTxt(tempFile->fileName())) { | |
94 |
emit dataProvided(impl->m_Token, dataSeries, impl->m_ |
|
95 | emit dataProvided(impl->m_Token, dataSeries, impl->m_DateTime); | |
95 | } |
|
96 | } | |
96 | else { |
|
97 | else { | |
97 | /// @todo ALX : debug |
|
98 | /// @todo ALX : debug | |
@@ -123,6 +124,6 void AmdaProvider::retrieveData(QUuid token, const DataProviderParameters ¶m | |||||
123 | // //////////////// // |
|
124 | // //////////////// // | |
124 |
|
125 | |||
125 | impl->m_Token = token; |
|
126 | impl->m_Token = token; | |
126 |
impl->m_ |
|
127 | impl->m_DateTime = dateTime; | |
127 | emit requestConstructed(QNetworkRequest{url}, token, httpFinishedLambda); |
|
128 | emit requestConstructed(QNetworkRequest{url}, token, httpFinishedLambda); | |
128 | } |
|
129 | } |
@@ -14,13 +14,12 Q_DECLARE_LOGGING_CATEGORY(LOG_CosinusProvider) | |||||
14 | */ |
|
14 | */ | |
15 | class SCIQLOP_MOCKPLUGIN_EXPORT CosinusProvider : public IDataProvider { |
|
15 | class SCIQLOP_MOCKPLUGIN_EXPORT CosinusProvider : public IDataProvider { | |
16 | public: |
|
16 | public: | |
17 |
void requestDataLoading(QUuid token, const |
|
17 | void requestDataLoading(QUuid token, const DataProviderParameters ¶meters) override; | |
18 |
|
18 | |||
19 |
|
19 | |||
20 | private: |
|
20 | private: | |
21 | /// @sa IDataProvider::retrieveData() |
|
21 | /// @sa IDataProvider::retrieveData() | |
22 |
std::shared_ptr<IDataSeries> retrieveData(const |
|
22 | std::shared_ptr<IDataSeries> retrieveData(const SqpDateTime &dateTime) const; | |
23 | std::shared_ptr<IDataSeries> retrieveDataSeries(const SqpDateTime &dateTime); |
|
|||
24 | }; |
|
23 | }; | |
25 |
|
24 | |||
26 | #endif // SCIQLOP_COSINUSPROVIDER_H |
|
25 | #endif // SCIQLOP_COSINUSPROVIDER_H |
@@ -10,11 +10,8 | |||||
10 |
|
10 | |||
11 | Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") |
|
11 | Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") | |
12 |
|
12 | |||
13 | std::shared_ptr<IDataSeries> |
|
13 | std::shared_ptr<IDataSeries> CosinusProvider::retrieveData(const SqpDateTime &dateTime) const | |
14 | CosinusProvider::retrieveData(const DataProviderParameters ¶meters) const |
|
|||
15 | { |
|
14 | { | |
16 | auto dateTime = parameters.m_Time; |
|
|||
17 |
|
||||
18 | auto dataIndex = 0; |
|
15 | auto dataIndex = 0; | |
19 |
|
16 | |||
20 | // Gets the timerange from the parameters |
|
17 | // Gets the timerange from the parameters | |
@@ -38,13 +35,14 CosinusProvider::retrieveData(const DataProviderParameters ¶meters) const | |||||
38 | return scalarSeries; |
|
35 | return scalarSeries; | |
39 | } |
|
36 | } | |
40 |
|
37 | |||
41 |
void CosinusProvider::requestDataLoading(QUuid token, const |
|
38 | void CosinusProvider::requestDataLoading(QUuid token, const DataProviderParameters ¶meters) | |
42 | { |
|
39 | { | |
43 | qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataLoading" |
|
40 | qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataLoading" | |
44 | << QThread::currentThread()->objectName(); |
|
41 | << QThread::currentThread()->objectName(); | |
45 | // NOTE: Try to use multithread if possible |
|
42 | // NOTE: Try to use multithread if possible | |
46 | for (const auto &dateTime : dateTimeList) { |
|
43 | const auto times = parameters.m_Times; | |
47 | auto scalarSeries = this->retrieveData(DataProviderParameters{dateTime}); |
|
44 | for (const auto &dateTime : qAsConst(times)) { | |
|
45 | auto scalarSeries = this->retrieveData(dateTime); | |||
48 | emit dataProvided(token, scalarSeries, dateTime); |
|
46 | emit dataProvided(token, scalarSeries, dateTime); | |
49 | } |
|
47 | } | |
50 | } |
|
48 | } |
General Comments 0
You need to be logged in to leave comments.
Login now