@GET public Iterable<TreatmentOverrideDto> getOverrides(@PathParam("experimentName") String experimentName) { return mapper.toDto( ensureExists(experiments.get(experimentName)).getOverrides(), TreatmentOverrideDto.class ); }
private Treatment getTreatmentWithOverrides(Experiment experiment, Identity identity, AttributesMap attributes) { for (TreatmentOverride override : experiment.getOverrides()) { if (override.getFilter().evaluate(attributes)) { return override.getTreatment(); } } return experiment.getTreatment(identity, attributes); }
private ExperimentEntity(Experiment experiment) { name = experiment.getName(); seed = experiment.getSeed(); description = experiment.getDescription(); active = experiment.isActive(); created = experiment.getCreated(); modified = experiment.getModified(); activated = experiment.getActivated(); deactivated = experiment.getDeactivated(); filter = experiment.getFilter().toString(); hashAttributes = Lists.newArrayList(experiment.getHashAttributes()); treatments = Lists.newArrayList(Collections2.transform(experiment.getTreatments(), TREATMENT_MAPPER)); allocations = Lists.transform(experiment.getAllocations(), ALLOCATION_MAPPER); overrides = Lists.transform(experiment.getOverrides(),TREATMENT_OVERRIDE_MAPPER); }
private Experiment(Experiment toCopy) { this.owner = toCopy.owner; this.name = toCopy.name; this.treatments = Maps.newConcurrentMap(); for (final Treatment treatment : toCopy.getTreatments()) { this.treatments.put(treatment.getName(), new Treatment(treatment.getName(), treatment.getDescription())); } final List<Allocation> allocations = Lists.newArrayList(); for (final Allocation allocation : toCopy.getAllocations()) { final Treatment treatment = this.treatments.get(allocation.getTreatment().getName()); allocations.add(new Allocation(treatment, allocation.getOffset(), allocation.getSize())); } this.allocations = new Allocations(allocations); this.overrides = Maps.newConcurrentMap(); for (final TreatmentOverride override : toCopy.getOverrides()) { final Treatment treatment = this.treatments.get(override.getTreatment().getName()); final TreatmentOverride newOverride = new TreatmentOverride(override.getName(), override.getFilter(), treatment); overrides.put(override.getName(), newOverride); } this.seed = toCopy.seed; this.description = toCopy.description; this.filter = toCopy.filter; this.hashAttributes = Sets.newLinkedHashSet(toCopy.getHashAttributes()); this.active = toCopy.active; this.created = toCopy.created; this.modified = toCopy.modified; this.activated = toCopy.activated; this.deactivated = toCopy.deactivated; }
@Override public ExperimentDto toDto(Experiment experiment) { if (experiment == null) { return null; } return new ExperimentDto( experiment.getName(), experiment.getSeed(), experiment.getDescription(), experiment.getFilter() != null ? experiment.getFilter().toString() : null, experiment.getHashAttributes() != null ? Sets.newLinkedHashSet(experiment.getHashAttributes()) : null, experiment.isActive(), experiment.getCreated(), experiment.getModified(), experiment.getActivated(), experiment.getDeactivated(), safeArrayList(mappers.toDto(experiment.getTreatments(), TreatmentDto.class)), safeArrayList(mappers.toDto(experiment.getAllocations(), AllocationDto.class)), safeArrayList(mappers.toDto(experiment.getOverrides(), TreatmentOverrideDto.class)) ); }
.save(); println("number of overrides: %d", experiment.getOverrides().size()); println();