
io.rtr.alchemy.service.resources.TreatmentOverridesResource Maven / Gradle / Ivy
package io.rtr.alchemy.service.resources;
import com.google.inject.Inject;
import io.rtr.alchemy.dto.models.TreatmentOverrideDto;
import io.rtr.alchemy.dto.requests.TreatmentOverrideRequest;
import io.rtr.alchemy.mapping.Mappers;
import io.rtr.alchemy.models.Experiment;
import io.rtr.alchemy.models.Experiments;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Resource for interacting with treatment overrides
*/
@Path("/experiments/{experimentName}/overrides")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class TreatmentOverridesResource extends BaseResource {
private final Experiments experiments;
private final Mappers mapper;
@Inject
public TreatmentOverridesResource(Experiments experiments, Mappers mapper) {
this.experiments = experiments;
this.mapper = mapper;
}
@GET
@Path("/{overrideName}")
public TreatmentOverrideDto getOverride(@PathParam("experimentName") String experimentName,
@PathParam("overrideName") String overrideName) {
return mapper.toDto(
ensureExists(
ensureExists(
experiments.get(experimentName)
).getOverride(overrideName)
),
TreatmentOverrideDto.class
);
}
@GET
public Iterable getOverrides(@PathParam("experimentName") String experimentName) {
return mapper.toDto(
ensureExists(experiments.get(experimentName)).getOverrides(),
TreatmentOverrideDto.class
);
}
@PUT
public Response addOverride(@PathParam("experimentName") String experimentName,
@Valid TreatmentOverrideRequest request) {
ensureExists(experiments.get(experimentName))
.addOverride(
request.getName(),
request.getTreatment(),
request.getFilter()
)
.save();
return created();
}
@DELETE
public void clearOverrides(@PathParam("experimentName") String experimentName) {
ensureExists(experiments.get(experimentName))
.clearOverrides()
.save();
}
@DELETE
@Path("/{overrideName}")
public void removeOverride(@PathParam("experimentName") String experimentName,
@PathParam("overrideName") String overrideName) {
final Experiment experiment = ensureExists(experiments.get(experimentName));
ensureExists(experiment.getOverride(overrideName));
experiment
.removeOverride(overrideName)
.save();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy