package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.BaseResource; import org.ovirt.engine.api.model.Statistic; import org.ovirt.engine.api.model.Statistics; import org.ovirt.engine.api.resource.StatisticResource; import org.ovirt.engine.api.resource.StatisticsResource; import org.ovirt.engine.core.compat.Guid; public class BackendStatisticsResource<R extends BaseResource, Q> extends AbstractBackendCollectionResource<Statistic, Q> implements StatisticsResource { private Guid subjectId; private AbstractStatisticalQuery<R, Q> query; public BackendStatisticsResource(Class<Q> entityType, Guid subjectId, AbstractStatisticalQuery<R, Q> query) { super(Statistic.class, entityType); this.query = query; this.subjectId = subjectId; } void setQuery(AbstractStatisticalQuery<R, Q> query) { this.query = query; } AbstractStatisticalQuery<R, Q> getQuery() { return query; } @Override public StatisticResource getStatisticResource(String id) { return inject(new BackendStatisticResource<>(id, entityType, subjectId, query)); } @Override public Statistics list() { try { Statistics statistics = new Statistics(); Q entity = query.resolve(subjectId); if (entity != null) { List<Statistic> currentStats = query.getStatistics(entity); for (Statistic statistic : currentStats) { addLinks(statistic, query.getParentType()); } statistics.getStatistics().addAll(currentStats); } return statistics; } catch (Exception e) { return handleError(e, false); } } }