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 */
020package org.apache.directory.api.ldap.model.exception;
021
022
023/**
024 * This enum contains all the various codes that can be used to report issues 
025 * during the integrity check of the schema by the SchemaManager.
026 * 
027 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
028 */
029public enum LdapSchemaExceptionCodes
030{
031    // Codes for all Schema Objects
032
033    /** Characterizing a SO with an OID being already registered */
034    OID_ALREADY_REGISTERED,
035
036    /** Characterizing a SO with a name being already registered */
037    NAME_ALREADY_REGISTERED,
038
039    /** Characterizing an SO with a nonexistent schema */
040    NONEXISTENT_SCHEMA,
041
042    // Codes for Attribute Type
043
044    /** Characterizing an AT with a nonexistent superior */
045    AT_NONEXISTENT_SUPERIOR,
046
047    /** Characterizing an AT sub-typing a Collective AT  */
048    AT_CANNOT_SUBTYPE_COLLECTIVE_AT,
049
050    /** Characterizing an AT containing a cycle in its type hierarchy */
051    AT_CYCLE_TYPE_HIERARCHY,
052
053    /** Characterizing an AT with a nonexistent syntax */
054    AT_NONEXISTENT_SYNTAX,
055
056    /** Characterizing an AT has no syntax and no superior */
057    AT_SYNTAX_OR_SUPERIOR_REQUIRED,
058
059    /** Characterizing an AT with a nonexistent equality matching rule */
060    AT_NONEXISTENT_EQUALITY_MATCHING_RULE,
061
062    /** Characterizing an AT with a nonexistent ordering matching rule */
063    AT_NONEXISTENT_ORDERING_MATCHING_RULE,
064
065    /** Characterizing an AT with a nonexistent substring matching rule */
066    AT_NONEXISTENT_SUBSTRING_MATCHING_RULE,
067
068    /** Characterizing an AT which has a different usage than its superior */
069    AT_MUST_HAVE_SAME_USAGE_THAN_SUPERIOR,
070
071    /** Characterizing an AT which has a 'userApplications' usage but is not user modifiable */
072    AT_USER_APPLICATIONS_USAGE_MUST_BE_USER_MODIFIABLE,
073
074    /** Characterizing an AT which is collective but does not have a 'userApplications' usage */
075    AT_COLLECTIVE_MUST_HAVE_USER_APPLICATIONS_USAGE,
076
077    /** Characterizing an AT which is collective and is single-valued */
078    AT_COLLECTIVE_CANNOT_BE_SINGLE_VALUED,
079
080    // Codes for Object Class
081
082    /** Characterizing an abstract OC which inherits from an OC not being abstract */
083    OC_ABSTRACT_MUST_INHERIT_FROM_ABSTRACT_OC,
084
085    /** Characterizing an auxiliary OC which inherits from a structural OC */
086    OC_AUXILIARY_CANNOT_INHERIT_FROM_STRUCTURAL_OC,
087
088    /** Characterizing a structural OC which inherits from an auxiliary OC */
089    OC_STRUCTURAL_CANNOT_INHERIT_FROM_AUXILIARY_OC,
090
091    /** Characterizing an OC with a nonexistent superior */
092    OC_NONEXISTENT_SUPERIOR,
093
094    /** Characterizing an OC containing a cycle in its class hierarchy */
095    OC_CYCLE_CLASS_HIERARCHY,
096
097    /** Characterizing an OC with a collective AT in its must ATs list */
098    OC_COLLECTIVE_NOT_ALLOWED_IN_MUST,
099
100    /** Characterizing an OC with a collective AT in its may ATs list */
101    OC_COLLECTIVE_NOT_ALLOWED_IN_MAY,
102
103    /** Characterizing an OC with a duplicated AT in its must ATs list */
104    OC_DUPLICATE_AT_IN_MUST,
105
106    /** Characterizing an OC with a duplicated AT in its may ATs list */
107    OC_DUPLICATE_AT_IN_MAY,
108
109    /** Characterizing an OC with a nonexistent AT in its must ATs list */
110    OC_NONEXISTENT_MUST_AT,
111
112    /** Characterizing an OC with a nonexistent AT in its may ATs list */
113    OC_NONEXISTENT_MAY_AT,
114
115    /** Characterizing an OC with a duplicated AT in its may and must ATs list */
116    OC_DUPLICATE_AT_IN_MAY_AND_MUST,
117
118    // Codes for Matching Rule
119
120    /** Characterizing a MR with a nonexistent syntax */
121    MR_NONEXISTENT_SYNTAX,
122}