
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