package kornell.core.entity; import java.util.List; import kornell.core.to.RoleTO; public class RoleCategory { public static final String BIND_DEFAULT = "DEFAULT"; public static final String BIND_WITH_PERSON = "PERSON"; public static boolean isValidRole(Role role, RoleType type, String institutionUUID, String courseClassUUID) { switch (role.getRoleType()) { case user: if (RoleType.user.equals(type)) return true; break; case courseClassAdmin: if (RoleType.courseClassAdmin.equals(type) && courseClassUUID != null && role.getCourseClassAdminRole() .getCourseClassUUID() .equals(courseClassUUID)) return true; break; case observer: if (RoleType.observer.equals(type) && courseClassUUID != null && role.getObserverRole() .getCourseClassUUID() .equals(courseClassUUID)) return true; break; case tutor: if (RoleType.tutor.equals(type) && courseClassUUID != null && role.getTutorRole() .getCourseClassUUID() .equals(courseClassUUID)) return true; break; case institutionAdmin: if (RoleType.institutionAdmin.equals(type) && institutionUUID != null && role.getInstitutionAdminRole() .getInstitutionUUID() .equals(institutionUUID)) return true; break; case platformAdmin: if (RoleType.platformAdmin.equals(type) && institutionUUID != null && role.getPlatformAdminRole() .getInstitutionUUID() .equals(institutionUUID)) return true; break; case controlPanelAdmin: if (RoleType.controlPanelAdmin.equals(type)) return true; break; default: break; } return false; } public static boolean isRole(Role role, RoleType type) { switch (role.getRoleType()) { case user: if (RoleType.user.equals(type)) return true; break; case courseClassAdmin: if (RoleType.courseClassAdmin.equals(type)) return true; break; case observer: if (RoleType.observer.equals(type)) return true; break; case tutor: if (RoleType.tutor.equals(type)) return true; break; case institutionAdmin: if (RoleType.institutionAdmin.equals(type)) return true; break; case platformAdmin: if (RoleType.platformAdmin.equals(type)) return true; break; case controlPanelAdmin: if (RoleType.controlPanelAdmin.equals(type)) return true; break; default: break; } return false; } public static boolean isControlPanelAdmin(List<RoleTO> roles) { return isValidRole(roles, RoleType.controlPanelAdmin, null, null); } public static boolean isPlatformAdmin(List<RoleTO> roleTOs, String institutionUUID) { return isValidRole(roleTOs, RoleType.platformAdmin, institutionUUID, null); } public static boolean isInstitutionAdmin(List<RoleTO> roleTOs, String institutionUUID) { return isValidRole(roleTOs, RoleType.institutionAdmin, institutionUUID, null); } public static boolean isCourseClassAdmin(List<RoleTO> roleTOs, String courseClassUUID) { return isValidRole(roleTOs, RoleType.courseClassAdmin, null, courseClassUUID); } public static boolean isCourseClassObserver(List<RoleTO> roleTOs, String courseClassUUID) { return isValidRole(roleTOs, RoleType.observer, null, courseClassUUID); } public static boolean isCourseClassTutor(List<RoleTO> roleTOs, String courseClassUUID) { return isValidRole(roleTOs, RoleType.tutor, null, courseClassUUID); } public static boolean isValidRole(List<RoleTO> roleTOs, RoleType type, String institutionUUID, String courseClassUUID) { for (RoleTO roleTO : roleTOs) { if(isValidRole(roleTO.getRole(), type, institutionUUID, courseClassUUID)) return true; } return false; } public static boolean hasRole(List<RoleTO> roleTOs, RoleType type) { for (RoleTO roleTO : roleTOs) { if(RoleCategory.isRole(roleTO.getRole(), type)) return true; } return false; } }