/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.server.admin; import java.util.Locale; import java.util.MissingResourceException; /** * Relation definitions define relationships between types of managed * objects. In addition they define the ownership model: *
* Within the server, listeners can choose to request notification of * managed objects being added or removed from relations. *
* In LDAP, compositions are represented as follows: *
* The type of the additional parameters to the visitor's
* methods.
* @param v
* The relation definition visitor.
* @param p
* Optional additional visitor parameter.
* @return Returns a result as specified by the visitor.
*/
public abstract null if there is no
* description.
*/
public final String getDescription() {
return getDescription(Locale.getDefault());
}
/**
* Gets the optional description of this relation definition in the
* specified locale.
*
* @param locale
* The locale.
* @return Returns the description of this relation definition in
* the specified locale, or null if there is
* no description.
*/
public final String getDescription(Locale locale) {
try {
String property = "relation." + name + ".description";
return ManagedObjectDefinitionI18NResource.getInstance()
.getMessage(getParentDefinition(), property, locale);
} catch (MissingResourceException e) {
return null;
}
}
/**
* Get the name of the relation.
*
* @return Returns the name of the relation.
*/
public final String getName() {
return name;
}
/**
* Get the definition of the parent managed object.
*
* @return Returns the definition of the parent managed object.
*/
public final AbstractManagedObjectDefinition, ?> getParentDefinition() {
return pd;
}
/**
* Gets the synopsis of this relation definition in the default
* locale.
*
* @return Returns the synopsis of this relation definition in the
* default locale.
*/
public final String getSynopsis() {
return getSynopsis(Locale.getDefault());
}
/**
* Gets the synopsis of this relation definition in the specified
* locale.
*
* @param locale
* The locale.
* @return Returns the synopsis of this relation definition in the
* specified locale.
*/
public final String getSynopsis(Locale locale) {
String property = "relation." + name + ".synopsis";
return ManagedObjectDefinitionI18NResource.getInstance()
.getMessage(getParentDefinition(), property, locale);
}
/**
* Gets the user friendly name of this relation definition in the
* default locale.
*
* @return Returns the user friendly name of this relation
* definition in the default locale.
*/
public final String getUserFriendlyName() {
return getUserFriendlyName(Locale.getDefault());
}
/**
* Gets the user friendly name of this relation definition in the
* specified locale.
*
* @param locale
* The locale.
* @return Returns the user friendly name of this relation
* definition in the specified locale.
*/
public final String getUserFriendlyName(Locale locale) {
String property = "relation." + name + ".user-friendly-name";
return ManagedObjectDefinitionI18NResource.getInstance()
.getMessage(getParentDefinition(), property, locale);
}
/**
* {@inheritDoc}
*/
@Override
public final String toString() {
StringBuilder builder = new StringBuilder();
toString(builder);
return builder.toString();
}
/**
* Append a string representation of the managed object relation to
* the provided string builder.
*
* @param builder
* The string builder where the string representation
* should be appended.
*/
public abstract void toString(StringBuilder builder);
}