001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one
003     *  or more contributor license agreements.  See the NOTICE file
004     *  distributed with this work for additional information
005     *  regarding copyright ownership.  The ASF licenses this file
006     *  to you under the Apache License, Version 2.0 (the
007     *  "License"); you may not use this file except in compliance
008     *  with the License.  You may obtain a copy of the License at
009     *  
010     *    http://www.apache.org/licenses/LICENSE-2.0
011     *  
012     *  Unless required by applicable law or agreed to in writing,
013     *  software distributed under the License is distributed on an
014     *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     *  KIND, either express or implied.  See the License for the
016     *  specific language governing permissions and limitations
017     *  under the License. 
018     *  
019     */
020    package org.apache.directory.shared.ldap.codec.extended.operations.certGeneration;
021    
022    
023    import org.apache.directory.shared.asn1.ber.grammar.IGrammar;
024    import org.apache.directory.shared.asn1.ber.grammar.IStates;
025    
026    /**
027     * This class store the CertGeneration's grammar constants. It is also used
028     * for debugging purposes.
029     * 
030     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
031     * @version $Rev: 664290 $, $Date: 2008-06-07 11:58:06 +0530 (Sat, 07 Jun 2008) $, 
032     */
033    public class CertGenerationStatesEnum implements IStates
034    {
035    
036        /** start state*/
037        public static final int START_STATE = 0;
038    
039        /** sequence*/
040        public static final int CERT_GENERATION_REQUEST_SEQUENCE_STATE = 1;
041    
042        /** the target DN*/
043        public static final int TARGETDN_STATE = 2;
044    
045        /** the issuer DN*/
046        public static final int ISSUER_STATE = 3;
047    
048        /** the subject DN*/
049        public static final int SUBJECT_STATE = 4;
050    
051        /** the key algorithm*/
052        public static final int KEY_ALGORITHM_STATE = 5;
053    
054        /** terminal state */
055        public static final int LAST_CERT_GENERATION_STATE = 6;
056    
057        private static String[] certGenerationString = new String[]
058            {
059              "START_STATE",
060              "CERT_GENERATION_REQUEST_SEQUENCE_STATE",
061              "TARGETDN_STATE", "ISSUER_STATE",
062              "SUBJECT_STATE",
063              "KEY_ALGORITHM_STATE"
064            };
065    
066        /** a singleton instance*/
067        private static CertGenerationStatesEnum instance = new CertGenerationStatesEnum();
068    
069        
070        /**
071         * Get the grammar name
072         * 
073         * @param grammar The grammar class
074         * @return The grammar name
075         */
076        public String getGrammarName( IGrammar grammar )
077        {
078            if ( grammar instanceof CertGenerationGrammar )
079            {
080                return "CERT_GENERATION_GRAMMER";
081            }
082            
083            return "UNKNOWN GRAMMAR";
084        }
085    
086        
087        /**
088         * Get the grammar name
089         * 
090         * @param grammar The grammar code
091         * @return The grammar name
092         */
093        public String getGrammarName( int grammar )
094        {
095            return "CERT_GENERATION_GRAMMER";
096        }
097    
098        
099        /**
100         * Get the string representing the state
101         * 
102         * @param state The state number
103         * @return The String representing the state
104         */
105        public String getState( int state )
106        {
107            return ( ( state == GRAMMAR_END ) ? "CERT_GENERATION_END_STATE" : certGenerationString[state] );
108        }
109    
110        /**
111         * Get an instance of this class
112         * 
113         * @return An instance on this class
114         */
115        public static IStates getInstance()
116        {
117            return instance;
118        }
119    }