package org.ovirt.engine.api.restapi.resource.aaa;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.BaseResource;
import org.ovirt.engine.api.model.Group;
import org.ovirt.engine.api.resource.AssignedPermissionsResource;
import org.ovirt.engine.api.resource.AssignedRolesResource;
import org.ovirt.engine.api.resource.AssignedTagsResource;
import org.ovirt.engine.api.resource.aaa.GroupResource;
import org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource;
import org.ovirt.engine.api.restapi.resource.BackendAssignedPermissionsResource;
import org.ovirt.engine.api.restapi.resource.BackendAssignedRolesResource;
import org.ovirt.engine.api.restapi.resource.BackendGroupTagsResource;
import org.ovirt.engine.core.common.action.IdParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.aaa.DbGroup;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
public class BackendGroupResource
extends AbstractBackendSubResource<Group, DbGroup>
implements GroupResource {
private BackendGroupsResource parent;
public BackendGroupResource(String id, BackendGroupsResource parent) {
super(id, Group.class, DbGroup.class);
this.parent = parent;
}
public void setParent(BackendGroupsResource parent) {
this.parent = parent;
}
public BackendGroupsResource getParent() {
return parent;
}
@Override
public Group get() {
return performGet(
VdcQueryType.GetDbGroupById,
new IdQueryParameters(guid),
BaseResource.class
);
}
@Override
public AssignedRolesResource getRolesResource() {
return inject(new BackendAssignedRolesResource(guid));
}
@Override
public AssignedTagsResource getTagsResource() {
return inject(new BackendGroupTagsResource(id));
}
@Override
public AssignedPermissionsResource getPermissionsResource() {
return inject(
new BackendAssignedPermissionsResource(
guid,
VdcQueryType.GetPermissionsByAdElementId,
new IdQueryParameters(guid),
Group.class
)
);
}
@Override
public Response remove() {
get();
return performAction(VdcActionType.RemoveGroup, new IdParameters(guid));
}
}