001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2008 Sun Microsystems, Inc.
026     */
027    
028    package org.opends.server.authorization.dseecompat;
029    import static org.opends.server.authorization.dseecompat.Aci.*;
030    
031    /**
032     * This class provides an enumeration of the allowed rights.
033     */
034    public enum EnumRight {
035    
036        /**
037         * This enumeration is returned when the result of the right is "read".
038         */
039        READ        ("read"),
040        /**
041         * This enumeration is returned when the result of the right is "write".
042         */
043        WRITE       ("write"),
044        /**
045         * This enumeration is returned when the result of the right is "add".
046         */
047        ADD         ("add"),
048        /**
049         * This enumeration is returned when the result of the right is "delete".
050         */
051        DELETE      ("delete"),
052        /**
053         * This enumeration is returned when the result of the right is "search".
054         */
055        SEARCH      ("search"),
056        /**
057         * This enumeration is returned when the result of the right is "compare".
058         */
059        COMPARE     ("compare"),
060        /**
061         * This enumeration is returned when the result of the right is
062         * "selfwrite".
063         */
064        SELFWRITE   ("selfwrite"),
065        /**
066         * This enumeration is returned when the result of the right is "proxy".
067         */
068        PROXY       ("proxy"),
069        /**
070         * This enumeration is returned when the result of the right is "import".
071         */
072        IMPORT      ("import"),
073        /**
074         * This enumeration is returned when the result of the right is "export".
075         */
076        EXPORT      ("export"),
077        /**
078         * This enumeration is returned when the result of the right is "all".
079         */
080        ALL         ("all"),
081        /**
082         * This enumeration is used internally by the modify operation
083         * processing and is not part of the ACI syntax.
084         */
085        DELWRITE    ("delwrite"),
086        /**
087         * This enumerations is used internally by the modify operation
088         * processing and is not part of the ACI syntax.
089         */
090        ADDWRITE    ("addwrite");
091    
092        /*
093         * The name of the right.
094         */
095        private final String right;
096    
097        /**
098         * Creates an enumeration of the right name.
099         * @param right The name of the right.
100         */
101        EnumRight (String right) {
102            this.right = right ;
103        }
104    
105        /**
106         * Checks if the enumeration is equal to the right name.
107         * @param right The name of the right to check.
108         * @return  True if the right is equal to the enumeration's.
109         */
110        public boolean isRight(String right){
111            return right.equalsIgnoreCase(this.right);
112        }
113    
114        /**
115         * Creates an enumeration of the right name.
116         * @param right The name of the right.
117         * @return An enumeration of the right or null if the name is invalid.
118         */
119        public static EnumRight decode(String right){
120            if (right != null){
121                for (EnumRight t : EnumRight.values()){
122                    if (t.isRight(right)){
123                        return t;
124                    }
125                }
126            }
127            return null;
128        }
129    
130        /**
131         * Returns bit mask associated with the specified right.
132         * @param right The right enumeration to return the mask for.
133         * @return The bit mask associated with the right.
134         */
135        public static int getMask(EnumRight right) {
136            int mask=ACI_NULL;
137            switch(right) {
138                case READ:
139                    mask=ACI_READ;
140                    break;
141                case WRITE:
142                    mask=ACI_WRITE;
143                    break;
144                case ADD:
145                    mask=ACI_ADD;
146                    break;
147                case DELETE:
148                    mask=ACI_DELETE;
149                    break;
150                case SEARCH:
151                    mask=ACI_SEARCH;
152                    break;
153                case COMPARE:
154                    mask=ACI_COMPARE;
155                    break;
156                case ALL:
157                    mask=ACI_ALL;
158                    break;
159                case  EXPORT:
160                    mask=ACI_EXPORT;
161                    break;
162                case IMPORT:
163                    mask=ACI_IMPORT;
164                    break;
165                case PROXY:
166                    mask=ACI_PROXY;
167                    break;
168                case SELFWRITE:
169                    mask=ACI_SELF;
170                    break;
171            }
172            return mask;
173        }
174    }