/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.domain.resource.composite;
import java.io.Serializable;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.authz.Permission.Target;
/**
* A set of permissions that apply to a particular Resource or ResourceGroup (i.e. {@link Permission}s where
* {@link Permission#getTarget()} is {@link Target#RESOURCE}
*
* @author Joseph Marques
* @author Greg Hinkle
*/
public class ResourcePermission implements Serializable {
private static final long serialVersionUID = 2L;
private Set<Permission> permissions;
/**
* All permissions
*/
public ResourcePermission() {
this.permissions = Permission.RESOURCE_ALL;
}
public ResourcePermission( //
boolean measure, //
boolean inventory, //
boolean control, //
boolean alert, //
boolean event, //
boolean configureRead, //
boolean configureWrite, //
boolean content, //
boolean createChildResources, //
boolean deleteResource, //
boolean drift) {
this.permissions = new HashSet<Permission>();
if (measure) {
this.permissions.add(Permission.MANAGE_MEASUREMENTS);
}
if (inventory) {
this.permissions.add(Permission.MODIFY_RESOURCE);
}
if (control) {
this.permissions.add(Permission.CONTROL);
}
if (alert) {
this.permissions.add(Permission.MANAGE_ALERTS);
}
if (event) {
this.permissions.add(Permission.MANAGE_EVENTS);
}
if (configureRead) {
this.permissions.add(Permission.CONFIGURE_READ);
}
if (configureWrite) {
this.permissions.add(Permission.CONFIGURE_WRITE);
}
if (content) {
this.permissions.add(Permission.MANAGE_CONTENT);
}
if (createChildResources) {
this.permissions.add(Permission.CREATE_CHILD_RESOURCES);
}
if (deleteResource) {
this.permissions.add(Permission.DELETE_RESOURCE);
}
if (drift) {
this.permissions.add(Permission.MANAGE_DRIFT);
}
}
@SuppressWarnings("unchecked")
public ResourcePermission(Set<Permission> permissions) {
if (permissions instanceof EnumSet) {
throw new IllegalArgumentException("EnumSet is not allowed due to GWT Serialization issues");
}
this.permissions = permissions;
}
public boolean isMeasure() {
return this.permissions.contains(Permission.MANAGE_MEASUREMENTS);
}
public boolean isInventory() {
return this.permissions.contains(Permission.MODIFY_RESOURCE);
}
public boolean isControl() {
return this.permissions.contains(Permission.CONTROL);
}
public boolean isAlert() {
return this.permissions.contains(Permission.MANAGE_ALERTS);
}
public boolean isDrift() {
return this.permissions.contains(Permission.MANAGE_DRIFT);
}
public boolean isEvent() {
return this.permissions.contains(Permission.MANAGE_EVENTS);
}
public boolean isConfigureRead() {
return this.permissions.contains(Permission.CONFIGURE_READ);
}
public boolean isConfigureWrite() {
return this.permissions.contains(Permission.CONFIGURE_WRITE);
}
public boolean isContent() {
return this.permissions.contains(Permission.MANAGE_CONTENT);
}
public boolean isCreateChildResources() {
return this.permissions.contains(Permission.CREATE_CHILD_RESOURCES);
}
public boolean isDeleteResource() {
return this.permissions.contains(Permission.DELETE_RESOURCE);
}
public Set<Permission> getPermissions() {
return permissions;
}
@Override
public String toString() {
return "ResourcePermission[" + this.permissions + "]";
}
}