blob: 8aba632a83358536c8719bf01bb23007b426a7c9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.studio.ldapbrowser.core.model;
import java.io.Serializable;
import org.apache.directory.api.ldap.model.schema.AttributeType;
import org.apache.directory.studio.connection.core.ConnectionPropertyPageProvider;
import org.apache.directory.studio.ldapbrowser.core.propertypageproviders.AttributePropertyPageProvider;
import org.apache.directory.studio.ldapbrowser.core.propertypageproviders.EntryPropertyPageProvider;
import org.eclipse.core.runtime.IAdaptable;
/**
* An IAttribute represents an LDAP attribute.
*/
public interface IAttribute extends Serializable, IAdaptable, AttributePropertyPageProvider, EntryPropertyPageProvider,
ConnectionPropertyPageProvider
{
/** The options delimiter ';' */
String OPTION_DELIMITER = ";"; //$NON-NLS-1$
/** The language tag prefix 'lang-' */
String OPTION_LANG_PREFIX = "lang-"; //$NON-NLS-1$
/**
* Gets the entry of this attribute.
*
* @return the entry of this attribute, never null
*/
IEntry getEntry();
/**
* Returns true if this attribute is consistent. The following
* conditions must be fulfilled:
*
* <ul>
* <li>The attribute must contain at least one value</li>
* <li>The attribute mustn't contain any empty value</li>
* </ul>
*
* @return true if the attribute ist consistent
*/
boolean isConsistent();
/**
* Returns true if this attribute is a must attribute of its entry
* according to the schema and the entry's object classes.
*
* @return true if this attribute is a must attribute of its entry.
*/
boolean isMustAttribute();
/**
* Returns true if this attribute is a may attribute of its entry
* according to the schema and the entry's object classes.
*
* @return true if this attribute is a may attribute of its entry.
*/
boolean isMayAttribute();
/**
* Returns true if this attribute is an operational attribute according
* to the schema.
*
* @return true if this attribute is an operational attribute.
*/
boolean isOperationalAttribute();
/**
* Return true if this attribute is the objeCtclass attribute.
*
* @return true if this attribute is the objectClass attribute.
*/
boolean isObjectClassAttribute();
/**
* Return true if the attribute is of type String.
*
* @return true if the attribute is of type String.
*/
boolean isString();
/**
* Return true if the attribute is of type byte[].
*
* @return true if the attribute is of type byte[].
*/
boolean isBinary();
/**
* Adds an empty value.
*
*/
void addEmptyValue();
/**
* Removes one empty value if one is present.
*
*/
void deleteEmptyValue();
/**
* Adds the given value to this attribute. The value's attribute must be
* this attribute.
*
* @param valueToAdd
* the value to add
* @throws IllegalArgumentException
* if the value is null or if the value's attribute
* isn't this attribute.
*/
void addValue( IValue valueToAdd ) throws IllegalArgumentException;
/**
* Deletes the given value from this attribute.
*
* @param valueToDelete
* the value to delete
* @throws IllegalArgumentException
* if the value is null or if the value's attribute
* isn't this attribute.
*/
void deleteValue( IValue valueToDelete ) throws IllegalArgumentException;
/**
* Replaces the old value with the new value.
*
* @param oldValue
* the value that should be replaced
* @param newValue
* the value that should be added
* @throws IllegalArgumentException
* if the value is null or if the value's attribute
* isn't this attribute.
*/
void modifyValue( IValue oldValue, IValue newValue ) throws IllegalArgumentException;
/**
* Gets the values of this attribute.
*
* @return the values of this attribute, may be an empty array, never null.
*/
IValue[] getValues();
/**
* Gets the number of values in this attribute.
*
* @return the number of values in this attribute.
*/
int getValueSize();
/**
* Gets the description of this attribute. The description
* consists of the attribute type and optional options.
*
* @return the description of this attribute.
*/
String getDescription();
/**
* Gets the type of this attribute (description without options).
*
* @return the attribute type.
*/
String getType();
/**
* Gets all values as byte[]. If the values aren't binary they are
* converted to byte[] using UTF-8 encoding.
*
* @return The binary values
*/
byte[][] getBinaryValues();
/**
* Gets the first value as string if one is present, null otherwise
*
* @return The first value if one present, null otherwise
*/
String getStringValue();
/**
* Gets all values as String. If the values aren't strings they are
* converted using UTF-8 encoding.
*
* @return The string values
*/
String[] getStringValues();
/**
* Returns true if the argument is also of type IAttribute and they are
* equal.
*
* IAttributes are equal if there entries and there attribute
* description are equal.
*
* @param o
* The attribute to compare, must be of type IAttribute
* @return true if the argument is equal to this.
*/
boolean equals( Object o );
/**
* Gets the AttributeTypeDescription of this attribute.
*
* @return the AttributeTypeDescription of this attribute, may be the
* default or a dummy
*/
AttributeType getAttributeTypeDescription();
/**
* Gets the AttributeDescription of this attribute.
*
* @return the AttributeDescription of this attribute,.
*/
AttributeDescription getAttributeDescription();
}