/* * 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 java.util.Collection; import org.apache.directory.api.ldap.model.name.Dn; import org.apache.directory.api.ldap.model.name.Rdn; import org.apache.directory.api.ldap.model.schema.ObjectClass; import org.apache.directory.api.ldap.model.url.LdapUrl; import org.apache.directory.studio.connection.core.ConnectionPropertyPageProvider; import org.apache.directory.studio.connection.core.jobs.StudioConnectionBulkRunnableWithProgress; import org.apache.directory.studio.ldapbrowser.core.propertypageproviders.EntryPropertyPageProvider; import org.eclipse.core.runtime.IAdaptable; /** * An IEntry represents an LDAP entry. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public interface IEntry extends Serializable, IAdaptable, EntryPropertyPageProvider, ConnectionPropertyPageProvider { /** * Adds the given child to this entry. * * @param childToAdd * the child to add */ void addChild( IEntry childToAdd ); /** * Deletes the given child and all its children from this entry. * * @param childToDelete * the child to delete */ void deleteChild( IEntry childToDelete ); /** * Adds the given attribute to this entry. The attribute's entry must be * this entry. * * @param attributeToAdd * the attribute to add * @throws IllegalArgumentException * if the attribute is already present in this entry or * if the attribute's entry isn't this entry. */ void addAttribute( IAttribute attributeToAdd ) throws IllegalArgumentException; /** * Deletes the given attribute from this entry. * * @param attributeToDelete * the attribute to delete * @throws IllegalArgumentException * if the attribute isn't present in this entry. */ void deleteAttribute( IAttribute attributeToDelete ) throws IllegalArgumentException; /** * Sets whether this entry exists in directory. * * @param isDirectoryEntry * true if this entry exists in directory. */ void setDirectoryEntry( boolean isDirectoryEntry ); /** * Indicates whether this entry is an alias entry. * * An entry is an alias entry if it has the object class 'alias'. * * Even if the object class attribute is not initialized an entry * is supposed to be an alias entry if the alias flag is set. * * @return true, if this entry is an alias entry */ boolean isAlias(); /** * Sets a flag whether this entry is an alias entry. * * This method is called during a search if the initialization * of the alias flag is requested. * * @param b the alias flag */ void setAlias( boolean b ); /** * Indicates whether this entry is a referral entry. * * An entry is a referral entry if it has the objectClass 'referral'. * * Even if the object class attribute is not initialized an entry * is supposed to be a referral entry if the referral flag is set. * * @return true, if this entry is a referral entry */ boolean isReferral(); /** * Sets a flag whether this entry is a referral entry. * * This method is called during a search if the initialization * fo the referral hint is requested. * * @param b the referral flag */ void setReferral( boolean b ); /** * Indicates whether this entry is a subentry. * * An entry is a subentry if it has the objectClass 'subentry'. * * Even if the object class attribute is not initialized an entry * is supposed to be a subentry if the subentry flag is set. * * @return true, if this entry is a subentry entry */ boolean isSubentry(); /** * Sets a flag whether this entry is a subentry. * * This method is called during a search if the initialization * fo the subentry is requested. * * @param b the subentry flag */ void setSubentry( boolean b ); /** * Gets the Dn of this entry, never null. * * @return the Dn of this entry, never null. */ Dn getDn(); /** * Gets the Rdn of this entry, never null. * * @return the Rdn of this entry, never null. */ Rdn getRdn(); /** * Indicates whether this entry's attributes are initialized. * * True means that the entry's attributes are completely initialized * and getAttributes() will return all attributes. * * False means that the attributes are not or only partially * initialized. The getAttributes() method will return null * or only a part of the entry's attributes. * * @return true if this entry's attributes are initialized */ boolean isAttributesInitialized(); /** * Sets a flag whether this entry's attributes are initialized. * * @param b the attributes initialized flag */ void setAttributesInitialized( boolean b ); /** * Indicates whether this entry's operational attributes should be initialized. * * @return true if this entry's attributes should be initialized */ boolean isInitOperationalAttributes(); /** * Sets a flag whether this entry's operational attributes should be initialized. * * @param b the initialize operational attributes flag */ void setInitOperationalAttributes( boolean b ); /** * Indicates whether this entry's alias children should be fetched. * * @return true if this entry's alias children should be fetched */ boolean isFetchAliases(); /** * Sets a flag whether this entry's alias children should be fetched. * * @param b the fetch aliases flag */ void setFetchAliases( boolean b ); /** * Indicates whether this entry's referral children should be fetched. * * @return true if this entry's referral children should be fetched */ boolean isFetchReferrals(); /** * Sets a flag whether this entry's referral children should be fetched. * * @param b the fetch referral flag */ void setFetchReferrals( boolean b ); /** * Indicates whether this entry's sub-entries should be fetched. * * @return true if this entry's sub-entries should be fetched */ boolean isFetchSubentries(); /** * Sets a flag whether this entry's sub-entries should be fetched. * * @param b the fetch sub-entries flag */ void setFetchSubentries( boolean b ); /** * Gets the attributes of the entry. * * If isAttributesInitialized() returns false the returned attributes * may only be a subset of the attributes in directory. * * @return The attributes of the entry or null if no attribute was added yet */ IAttribute[] getAttributes(); /** * Gets the attribute of the entry. * * @param attributeDescription the attribute description * @return The attributes of the entry or null if the attribute doesn't * exist or if the attributes aren't initialized */ IAttribute getAttribute( String attributeDescription ); /** * Gets a AttributeHierachie containing the requested attribute and * all its subtypes. * * @param attributeDescription the attribute description * @return The attributes of the entry or null if the attribute doesn't * exist or if the attributes aren't initialized */ AttributeHierarchy getAttributeWithSubtypes( String attributeDescription ); /** * Indicates whether the entry's children are initialized. * * True means that the entry's children are completely initialized * and getChildren() will return all children. * * False means that the children are not or only partially * initialized. The getChildren() method will return null * or only a part of the entry's children. * * @return true if this entry's children are initialized */ boolean isChildrenInitialized(); /** * Sets a flag whether this entry's children are initialized.. * * @param b the children initialized flag */ void setChildrenInitialized( boolean b ); /** * Returns true if the entry has children. * * @return true if the entry has children. */ boolean hasChildren(); /** * Sets a hint whether this entry has children. * * @param b the has children hint */ void setHasChildrenHint( boolean b ); /** * Gets the children of the entry. * * If isChildrenInitialized() returns false the returned children * may only be a subset of the children in directory. * * @return The children of the entry or null if no child was added yet. */ IEntry[] getChildren(); /** * Gets the number of children of the entry. * * @return The number of children of the entry or -1 if no child was added yet */ int getChildrenCount(); /** * Indicates whether this entry has more children than * getChildrenCount() returns. This occurs if the count or time limit * was exceeded while fetching children. * * @return true if this entry has (maybe) more children. */ boolean hasMoreChildren(); /** * Sets a flag whether this entry more children. * * @param b the has more children flag */ void setHasMoreChildren( boolean b ); /** * Gets the runnable used to fetch the top page of children. * * @return the runnable used to fetch the top page of children, null if none */ StudioConnectionBulkRunnableWithProgress getTopPageChildrenRunnable(); /** * Sets the runnable used to fetch the top page of children. * * @param moreChildrenRunnable the runnable used to fetch the top page of children */ void setTopPageChildrenRunnable( StudioConnectionBulkRunnableWithProgress topPageChildrenRunnable ); /** * Gets the runnable used to fetch the next page of children. * * @return the runnable used to fetch the next page of children, null if none */ StudioConnectionBulkRunnableWithProgress getNextPageChildrenRunnable(); /** * Sets the runnable used to fetch the next page of children. * * @param moreChildrenRunnable the runnable used to fetch the next page of children */ void setNextPageChildrenRunnable( StudioConnectionBulkRunnableWithProgress nextPageChildrenRunnable ); /** * Indicates whether this entry has a parent entry. Each entry except * the root DSE and the base entries should have a parent entry. * * @return true if the entry has a parent entry. */ boolean hasParententry(); /** * Gets the parent entry. * * @return the parent entry or null if this entry hasn't a parent. */ IEntry getParententry(); /** * Gets the children filter or null if none is set * * @return the children filter or null if none is set */ String getChildrenFilter(); /** * Sets the children filter. Null clears the filter. * * @param filter the children filter */ void setChildrenFilter( String filter ); /** * Gets the browser connection of this entry. * * @return the browser connection of this entry, never null. */ IBrowserConnection getBrowserConnection(); /** * Gets the LDAP URL of this entry. * * @return the LDAP URL of this entry */ LdapUrl getUrl(); /** * Gets the object class descriptions of this entry. * * @return the object class descriptions of this entry */ Collection<ObjectClass> getObjectClassDescriptions(); }