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    
030    /**
031     * This class provides an enumeration of the allowed bind rule booelan types.
032     */
033    public enum EnumBooleanTypes {
034    
035        /**
036         * The enumeration type when the bind rule has specified boolean type of
037         * "AND".
038         */
039        AND_BOOLEAN_TYPE               ("and"),
040        /**
041         * The enumeration type when the bind rule has specified boolean type of
042         * "OR".
043         */
044        OR_BOOLEAN_TYPE                ("or"),
045        /**
046         * The enumeration type when the bind rule has specified boolean type of
047         * "NOT".
048         */
049        NOT_BOOLEAN_TYPE                ("not");
050    
051        /*
052        * The bind rule boolean type name.
053         */
054        private final String booleanType;
055    
056        /**
057         * Creates a new enumeration type for the specified bind rule boolean type.
058         * @param booleanType  The boolean type name.
059         */
060        EnumBooleanTypes(String booleanType){
061            this.booleanType = booleanType;
062        }
063    
064        /**
065         * Checks to see if the boolean type string is equal to the enumeration type
066         * name.
067         * @param booleanType  The type name to check equality for.
068         * @return  True if the keyword is equal to the specified name.
069         */
070        public boolean isBindRuleBooleanOperand(String booleanType){
071            return booleanType.equalsIgnoreCase(this.booleanType);
072        }
073    
074        /**
075         * Create a new enumeration type for the specified boolean type name.
076         * @param booleanType  The name of the enumeration to create.
077         * @return A new enumeration type for the name or null if the name is
078         * not valid.
079         */
080        public static
081        EnumBooleanTypes createBindruleOperand(String booleanType) {
082            if (booleanType != null){
083              for (EnumBooleanTypes t : EnumBooleanTypes.values()) {
084                    if (t.isBindRuleBooleanOperand(booleanType)) {
085                        return t;
086                    }
087                }
088            }
089            return null;
090        }
091    }