All Downloads are FREE. Search and download functionalities are using the official Maven repository.

util.EvaluationFlag.kt Maven / Gradle / Ivy

package com.amplitude.util

import com.amplitude.experiment.evaluation.EvaluationCondition
import com.amplitude.experiment.evaluation.EvaluationFlag
import com.amplitude.experiment.evaluation.EvaluationOperator
import com.amplitude.experiment.evaluation.EvaluationSegment

internal fun Collection.getCohortIds(): Set {
    val cohortIds = mutableSetOf()
    for (flag in this) {
        cohortIds += flag.getCohortIds()
    }
    return cohortIds
}

internal fun EvaluationFlag.getCohortIds(): Set {
    val cohortIds = mutableSetOf()
    for (segment in this.segments) {
        cohortIds += segment.getCohortConditionIds()
    }
    return cohortIds
}

private fun EvaluationSegment.getCohortConditionIds(): Set {
    val cohortIds = mutableSetOf()
    if (conditions == null) {
        return cohortIds
    }
    for (outer in conditions!!) {
        for (condition in outer) {
            if (condition.isCohortFilter()) {
                cohortIds += condition.values
            }
        }
    }
    return cohortIds
}

// Only cohort filters use these operators.
private fun EvaluationCondition.isCohortFilter(): Boolean =
    this.op == EvaluationOperator.SET_CONTAINS_ANY || this.op == EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY




© 2015 - 2025 Weber Informatics LLC | Privacy Policy