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     * docs/licenses/cddl.txt
011     * or http://www.opensource.org/licenses/cddl1.php.
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     * docs/licenses/cddl.txt.  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 2010-2012 UnboundID Corp.
026     */
027    package com.unboundid.directory.sdk.common.schema;
028    
029    
030    
031    import java.util.List;
032    import java.util.Map;
033    import java.util.Set;
034    
035    import com.unboundid.util.NotExtensible;
036    import com.unboundid.util.ThreadSafety;
037    import com.unboundid.util.ThreadSafetyLevel;
038    
039    
040    
041    /**
042     * This interface defines a set of methods that may be used to obtain
043     * information about a DIT content rule defined in the server schema.
044     */
045    @NotExtensible()
046    @ThreadSafety(level=ThreadSafetyLevel.INTERFACE_THREADSAFE)
047    public interface DITContentRule
048    {
049      /**
050       * Retrieves the list of names for this DIT content rule, if any.
051       *
052       * @return  The list of names for this DIT content rule, or an empty list if
053       *          there are no user-defined names.
054       */
055      List<String> getNames();
056    
057    
058    
059      /**
060       * Retrieves the primary name for this DIT content rule, or the numeric OID
061       * of the structural object class no names are defined.
062       *
063       * @return The primary name or structural class OID for this DIT content rule.
064       */
065      String getNameOrOID();
066    
067    
068    
069      /**
070       * Indicates whether the provided string is equal to any of the defined names
071       * or the OID of the structural class for this DIT content rule.
072       *
073       * @param  name  The name for which to make the determination.
074       *
075       * @return  {@code true} if the provided string matches one of the names or
076       *          the structural class OID for this DIT content rule, or
077       *          {@code false} if not.
078       */
079      boolean hasNameOrOID(final String name);
080    
081    
082    
083      /**
084       * Retrieves the description for this DIT content rule, if any.
085       *
086       * @return  The description for this DIT content rule, or {@code null} if it
087       *          does not have a description.
088       */
089      String getDescription();
090    
091    
092    
093      /**
094       * Retrieves the structural object class for this DIT content rule.
095       *
096       * @return  The structural object class for this DIT content rule.
097       */
098      ObjectClass getStructuralClass();
099    
100    
101    
102      /**
103       * Retrieves the set of allowed auxiliary classes for this DIT content rule,
104       * if any.
105       *
106       * @return  The set of allowed auxiliary classes for this DIT content rule, or
107       *          an empty set if there are no associated auxiliary classes.
108       */
109      Set<ObjectClass> getAuxiliaryClasses();
110    
111    
112    
113      /**
114       * Retrieves the set of required attributes for this DIT content rule, if any.
115       *
116       * @return  The set of required attributes for this DIT content rule, or an
117       *          empty list if there are no required attributes.
118       */
119      Set<AttributeType> getRequiredAttributes();
120    
121    
122    
123      /**
124       * Indicates whether the provided attribute type is required by this DIT
125       * content rule.
126       *
127       * @param  t  The attribute type for which to make the determination.
128       *
129       * @return  {@code true} if the provided attribute type is required by this
130       *          DIT content rule, or {@code false} if not.
131       */
132      boolean isRequired(final AttributeType t);
133    
134    
135    
136      /**
137       * Retrieves the set of optional attributes for this DIT content rule, if any.
138       *
139       * @return  The set of optional attributes for this DIT content rule, or an
140       *          empty set if there are no optional attributes.
141       */
142      Set<AttributeType> getOptionalAttributes();
143    
144    
145    
146      /**
147       * Indicates whether the provided attribute type is optional for this DIT
148       * content rule.
149       *
150       * @param  t  The attribute type for which to make the determination.
151       *
152       * @return  {@code true} if the provided attribute type is optional for this
153       *          DIT content rule, or {@code false} if not.
154       */
155      boolean isOptional(final AttributeType t);
156    
157    
158    
159      /**
160       * Indicates whether the provided attribute type is allowed for use with this
161       * DIT content rule as either a required or optional type.
162       *
163       * @param  t  The attribute type for which to make the determination.
164       *
165       * @return  {@code true} if the provided attribute type is allowed for use
166       *          with this DIT content rule, or {@code false} if not.
167       */
168      boolean isRequiredOrOptional(final AttributeType t);
169    
170    
171    
172      /**
173       * Retrieves the set of prohibited attributes for this DIT content rule, if
174       * any.
175       *
176       * @return  The set of prohibited attributes for this DIT content rule, or an
177       *          empty set if there are no prohibited attributes.
178       */
179      Set<AttributeType> getProhibitedAttributes();
180    
181    
182    
183      /**
184       * Indicates whether the provided attribute type is prohibited for this DIT
185       * content rule.
186       *
187       * @param  t  The attribute type for which to make the determination.
188       *
189       * @return  {@code true} if the provided attribute type is prohibited for this
190       *          DIT content rule, or {@code false} if not.
191       */
192      boolean isProhibited(final AttributeType t);
193    
194    
195    
196      /**
197       * Indicates whether this DIT content rule is declared obsolete in the server
198       * schema.
199       *
200       * @return  {@code true} if this DIT content rule is declared obsolete in the
201       *          server schema, or {@code false} if not.
202       */
203      boolean isObsolete();
204    
205    
206    
207      /**
208       * Retrieves a map of all defined extensions for this DIT content rule.
209       *
210       * @return  A map of all defined extensions for this DIT content rule.
211       */
212      Map<String,List<String>> getExtensions();
213    
214    
215    
216      /**
217       * Retrieves the name of the schema file in which this DIT content rule is
218       * defined.
219       *
220       * @return  The name of the schema file in which this DIT content rule is
221       *          defined.
222       */
223      String getSchemaFileName();
224    
225    
226    
227      /**
228       * Indicates whether the provided object is equal to this DIT content rule.
229       *
230       * @param  o  The object for which to make the determination.
231       *
232       * @return  {@code true} if the provided object is equal to this DIT content
233       *          rule, or {@code false} if not.
234       */
235      boolean equals(final Object o);
236    
237    
238    
239      /**
240       * Retrieves a hash code for this DIT content rule.
241       *
242       * @return  A hash code for this DIT content rule.
243       */
244      int hashCode();
245    
246    
247    
248      /**
249       * Retrieves a string representation of this DIT content rule definition.
250       *
251       * @return  A string representation of this DIT content rule definition.
252       */
253      String toString();
254    }