/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 2000 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ package netscape.ldap; import java.util.*; /** * The definition of a syntax type in the schema. * RFC 2252, Lightweight Directory Access Protocol (v3): * LDAP Subschema Attribute covers the types of information * to specify when defining a syntax. * The description of a syntax can include the following: *

* *

*

* * When you construct an LDAPSyntaxSchema object, you can * specify these types of information as arguments to the constructor or * in the ldapSyntaxes format specified in RFC 2252. * When an LDAP client searches an LDAP server for the schema, the server * returns schema information as an object with attribute values in this * format. *

* RFC 2252 defines SyntaxDescription as follows: *

*

 *     SyntaxDescription = "(" whsp
 *        numericoid whsp
 *        [ "DESC" qdstring ]
 *        whsp ")"
 * 
*

* Syntax definitions do not have a name, so the getName * method inherited from LDAPSchemaElement returns "". * To get the OID and description of this syntax type * definition, use the getOID and * getDescription methods inherited from the abstract class * LDAPSchemaElement. *

* * To add or remove this syntax type definition from the * schema, use the add and remove * methods, which this class inherits from the LDAPSchemaElement * abstract class. * * @version 1.0 * @see netscape.ldap.LDAPSchemaElement **/ public class LDAPSyntaxSchema extends LDAPSchemaElement { static final long serialVersionUID = 3590667117475688132L; /** * Constructs a blank element. */ protected LDAPSyntaxSchema() { super(); } /** * Constructs a syntax type definition, using the specified * information. * @param oid object identifier (OID) of the syntax type * in dotted-string format (for example, "1.2.3.4") * @param description description of syntax type */ public LDAPSyntaxSchema( String oid, String description ) { super( "", oid, description ); attrName = "ldapSyntaxes"; syntaxElement.syntax = syntaxElement.syntaxCheck( oid ); syntaxElement.syntaxString = oid; } /** * Constructs a syntax type definition based on a description in * the ldapSyntaxes format. For information on this format, * (see RFC 2252, Lightweight Directory Access Protocol (v3): * LDAP Subschema Attribute. This is the format that LDAP servers * and clients use to exchange schema information. (For example, when * you search an LDAP server for its schema, the server returns an entry * with the syntaxs "objectclasses" and "ldapSyntaxes". The * values of "ldapSyntaxes" are syntax type descriptions * in this format.) *

* * @param raw definition of the syntax type in the * ldapSyntaxes format */ public LDAPSyntaxSchema( String raw ) { attrName = "ldapSyntaxes"; parseValue( raw ); } /** * Gets the syntax of the schema element * @return one of the following values: *

*/ public int getSyntax() { return syntaxElement.syntax; } /** * Gets the syntax of the syntax type in dotted-decimal format, * for example "1.2.3.4.5" * @return The syntax syntax in dotted-decimal format. */ public String getSyntaxString() { return syntaxElement.syntaxString; } /** * Prepares a value in RFC 2252 format for submission to a server * * @return a String ready for submission to an LDAP server. */ public String getValue() { String s = getValuePrefix(); String val = getCustomValues(); if ( val.length() > 0 ) { s += val + ' '; } s += ')'; return s; } /** * Gets the definition of the syntax type in a user friendly format. * This is the format that the syntax type definition uses when * printing the syntax type or the schema. * @return definition of the syntax type in a user friendly format. */ public String toString() { String s = "OID: " + oid; s += "; Description: " + description; s += getQualifierString( null ); return s; } protected LDAPSyntaxSchemaElement syntaxElement = new LDAPSyntaxSchemaElement(); }