package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.Quota;
import org.ovirt.engine.api.model.Quotas;
import org.ovirt.engine.api.resource.QuotaResource;
import org.ovirt.engine.api.resource.QuotasResource;
import org.ovirt.engine.core.common.action.QuotaCRUDParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public class BackendQuotasResource extends AbstractBackendCollectionResource<Quota, org.ovirt.engine.core.common.businessentities.Quota> implements QuotasResource {
protected Guid dataCenterId;
protected BackendQuotasResource(String datacenterId) {
super(Quota.class, org.ovirt.engine.core.common.businessentities.Quota.class);
this.dataCenterId = asGuid(datacenterId);
}
@Override
public Quotas list() {
if (isFiltered()) {
return null;
} else {
IdQueryParameters params = new IdQueryParameters(dataCenterId);
return mapCollection(getBackendCollection(VdcQueryType.GetQuotaByStoragePoolId, params));
}
}
@Override
public Response add(Quota quota) {
validateParameters(quota, "name");
org.ovirt.engine.core.common.businessentities.Quota entity = map(quota);
entity.setStoragePoolId(dataCenterId);
return performCreate(VdcActionType.AddQuota,
new QuotaCRUDParameters(entity),
new QueryIdResolver<Guid>(VdcQueryType.GetQuotaByQuotaId, IdQueryParameters.class));
}
@Override
public QuotaResource getQuotaResource(String id) {
return inject(new BackendQuotaResource(id, this));
}
protected Quotas mapCollection(List<org.ovirt.engine.core.common.businessentities.Quota> entities) {
Quotas collection = new Quotas();
for (org.ovirt.engine.core.common.businessentities.Quota entity : entities) {
collection.getQuotas().add(addLinks(populate(map(entity), entity)));
}
return collection;
}
@Override
protected Quota addParents(Quota quota) {
quota.setDataCenter(new DataCenter());
quota.getDataCenter().setId(dataCenterId.toString());
return quota;
}
}