package org.ovirt.engine.api.restapi.resource;
import java.util.Iterator;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.QuotaClusterLimit;
import org.ovirt.engine.api.resource.QuotaClusterLimitResource;
import org.ovirt.engine.core.common.businessentities.Quota;
import org.ovirt.engine.core.common.businessentities.QuotaCluster;
import org.ovirt.engine.core.compat.Guid;
public class BackendQuotaClusterLimitResource extends BackendQuotaLimitResource<QuotaClusterLimit> implements
QuotaClusterLimitResource {
protected BackendQuotaClusterLimitResource(String id, Guid parentId) {
super(id, parentId, QuotaClusterLimit.class);
}
@Override
protected QuotaClusterLimit createQuotaLimit() {
QuotaClusterLimit limit = new QuotaClusterLimit();
limit.setId(id);
return limit;
}
@Override
protected void updateEntityForRemove(Quota entity, Guid id) {
// since we're mocking remove using update, we'll throw 404 if the object isn't found
boolean throw404 = false;
// global cluster (has same id as quota)
if (entity.getId().equals(id)) {
if (entity.getGlobalQuotaCluster() == null) {
throw404 = true;
} else {
entity.setGlobalQuotaCluster(null);
}
// specific cluster (has same id as cluster)
} else {
if (entity.getQuotaClusters() != null) {
Iterator<QuotaCluster> iterator = entity.getQuotaClusters().iterator();
while (iterator.hasNext()) {
if (iterator.next().getClusterId().equals(id)) {
iterator.remove();
return;
}
}
throw404 = true;
}
}
if (throw404) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
}
}