package org.ovirt.engine.api.restapi.resource;
import java.util.Map;
import org.ovirt.engine.api.model.BaseResource;
import org.ovirt.engine.api.model.Group;
import org.ovirt.engine.api.model.Permission;
import org.ovirt.engine.api.resource.PermissionResource;
import org.ovirt.engine.core.common.businessentities.DbUser;
import org.ovirt.engine.core.common.businessentities.permissions;
import org.ovirt.engine.core.common.queries.MultilevelAdministrationByPermissionIdParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public class BackendPermissionResource
extends AbstractBackendSubResource<Permission, permissions>
implements PermissionResource {
protected BackendAssignedPermissionsResource parent;
private Class<? extends BaseResource> suggestedParentType;
protected BackendPermissionResource(String id,
BackendAssignedPermissionsResource parent,
Class<? extends BaseResource> suggestedParentType) {
super(id, Permission.class, permissions.class);
this.parent = parent;
this.suggestedParentType = suggestedParentType;
}
@Override
public Permission get() {
return performGet(VdcQueryType.GetPermissionById,
new MultilevelAdministrationByPermissionIdParameters(guid),
suggestedParentType);
}
@Override
protected Permission addParents(Permission permission) {
return parent.addParents(permission);
}
@Override
protected Permission map(permissions entity, Permission template) {
Map<Guid, DbUser> users = parent.getUsers();
return parent.map(entity, users.containsKey(entity.getad_element_id()) ? users.get(entity.getad_element_id()) : null);
}
@Override
protected Permission addLinks(Permission model, Class<? extends BaseResource> suggestedParent, String... subCollectionMembersToExclude) {
return super.addLinks(model, model.getUser() != null ? suggestedParentType : Group.class);
}
}