| 3411 | } |
| 3412 | |
| 3413 | SqlFileTimeSeriesQueryVector SqlFile_Impl::expandTimeSeries(const SqlFileTimeSeriesQuery& query) { |
| 3414 | SqlFileTimeSeriesQueryVector result; |
| 3415 | |
| 3416 | StringVector tsNames; |
| 3417 | if (query.timeSeries() && query.timeSeries().get().name()) { |
| 3418 | if (query.timeSeries().get().name()) { |
| 3419 | tsNames.push_back(*(query.timeSeries().get().name())); |
| 3420 | } |
| 3421 | } else { |
| 3422 | // get candidate time series names |
| 3423 | if (query.environment() && query.environment().get().name() && query.reportingFrequency()) { |
| 3424 | tsNames = availableVariableNames(query.environment().get().name().get(), query.reportingFrequency().get().valueDescription()); |
| 3425 | } else { |
| 3426 | // get all and let other function filter out |
| 3427 | tsNames = availableTimeSeries(); |
| 3428 | } |
| 3429 | // filter by regex if applicable |
| 3430 | if (query.timeSeries()) { |
| 3431 | OS_ASSERT(query.timeSeries().get().regex()); |
| 3432 | boost::regex re = query.timeSeries().get().regex().get(); |
| 3433 | for (auto it = tsNames.begin(); it != tsNames.end();) { |
| 3434 | if (!boost::regex_match(*it, re)) { |
| 3435 | it = tsNames.erase(it); |
| 3436 | continue; |
| 3437 | } |
| 3438 | ++it; |
| 3439 | } |
| 3440 | } |
| 3441 | } |
| 3442 | |
| 3443 | // make one query per time series name |
| 3444 | for (const std::string& tsName : tsNames) { |
| 3445 | SqlFileTimeSeriesQuery wQuery(query); |
| 3446 | TimeSeriesIdentifier tsId(tsName); |
| 3447 | wQuery.setTimeSeries(tsId); |
| 3448 | result.push_back(wQuery); |
| 3449 | } |
| 3450 | |
| 3451 | // check result queries for consistency |
| 3452 | mf_makeConsistent(result); |
| 3453 | |
| 3454 | return result; |
| 3455 | } |
| 3456 | |
| 3457 | SqlFileTimeSeriesQueryVector SqlFile_Impl::expandKeyValues(const SqlFileTimeSeriesQuery& query) { |
| 3458 | SqlFileTimeSeriesQueryVector result; |
nothing calls this directly
no test coverage detected