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 2007-2008 Sun Microsystems, Inc.
026     */
027    
028    package org.opends.messages;
029    
030    import java.util.Map;
031    import java.util.HashMap;
032    import java.util.EnumSet;
033    
034    /**
035     * Defines values for message categories which are loosly based on
036     * server components.  Categories contain an in value that can be
037     * used as a mask for bitwise operations.
038     */
039    @org.opends.server.types.PublicAPI(
040        stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
041        mayInstantiate=false,
042        mayExtend=false,
043        mayInvoke=true)
044    public enum Category {
045    
046      /**
047       * The category that will be used for messages associated with the
048       * core server.
049       */
050      CORE(0x00000000),
051    
052      /**
053       * The category that will be used for messages associated with server
054       * extensions (e.g., extended operations, SASL mechanisms, password storage
055       * schemes, password validators, etc.).
056       */
057      EXTENSIONS(0x00100000),
058    
059      /**
060       * The category that will be used for messages associated with
061       * connection and protocol handling (e.g., ASN.1 and LDAP).
062       */
063      PROTOCOL(0x00200000),
064    
065      /**
066       * The category that will be used for messages associated with
067       * configuration handling.
068       */
069      CONFIG(0x00300000),
070    
071      /**
072       * The category that will be used for messages associated with the
073       * server loggers.
074       */
075      LOG(0x00400000),
076    
077      /**
078       * The category that will be used for messages associated with the
079       * general server utilities.
080       */
081      UTIL(0x00500000),
082    
083      /**
084       * The category that will be used for messages associated with the
085       * server schema elements.
086       */
087      SCHEMA(0x00600000),
088    
089      /**
090       * The category that will be used for messages associated with plugin
091       * processing.
092       */
093      PLUGIN(0x00700000),
094    
095      /**
096       * The category used for messages associated with the JE backend.
097       */
098      JEB(0x00800000),
099    
100      /**
101       * The category used for messages associated with generic backends.
102       */
103      BACKEND(0x00900000),
104    
105      /**
106       * The category used for messages associated with tools.
107       */
108      TOOLS(0x00A00000),
109    
110      /**
111       * The category used for messages associated with tasks.
112       */
113      TASK(0x00B00000),
114    
115      /**
116       * The category used for messages associated with Access Control.
117       */
118      ACCESS_CONTROL(0x00C00000),
119    
120      /**
121       * The category used for messages associated with the
122       * administration framework.
123       */
124      ADMIN(0x00D00000),
125    
126      /**
127       * The category used for messages associated with the Synchronization.
128       */
129      SYNC(0x00E00000),
130    
131      /**
132       * The category used for messages associated with version information.
133       */
134      VERSION(0x00F00000),
135    
136      /**
137       * The category used for messages associated with quicksetup tools.
138       */
139      QUICKSETUP(0x01000000),
140    
141      /**
142       * The category used for messages associated with the tool like the
143       * offline installer and unintaller.
144       */
145      ADMIN_TOOL(0x01100000),
146    
147      /**
148       * The category used for messages associated with the dsconfig
149       * administration tool.
150       */
151      DSCONFIG(0x01200000),
152    
153      /**
154       * The category used for messages associated with the runtime information.
155       */
156    
157      RUNTIME_INFORMATION(0x01300000),
158    
159      /**
160       * The category that will be used for messages associated with
161       * third-party (including user-defined) modules.
162       */
163      THIRD_PARTY(0x80000000),
164    
165      /**
166       * The category that will be used for messages associated with
167       * user-defined modules.
168       */
169      USER_DEFINED(0xFFF00000);
170    
171      static private Map<Integer,Category> MASK_VALUE_MAP;
172    
173      static {
174        MASK_VALUE_MAP = new HashMap<Integer,Category>();
175        for (Category c : EnumSet.allOf(Category.class)) {
176          MASK_VALUE_MAP.put(c.mask, c);
177        }
178      }
179    
180      /**
181       * Obtains the <code>Severity</code> associated with the the input
182       * message ID <code>msgId</code>.
183       * @param msgId int message ID
184       * @return Severity assocated with the ID
185       */
186      static public Category parseMessageId(int msgId) {
187        return Category.parseMask(msgId & 0xFFF00000);
188      }
189    
190      /**
191       * Obtains the <code>Severity</code> associated with a given mask
192       * value.
193       * @param mask for which a <code>Severity</code> is obtained.
194       * @return Severity associated with <code>mask</code>
195       */
196      static public Category parseMask(int mask) {
197        return MASK_VALUE_MAP.get(mask);
198      }
199    
200      private final int mask;
201    
202      /**
203       * Gets the mask value associated with this category.
204       * @return int mask value
205       */
206      public int getMask() {
207        return this.mask;
208      }
209    
210      private Category(int intValue) {
211        this.mask = intValue;
212      }
213    
214    }