
io.split.client.SplitManagerImpl Maven / Gradle / Ivy
package io.split.client;
import io.split.client.api.SplitView;
import io.split.client.dtos.Partition;
import io.split.engine.experiments.ParsedCondition;
import io.split.engine.experiments.ParsedSplit;
import io.split.engine.experiments.SplitFetcher;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by adilaijaz on 7/15/16.
*/
public class SplitManagerImpl implements SplitManager {
private final SplitFetcher _splitFetcher;
public SplitManagerImpl(SplitFetcher splitFetcher) {
_splitFetcher = splitFetcher;
}
@Override
public List splits() {
List result = new ArrayList<>();
List parsedSplits = _splitFetcher.fetchAll();
for (ParsedSplit split : parsedSplits) {
result.add(toSplitView(split));
}
return result;
}
@Override
public SplitView split(String featureName) {
ParsedSplit parsedSplit = _splitFetcher.fetch(featureName);
return parsedSplit == null ? null : toSplitView(parsedSplit);
}
@Override
public List splitNames() {
List result = new ArrayList<>();
List parsedSplits = _splitFetcher.fetchAll();
for (ParsedSplit split : parsedSplits) {
result.add(split.feature());
}
return result;
}
private SplitView toSplitView(ParsedSplit parsedSplit) {
SplitView splitView = new SplitView();
splitView.name = parsedSplit.feature();
splitView.trafficType = parsedSplit.trafficTypeName();
splitView.killed = parsedSplit.killed();
splitView.changeNumber = parsedSplit.changeNumber();
Set treatments = new HashSet();
for (ParsedCondition condition : parsedSplit.parsedConditions()) {
for (Partition partition : condition.partitions()) {
treatments.add(partition.treatment);
}
}
treatments.add(parsedSplit.defaultTreatment());
splitView.treatments = new ArrayList(treatments);
return splitView;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy