From 22771cedba865741a3ddb4d204dd00bca24ab054 2017-08-14 12:52:47 From: mperrinel Date: 2017-08-14 12:52:47 Subject: [PATCH] Add code of ProvideNotInCacheRange in VC controller --- diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index 6296525..4447832 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -26,6 +26,9 @@ struct VariableController::VariableControllerPrivate { { } + QVector provideNotInCacheDateTimeList(std::shared_ptr variable, + const SqpDateTime &dateTime); + QMutex m_WorkingMutex; /// Variable model. The VariableController has the ownership VariableModel *m_VariableModel; @@ -241,3 +244,33 @@ void VariableController::waitForFinish() { QMutexLocker locker{&impl->m_WorkingMutex}; } + + +QVector VariableController::VariableControllerPrivate::provideNotInCacheDateTimeList( + std::shared_ptr variable, const SqpDateTime &dateTime) +{ + auto notInCache = QVector{}; + + if (!variable->contains(dateTime)) { + auto vDateTime = variable->dateTime(); + if (dateTime.m_TEnd <= vDateTime.m_TStart || dateTime.m_TStart >= vDateTime.m_TEnd) { + notInCache << dateTime; + } + else if (dateTime.m_TStart < vDateTime.m_TStart && dateTime.m_TEnd <= vDateTime.m_TEnd) { + notInCache << SqpDateTime{dateTime.m_TStart, vDateTime.m_TStart}; + } + else if (dateTime.m_TStart < vDateTime.m_TStart && dateTime.m_TEnd > vDateTime.m_TEnd) { + notInCache << SqpDateTime{dateTime.m_TStart, vDateTime.m_TStart} + << SqpDateTime{vDateTime.m_TEnd, dateTime.m_TStart}; + } + else if (dateTime.m_TStart < vDateTime.m_TEnd) { + notInCache << SqpDateTime{vDateTime.m_TEnd, dateTime.m_TStart}; + } + else { + qCCritical(LOG_VariableController()) << tr("Detection of unknown case.") + << QThread::currentThread(); + } + } + + return notInCache; +}