package org.ovirt.engine.api.restapi.resource; import java.util.List; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.BaseResource; import org.ovirt.engine.api.model.Statistic; import org.ovirt.engine.api.resource.StatisticResource; import org.ovirt.engine.core.compat.Guid; public class BackendStatisticResource<R extends BaseResource, Q> extends AbstractBackendSubResource<Statistic, Q> implements StatisticResource { private final Guid subjectId; private AbstractStatisticalQuery<R, Q> query; protected BackendStatisticResource(String id, Class<Q> entityType, Guid subjectId, AbstractStatisticalQuery<R, Q> query) { super(id, Statistic.class, entityType); this.query = query; this.subjectId = subjectId; } void setQuery(AbstractStatisticalQuery<R, Q> query) { this.query = query; } @Override public Statistic get() { try { Q entity = query.resolve(subjectId); List<Statistic> currentStats = query.getStatistics(entity); for (Statistic statistic : currentStats) { if (id.equals(statistic.getId())) { return addLinks(statistic, query.getParentType()); } } } catch (BackendFailureException bfe) { return handleError(bfe, false); } throw new WebApplicationException(Response.Status.NOT_FOUND); } }