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-2013 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 }