package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.BaseResource;
import org.ovirt.engine.core.common.action.QuotaCRUDParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.Quota;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public abstract class BackendQuotaLimitResource<T extends BaseResource> extends AbstractBackendSubResource<T, Quota> {
private final Guid parentId;
protected BackendQuotaLimitResource(String id,
Guid parentId,
Class<T> modelType) {
super(id, modelType, Quota.class);
this.parentId = parentId;
}
public T get() {
return performGet(VdcQueryType.GetQuotaByQuotaId, new IdQueryParameters(parentId));
}
@Override
protected T map(Quota entity, T template) {
return super.map(entity, createQuotaLimit());
}
protected abstract void updateEntityForRemove(Quota entity, Guid id);
public Response remove() {
Quota entity = getEntity(Quota.class,
VdcQueryType.GetQuotaByQuotaId,
new IdQueryParameters(parentId),
parentId.toString());
updateEntityForRemove(entity, asGuid(id));
return performAction(VdcActionType.UpdateQuota,
new QuotaCRUDParameters(entity));
}
protected abstract T createQuotaLimit();
}