package com.constellio.model.entities; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import com.constellio.data.utils.KeyListMap; public class Permissions { private final String id; private final KeyListMap<String, String> groupedPermissions; private final List<String> permissions; public Permissions(String id) { this.id = id; groupedPermissions = new KeyListMap<>(); permissions = new ArrayList<>(); } public String add(String group, String permission) { String groupCode = id + "." + group; String permissionCode = id + "." + permission; if (permissions.contains(permissionCode)) { throw new Error("Cannot add the same permission twice"); } permissions.add(permissionCode); groupedPermissions.add(groupCode, permissionCode); return permissionCode; } public List<String> getAll() { return Collections.unmodifiableList(permissions); } public Map<String, List<String>> getGrouped() { return Collections.unmodifiableMap(groupedPermissions.getNestedMap()); } public List<String> getGroup(String group) { return Collections.unmodifiableList(groupedPermissions.get(id + "." + group)); } }