| | |
| | | public boolean isOwner() { |
| | | return PermissionType.OWNER.equals(permissionType); |
| | | } |
| | | |
| | | public boolean isExplicit() { |
| | | return PermissionType.EXPLICIT.equals(permissionType); |
| | | } |
| | | |
| | | public boolean isRegex() { |
| | | return PermissionType.REGEX.equals(permissionType); |
| | | } |
| | | |
| | | public boolean isTeam() { |
| | | return PermissionType.TEAM.equals(permissionType); |
| | | } |
| | | |
| | | public boolean isMissing() { |
| | | return PermissionType.MISSING.equals(permissionType); |
| | | } |
| | | |
| | | public int getScore() { |
| | | switch (registrantType) { |
| | | case REPOSITORY: |
| | | if (isAdmin()) { |
| | | return 0; |
| | | } |
| | | if (isOwner()) { |
| | | return 1; |
| | | } |
| | | if (isExplicit()) { |
| | | return 2; |
| | | } |
| | | if (isRegex()) { |
| | | return 3; |
| | | } |
| | | if (isTeam()) { |
| | | return 4; |
| | | } |
| | | default: |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public int compareTo(RegistrantAccessPermission p) { |
| | | switch (registrantType) { |
| | | case REPOSITORY: |
| | | // repository permissions are sorted in score order |
| | | // to convey the order in which permissions are tested |
| | | int score1 = getScore(); |
| | | int score2 = p.getScore(); |
| | | if (score1 <= 2 && score2 <= 2) { |
| | | // group admin, owner, and explicit together |
| | | return StringUtils.compareRepositoryNames(registrant, p.registrant); |
| | | } |
| | | if (score1 < score2) { |
| | | return -1; |
| | | } else if (score2 < score1) { |
| | | return 1; |
| | | } |
| | | return StringUtils.compareRepositoryNames(registrant, p.registrant); |
| | | default: |
| | | return registrant.toLowerCase().compareTo(p.registrant.toLowerCase()); |
| | | // user and team permissions are string sorted |
| | | return registrant.toLowerCase().compareTo(p.registrant.toLowerCase()); |
| | | } |
| | | } |
| | | |