package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.Filter; import org.ovirt.engine.api.resource.FilterResource; 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.common.scheduling.ClusterPolicy; import org.ovirt.engine.core.common.scheduling.parameters.ClusterPolicyCRUDParameters; import org.ovirt.engine.core.compat.Guid; public class BackendFilterResource extends AbstractBackendSubResource<Filter, ClusterPolicy> implements FilterResource { private Guid parentId; private final BackendFiltersResource parent; protected BackendFilterResource(String id, BackendFiltersResource parent) { super(id, Filter.class, ClusterPolicy.class); this.parent = parent; this.parentId = parent.schedulingPolicyId; } @Override public Filter get() { return performGet(VdcQueryType.GetClusterPolicyById, new IdQueryParameters(parentId)); } @Override public Response remove() { ClusterPolicy entity = parent.getClusterPolicy(); updateEntityForRemove(entity, guid); return performAction(VdcActionType.EditClusterPolicy, new ClusterPolicyCRUDParameters(entity.getId(), entity)); } private void updateEntityForRemove(ClusterPolicy entity, Guid id) { int i = 0; boolean found = false; if (entity.getFilters() == null) { return; } for (; i < entity.getFilters().size(); i++) { if (entity.getFilters().get(i).equals(id)) { found = true; break; } } if (found) { entity.getFilters().remove(i); } } }