bool CMetricBucketGatherer::acceptRestoreTraverserInternal()

in lib/model/CMetricBucketGatherer.cc [996:1074]


bool CMetricBucketGatherer::acceptRestoreTraverserInternal(core::CStateRestoreTraverser& traverser,
                                                           bool isCurrentVersion) {
    const std::string& name = traverser.name();
    if (name == MEAN_TAG) {
        CRestoreFeatureData<model_t::E_Mean> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid mean data in " << traverser.value());
            return false;
        }
    } else if (name == MIN_TAG) {
        CRestoreFeatureData<model_t::E_Min> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid min data in " << traverser.value());
            return false;
        }
    } else if (name == MAX_TAG) {
        CRestoreFeatureData<model_t::E_Max> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid max data in " << traverser.value());
            return false;
        }
    } else if (name == SUM_TAG) {
        CRestoreFeatureData<model_t::E_Sum> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid sum data in " << traverser.value());
            return false;
        }
    } else if (name == MEDIAN_TAG) {
        CRestoreFeatureData<model_t::E_Median> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid median data in " << traverser.value());
            return false;
        }
    } else if (name == VARIANCE_TAG) {
        CRestoreFeatureData<model_t::E_Variance> restore;
        if (restore(traverser, 1, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid variance data in " << traverser.value());
            return false;
        }
    } else if (name.find(MULTIVARIATE_MEAN_TAG) != std::string::npos) {
        std::size_t dimension;
        if (core::CStringUtils::stringToType(
                name.substr(MULTIVARIATE_MEAN_TAG.length()), dimension) == false) {
            LOG_ERROR(<< "Invalid dimension in " << name);
            return false;
        }
        CRestoreFeatureData<model_t::E_MultivariateMean> restore;
        if (restore(traverser, dimension, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid multivariate mean data in " << traverser.value());
            return false;
        }
    } else if (name.find(MULTIVARIATE_MIN_TAG) != std::string::npos) {
        std::size_t dimension;
        if (core::CStringUtils::stringToType(
                name.substr(MULTIVARIATE_MIN_TAG.length()), dimension) == false) {
            LOG_ERROR(<< "Invalid dimension in " << name);
            return false;
        }
        CRestoreFeatureData<model_t::E_MultivariateMin> restore;
        if (restore(traverser, dimension, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid multivariate min data in " << traverser.value());
            return false;
        }
    } else if (name.find(MULTIVARIATE_MAX_TAG) != std::string::npos) {
        std::size_t dimension;
        if (core::CStringUtils::stringToType(
                name.substr(MULTIVARIATE_MAX_TAG.length()), dimension) == false) {
            LOG_ERROR(<< "Invalid dimension in " << name);
            return false;
        }
        CRestoreFeatureData<model_t::E_MultivariateMax> restore;
        if (restore(traverser, dimension, isCurrentVersion, *this, m_FeatureData) == false) {
            LOG_ERROR(<< "Invalid multivariate max data in " << traverser.value());
            return false;
        }
    }

    return true;
}