001    /*
002     * Copyright 2005 Stephen J. McConnell.
003     *
004     * Licensed  under the  Apache License,  Version 2.0  (the "License");
005     * you may not use  this file  except in  compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *   http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed  under the  License is distributed on an "AS IS" BASIS,
012     * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
013     * implied.
014     *
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    
019    package net.dpml.station.info;
020    
021    import net.dpml.lang.Enum;
022    
023    /**
024     * Lifestyle policy enumeration.
025     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
026     * @version 1.0.5
027     */
028    public final class StartupPolicy extends Enum
029    {
030        static final long serialVersionUID = 1L;
031    
032       /**
033        * Disable policy.
034        */
035        public static final StartupPolicy DISABLED = new StartupPolicy( "disabled" );
036    
037       /**
038        * Manual startup policy.
039        */
040        public static final StartupPolicy MANUAL = new StartupPolicy( "manual" );
041    
042       /**
043        * Automatic startup policy.
044        */
045        public static final StartupPolicy AUTOMATIC = new StartupPolicy( "automatic" );
046    
047       /**
048        * Array of scope enumeration values.
049        */
050        private static final StartupPolicy[] ENUM_VALUES = new StartupPolicy[]{DISABLED, MANUAL, AUTOMATIC};
051    
052       /**
053        * Returns an array of activation enum values.
054        * @return the activation policies array
055        */
056        public static StartupPolicy[] values()
057        {
058            return ENUM_VALUES;
059        }
060        
061       /**
062        * Internal constructor.
063        * @param label the enumeration label.
064        */
065        private StartupPolicy( String label )
066        {
067            super( label );
068        }
069        
070       /**
071        * Return a string representation of the scope.
072        * @return the string value
073        */
074        public String toString()
075        {
076            return getName().toUpperCase();
077        }
078        
079       /**
080        * Return a startup policy matching the supplied value.
081        * @param value the policy name
082        * @return the startup policy
083        * @exception NullPointerException if the value if null
084        * @exception IllegalArgumentException if the value if not recognized
085        */
086        public static StartupPolicy parse( String value ) throws NullPointerException, IllegalArgumentException
087        {
088            if( null == value )
089            {
090                throw new NullPointerException( "value" );
091            }
092            else if( value.equalsIgnoreCase( "disabled" ) )
093            {
094                return DISABLED;
095            }
096            else if( value.equalsIgnoreCase( "manual" ) )
097            {
098                return MANUAL;
099            }
100            else if( value.equalsIgnoreCase( "automatic" ) )
101            {
102                return AUTOMATIC;
103            }
104            else
105            {
106                final String error =
107                  "Unrecognized startup policy argument [" + value + "]";
108                throw new IllegalArgumentException( error );
109            }
110        }
111    }
112