View Javadoc

1   package org.itracker.model;
2   
3   /**
4    * Enumeration for permission types. 
5    * 
6    * @author johnny
7    */
8   public enum PermissionType {
9       
10      /** 
11       * User Admin Permission. 
12       * Currently this is equivalent to super user, since the permission can't be granted, 
13       * and is only available to an admin. 
14       */
15      USER_ADMIN(-1), 
16      
17      /** Product Admin Permission */
18      PRODUCT_ADMIN(1), 
19      
20      /** Issue Create Permission */
21      ISSUE_CREATE(2),
22      
23      /** 
24       * Issue Edit Permission. 
25       * Users with this permission can edit any issue in the project. 
26       */
27      ISSUE_EDIT_ALL(3), 
28      
29      /**
30       * Issue Close Permission. 
31       * Users with this permission can close issues in the project. 
32       */
33      ISSUE_CLOSE(4), 
34      
35      /** 
36       * Issue Assign to Self Permission. 
37       * Users with this permission can assign issues to themselves. 
38       */
39      ISSUE_ASSIGN_SELF(5), 
40      
41      /** 
42       * Issue Assign to Others Permissions. 
43       * Users with this permission can assign issues to anyone, 
44       * given than those users have the ability to recieve the assignment. 
45       */
46      ISSUE_ASSIGN_OTHERS(6), 
47      
48      /** View All Issues Permission.  Users can view all issues in the project. */
49      ISSUE_VIEW_ALL(7), 
50      
51      /** 
52       * View Users Issues Permission.  Users can view thier own issues. 
53       * This includes ones they are the creator or owner of. 
54       */
55      ISSUE_VIEW_USERS(8),
56      
57      /** 
58       * Edit Users Issues Permission.  
59       * Users with this permission can edit any issue they created or own.
60       * They are limited to editing the description, adding history entries, 
61       * and adding attachments. 
62       */
63      ISSUE_EDIT_USERS(9), 
64      
65      /**
66       * Issue Unassign Self Permission.  
67       * Users with this permission can unassign issues they own. 
68       */
69      ISSUE_UNASSIGN_SELF(10), 
70      
71      /** 
72       * Issue Assignable. 
73       * Users with this permission can be assigned any issue in the system.  
74       * To determine if a user can be assigned an issue, 
75       * it will be a combination of users with EDIT_ALL, 
76       * users with EDIT_USERS if they are the creator,
77       * and users with this permission and EDIT_USERS. 
78       */
79      ISSUE_ASSIGNABLE(11),
80      
81      /** 
82       * Create for Others.  
83       * Users with this permission are allowed to create issues on behalf of other users.  
84       * The system will treat the issue as if the other user had created it.  
85       * The actual creator will be logged in the audit log. 
86       */
87      ISSUE_CREATE_OTHERS(12),
88      
89      /** 
90       * Full edit permission.  
91       * This defines what levelof editing a user has for an issue.  
92       * Without this permission, users will
93       * be limited to editing only the description, attachments, custom fields, 
94       * and history of an issue. 
95       */
96      ISSUE_EDIT_FULL(13);
97      
98      /* The project value matches the enum order (except for USER_ADMIN which is at position 0) */
99      private static final PermissionType[] PERMISSION_TYPES = values();
100     
101     /** The integer value of this enum member. */
102     private final int code;
103     
104     /**
105      * Creates a new instance of this enum. 
106      * 
107      * @param value unique value representing this instance
108      */
109     private PermissionType(int code) {
110         this.code = code;
111     }
112     
113     /**
114      * Returns the integer value representing this enum member.
115      * 
116      * @return unique value representing this instance
117      */
118     public int getCode() {
119         return code;
120     }
121     
122     /**
123      * Returns the enum instance matching the integer value. 
124      * 
125      * @param value unique value of the enum instance to return
126      * @return enum instance matching the int value
127      * @throws IllegalArgumentExeption invalid enum value
128      */
129     public static PermissionType fromCode(int code) {
130         if (code == 0 || code < -1 || code > 13) {
131             throw new IllegalArgumentException("Unknown PermissionType code " + code);
132         }
133         if (code == -1) {
134             return PERMISSION_TYPES[0];
135         }
136         return PERMISSION_TYPES[code];
137     }
138     
139 }