package org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui;
import java.util.ArrayList;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicommonweb.models.common.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.ui.uicommonweb.models.configure.*;
@SuppressWarnings("unused")
public class RoleTreeView {
public static java.util.ArrayList<SelectionTreeNodeModel> GetRoleTreeView(
boolean isReadOnly, boolean isAdmin) {
RoleNode tree = initTreeView();
java.util.ArrayList<ActionGroup> userActionGroups = null;
if (isAdmin == false) {
userActionGroups = GetUserActionGroups();
}
java.util.ArrayList<SelectionTreeNodeModel> roleTreeView = new java.util.ArrayList<SelectionTreeNodeModel>();
SelectionTreeNodeModel firstNode = null, secondNode = null, thirdNode = null;
for (RoleNode first : tree.getLeafRoles()) {
firstNode = new SelectionTreeNodeModel();
firstNode.setTitle(first.getName());
firstNode.setDescription(first.getName());
firstNode.setIsChangable(!isReadOnly);
for (RoleNode second : first.getLeafRoles()) {
secondNode = new SelectionTreeNodeModel();
secondNode.setTitle(second.getName());
secondNode.setDescription(second.getName());
secondNode.setIsChangable(!isReadOnly);
secondNode.setTooltip(second.getTooltip());
for (RoleNode third : second.getLeafRoles()) {
thirdNode = new SelectionTreeNodeModel();
thirdNode.setTitle(third.getName());
thirdNode.setDescription(third.getDesc());
thirdNode.setIsSelectedNotificationPrevent(true);
// thirdNode.IsSelected =
// attachedActions.Contains((VdcActionType)
// Enum.Parse(typeof (VdcActionType), name)); //TODO:
// suppose to be action group
thirdNode.setIsChangable(!isReadOnly);
thirdNode.setIsSelectedNullable(false);
thirdNode.setTooltip(third.getTooltip());
if (!isAdmin) {
if (userActionGroups.contains(ActionGroup
.valueOf(thirdNode.getTitle()))) {
secondNode.getChildren().add(thirdNode);
}
} else {
secondNode.getChildren().add(thirdNode);
}
}
if (secondNode.getChildren().size() > 0) {
firstNode.getChildren().add(secondNode);
}
}
if (firstNode.getChildren().size() > 0) {
roleTreeView.add(firstNode);
}
}
return roleTreeView;
}
private static ArrayList<ActionGroup> GetUserActionGroups() {
ArrayList<ActionGroup> array = new ArrayList<ActionGroup>();
array.add(ActionGroup.CREATE_VM);
array.add(ActionGroup.DELETE_VM);
array.add(ActionGroup.EDIT_VM_PROPERTIES);
array.add(ActionGroup.VM_BASIC_OPERATIONS);
array.add(ActionGroup.CHANGE_VM_CD);
array.add(ActionGroup.MIGRATE_VM);
array.add(ActionGroup.CONNECT_TO_VM);
array.add(ActionGroup.CONFIGURE_VM_NETWORK);
array.add(ActionGroup.CONFIGURE_VM_STORAGE);
array.add(ActionGroup.MOVE_VM);
array.add(ActionGroup.MANIPULATE_VM_SNAPSHOTS);
array.add(ActionGroup.CREATE_TEMPLATE);
array.add(ActionGroup.EDIT_TEMPLATE_PROPERTIES);
array.add(ActionGroup.DELETE_TEMPLATE);
array.add(ActionGroup.COPY_TEMPLATE);
array.add(ActionGroup.CONFIGURE_TEMPLATE_NETWORK);
array.add(ActionGroup.CREATE_VM_POOL);
array.add(ActionGroup.EDIT_VM_POOL_CONFIGURATION);
array.add(ActionGroup.DELETE_VM_POOL);
array.add(ActionGroup.VM_POOL_BASIC_OPERATIONS);
array.add(ActionGroup.MANIPULATE_PERMISSIONS);
return array;
}
private static RoleNode initTreeView() {
RoleNode tree = new RoleNode(
"root",
new RoleNode[] {
new RoleNode(
"System",
new RoleNode(
"Configure System",
new RoleNode[] {
new RoleNode(
ActionGroup.MANIPULATE_USERS,
"Allow to Add/Remove Users from the System"),
new RoleNode(
ActionGroup.MANIPULATE_PERMISSIONS,
"Allow to add/remove permissions for Users on objects in the system"),
new RoleNode(
ActionGroup.MANIPULATE_ROLES,
"Allow to define/configure roles in the System"),
new RoleNode(
ActionGroup.CONFIGURE_ENGINE,
"Allow to get or set System Configuration") })),
new RoleNode(
"Gluster",
new RoleNode(
"Configure Volumes",
new RoleNode[] {
new RoleNode(
ActionGroup.GLUSTER_CREATE_VOLUME,
"Allow to create Gluster Volumes"),
new RoleNode(
ActionGroup.GLUSTER_VOLUME_OPERATIONS,
"Allow to manipulate Gluster Volumes") })),
new RoleNode(
"Data Center",
new RoleNode(
"Configure Data Center",
new RoleNode[] {
new RoleNode(
ActionGroup.CREATE_STORAGE_POOL,
"Allow to create Data Center"),
new RoleNode(
ActionGroup.DELETE_STORAGE_POOL,
"Allow to remove Data Center"),
new RoleNode(
ActionGroup.EDIT_STORAGE_POOL_CONFIGURATION,
"Allow to modify Data Center properties"),
new RoleNode(
ActionGroup.CONFIGURE_STORAGE_POOL_NETWORK,
"Allow to configure Logical Network per Data Center") })),
new RoleNode(
"Cluster",
new RoleNode(
"Configure Cluster",
new RoleNode[] {
new RoleNode(
ActionGroup.CREATE_CLUSTER,
"Allow to create new Cluster"),
new RoleNode(
ActionGroup.DELETE_CLUSTER,
"Allow to remove Cluster"),
new RoleNode(
ActionGroup.EDIT_CLUSTER_CONFIGURATION,
"Allow to Edit Cluster properties"),
new RoleNode(
ActionGroup.CONFIGURE_CLUSTER_NETWORK,
"Allow to add/remove Logical Networks for the Cluster (from the list of Networks defined by the Data Center)") })),
new RoleNode(
"Host",
new RoleNode(
"Configure Host",
new RoleNode[] {
new RoleNode(
ActionGroup.CREATE_HOST,
"Allow to add new Host to the Cluster"),
new RoleNode(
ActionGroup.DELETE_HOST,
"Allow to remove existing Host from the Cluster"),
new RoleNode(
ActionGroup.EDIT_HOST_CONFIGURATION,
"Allow to Edit Host properties; upgrade/install"),
new RoleNode(
ActionGroup.MANIPUTLATE_HOST,
"Allow to change Host status: activate/maintenance"),
new RoleNode(
ActionGroup.CONFIGURE_HOST_NETWORK,
"Allow to configure Host's Network physical interfaces (Nics)") })) });
return tree;
}
}