/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import models.RoleAssignmentType;
import org.apache.commons.lang.StringUtils;
import util.RoleAssignmentUtils;
import util.datatable.DataTable;
import com.emc.storageos.model.auth.RoleAssignmentEntry;
import controllers.auth.VDCRoleAssignments.VDCRoleAssignmentForm;
import controllers.security.Security;
public class VDCRoleAssignmentDataTable extends DataTable {
public VDCRoleAssignmentDataTable() {
addColumn("name").setRenderFunction("renderLink");
addColumn("type").hidden().setSearchable(false);
addColumn("localizedType");
if (Security.isSecurityAdminOrRestrictedSecurityAdmin()) {
addColumn("vdcRoles");
}
sortAll();
setDefaultSortField("name");
}
public static class RoleInfo {
public String id;
public String name;
public RoleAssignmentType type;
public String localizedType;
public String vdcRoles;
public RoleInfo(RoleAssignmentEntry roleAssignment) {
if (StringUtils.isNotBlank(roleAssignment.getSubjectId())) {
name = roleAssignment.getSubjectId();
type = RoleAssignmentType.USER;
localizedType = RoleAssignmentType.USER.getDisplayName();
}
else {
name = roleAssignment.getGroup();
type = RoleAssignmentType.GROUP;
localizedType = RoleAssignmentType.GROUP.getDisplayName();
}
id = VDCRoleAssignmentForm.createId(name, type);
vdcRoles = "";
if (roleAssignment.getRoles() != null) {
for (String role : roleAssignment.getRoles()) {
vdcRoles = addRole(role, vdcRoles);
}
}
}
private String addRole(String role, String value) {
if (value.length() > 0) {
value += ", ";
}
value += RoleAssignmentUtils.getRoleDisplayName(role);
return value;
}
}
}