package org.molgenis.security.permission; import java.util.*; public class Permissions { private String userId; private String groupId; private Map<String, String> entityIds; private Map<String, List<Permission>> userPermissionMap; private Map<String, List<Permission>> groupPermissionMap; private Map<String, List<Permission>> hierarchyPermissionMap; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getGroupId() { return groupId; } public void setGroupId(String groupId) { this.groupId = groupId; } public Map<String, String> getEntityIds() { return entityIds; } public void setEntityIds(Map<String, String> entityIds) { this.entityIds = entityIds; } public Map<String, List<Permission>> getUserPermissions() { return userPermissionMap != null ? userPermissionMap : Collections.<String, List<Permission>>emptyMap(); } public void addUserPermission(String pluginId, Permission pluginPermission) { if (userPermissionMap == null) userPermissionMap = new HashMap<String, List<Permission>>(); List<Permission> pluginPermissions = userPermissionMap.get(pluginId); if (pluginPermissions == null) { pluginPermissions = new ArrayList<Permission>(); userPermissionMap.put(pluginId, pluginPermissions); } pluginPermissions.add(pluginPermission); } public Map<String, List<Permission>> getGroupPermissions() { return groupPermissionMap != null ? groupPermissionMap : Collections.<String, List<Permission>>emptyMap(); } public void addGroupPermission(String pluginId, Permission pluginPermission) { if (groupPermissionMap == null) groupPermissionMap = new HashMap<String, List<Permission>>(); List<Permission> pluginPermissions = groupPermissionMap.get(pluginId); if (pluginPermissions == null) { pluginPermissions = new ArrayList<Permission>(); groupPermissionMap.put(pluginId, pluginPermissions); } pluginPermissions.add(pluginPermission); } public Map<String, List<Permission>> getHierarchyPermissionMap() { return hierarchyPermissionMap; } public void addHierarchyPermission(String pluginId, Permission pluginPermission) { if (hierarchyPermissionMap == null) hierarchyPermissionMap = new HashMap<String, List<Permission>>(); List<Permission> pluginPermissions = hierarchyPermissionMap.get(pluginId); if (pluginPermissions == null) { pluginPermissions = new ArrayList<Permission>(); hierarchyPermissionMap.put(pluginId, pluginPermissions); } pluginPermissions.add(pluginPermission); } public void sort() { if (userPermissionMap != null) { for (List<Permission> pluginPermissions : userPermissionMap.values()) { if (pluginPermissions.size() > 1) { Collections.sort(pluginPermissions, new Comparator<Permission>() { @Override public int compare(Permission o1, Permission o2) { String group1 = o1.getGroup(); String group2 = o2.getGroup(); if (group1 == null) return group2 == null ? 0 : -1; else return group2 == null ? 1 : group1.compareTo(group2); } }); } } } if (groupPermissionMap != null) { for (List<Permission> pluginPermissions : groupPermissionMap.values()) { if (pluginPermissions.size() > 1) { Collections.sort(pluginPermissions, new Comparator<Permission>() { @Override public int compare(Permission o1, Permission o2) { String group1 = o1.getGroup(); String group2 = o2.getGroup(); if (group1 == null) return group2 == null ? 0 : -1; else return group2 == null ? 1 : group1.compareTo(group2); } }); } } } } }