You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2006/05/09 01:36:56 UTC
svn commit: r405224 -
/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java
Author: elecharny
Date: Mon May 8 16:36:55 2006
New Revision: 405224
URL: http://svn.apache.org/viewcvs?rev=405224&view=rev
Log:
This class has been added to avoid any breakage in the LdifEntry class.
Added:
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java
Added: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java
URL: http://svn.apache.org/viewcvs/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java?rev=405224&view=auto
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java (added)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/Entry.java Mon May 8 16:36:55 2006
@@ -0,0 +1,464 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.shared.ldap.ldif;
+
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+import javax.naming.directory.ModificationItem;
+import javax.naming.ldap.Control;
+
+
+/**
+ * A entry to be populated by an ldif parser.
+ *
+ * We will have different kind of entries :
+ * - added entries
+ * - deleted entries
+ * - modified entries
+ * - RDN modified entries
+ * - DN modified entries
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class Entry
+{
+ /** the version of the ldif */
+ private int version;
+
+ /** the change type */
+ private int changeType;
+
+ /** the modification item list */
+ private List modificationList;
+ private Map modificationItems;
+
+ /** the dn of the ldif entry */
+ private String dn;
+
+ /** The new superior */
+ private String newSuperior;
+
+ /** The new rdn */
+ private String newRdn;
+
+ /** The delete old rdn flag */
+ private boolean deleteOldRdn;
+
+ /** attributes of the entry */
+ private BasicAttributes attributeList;
+
+ /** The possible change types */
+ public final static int ADD = 0;
+ public final static int MODIFY = 1;
+ public final static int MODDN = 2;
+ public final static int MODRDN = 3;
+ public final static int DELETE = 4;
+
+ /** The control */
+ private Control control;
+
+ /**
+ * Creates a new Entry object.
+ */
+ public Entry()
+ {
+ changeType = ADD; // Default LDIF content
+ modificationList = new LinkedList();
+ modificationItems = new HashMap();
+ dn = null;
+ attributeList = new BasicAttributes( true );
+ version = 1; // default version in ldif
+ control = null;
+ }
+
+ /**
+ * Sets the version of this ldif
+ *
+ * @param version The version of this ldif
+ */
+ public void setVersion( int version )
+ {
+ this.version = version;
+ }
+
+ /**
+ * Set the Distinguished Name
+ *
+ * @param dn The Distinguished Name
+ */
+ public void setDn( String dn )
+ {
+ this.dn = dn;
+ }
+
+ /**
+ * Set the modification type
+ *
+ * @param changeType The change type
+ *
+ */
+ public void setChangeType( int changeType )
+ {
+ this.changeType = changeType;
+ }
+
+ /**
+ * Set the change type
+ *
+ * @param changeType The change type
+ */
+ public void setChangeType( String changeType )
+ {
+ if ( "add".equals( changeType ) )
+ {
+ this.changeType = ADD;
+ }
+ else if ( "modify".equals( changeType ) )
+ {
+ this.changeType = MODIFY;
+ }
+ else if ( "moddn".equals( changeType ) )
+ {
+ this.changeType = MODDN;
+ }
+ else if ( "modrdn".equals( changeType ) )
+ {
+ this.changeType = MODRDN;
+ }
+ else if ( "delete".equals( changeType ) )
+ {
+ this.changeType = DELETE;
+ }
+ }
+
+ /**
+ * Add a modification item (used by modify operations)
+ *
+ * @param ModificationItem The modification to be added
+ */
+ public void addModificationItem( ModificationItem modification )
+ {
+ if ( changeType == MODIFY )
+ {
+ modificationList.add( modification );
+ modificationItems.put( modification.getAttribute().getID(), modification );
+ }
+ }
+
+ /**
+ * Add a modification item (used by modify operations)
+ *
+ * @param modOp The operation. One of :
+ * DirContext.ADD_ATTRIBUTE
+ * DirContext.REMOVE_ATTRIBUTE
+ * DirContext.REPLACE_ATTRIBUTE
+ *
+ * @param attr The attribute to be added
+ */
+ public void addModificationItem( int modOp, Attribute attr ) throws NamingException
+ {
+ if ( changeType == MODIFY )
+ {
+ if ( modificationItems.containsKey( attr.getID() ) )
+ {
+ ModificationItem item = (ModificationItem)modificationItems.get( attr.getID() );
+ Attribute attribute = item.getAttribute();
+
+ Enumeration attrs = attr.getAll();
+
+ while ( attrs.hasMoreElements() )
+ {
+ attribute.add( attrs.nextElement() );
+ }
+ }
+ else
+ {
+ ModificationItem item = new ModificationItem( modOp, attr );
+ modificationList.add( item );
+ modificationItems.put( attr.getID(), item );
+ }
+ }
+ }
+
+ /**
+ * Add a modification item
+ *
+ * @param modOp The operation. One of :
+ * DirContext.ADD_ATTRIBUTE
+ * DirContext.REMOVE_ATTRIBUTE
+ * DirContext.REPLACE_ATTRIBUTE
+ *
+ * @param id The attribute's ID
+ * @param value The attribute's value
+ */
+ public void addModificationItem( int modOp, String id, Object value )
+ {
+ if ( changeType == MODIFY )
+ {
+ BasicAttribute attr = new BasicAttribute( id, value );
+
+ if ( modificationItems.containsKey( id ) )
+ {
+ ModificationItem item = (ModificationItem)modificationItems.get( id );
+ Attribute attribute = item.getAttribute();
+
+ attribute.add( value );
+ }
+ else
+ {
+ ModificationItem item = new ModificationItem( modOp, attr );
+ modificationList.add( item );
+ modificationItems.put( id, item );
+ }
+ }
+ }
+
+ /**
+ * Add an attribute to the entry
+ *
+ * @param attr The attribute to be added
+ */
+ public void addAttribute( Attribute attr )
+ {
+ attributeList.put( attr );
+ }
+
+ /**
+ * Add an attribute to the entry
+ *
+ * @param id The attribute ID
+ *
+ * @param value The attribute value
+ *
+ */
+ public void addAttribute( String id, Object value )
+ {
+ Attribute attr = get( id );
+
+ if ( attr != null )
+ {
+ attr.add( value );
+ }
+ else
+ {
+ attributeList.put( id, value );
+ }
+ }
+
+ /**
+ * Add an attribute value to an existing attribute
+ *
+ * @param id The attribute ID
+ *
+ * @param value The attribute value
+ *
+ */
+ public void putAttribute( String id, Object value )
+ {
+ Attribute attribute = attributeList.get( id );
+
+ if ( attribute != null )
+ {
+ attribute.add( value );
+ }
+ else
+ {
+ attributeList.put( id, value );
+ }
+ }
+
+ /**
+ * Get the change type
+ *
+ * @return The change type. One of :
+ * ADD = 0;
+ * MODIFY = 1;
+ * MODDN = 2;
+ * MODRDN = 3;
+ * DELETE = 4;
+ */
+ public int getChangeType()
+ {
+ return changeType;
+ }
+
+ /**
+ * @return The list of modification items
+ */
+ public List getModificationItems()
+ {
+ return modificationList;
+ }
+
+ /**
+ * @return The entry Distinguished name
+ */
+ public String getDn()
+ {
+ return dn;
+ }
+
+ /**
+ * @return The ldif file version
+ */
+ public int getVersion()
+ {
+ return this.version;
+ }
+
+ /**
+ * @return The number of entry modifications
+ */
+ public int size()
+ {
+ return modificationList.size();
+ }
+
+ /**
+ * Returns a attribute given it's id
+ *
+ * @param attributeId The attribute Id
+ * @return The attribute if it exists
+ */
+ public Attribute get( String attributeId )
+ {
+ if ( "dn".equalsIgnoreCase( attributeId ) )
+ {
+ return new BasicAttribute( "dn", dn );
+ }
+
+ return attributeList.get( attributeId );
+ }
+
+ /**
+ * @return True, if the old RDN should be deleted.
+ */
+ public boolean isDeleteOldRdn()
+ {
+ return deleteOldRdn;
+ }
+
+ /**
+ * Set the flage deleteOldRdn
+ * @param deleteOldRdn True if the old RDN should be deleted
+ */
+ public void setDeleteOldRdn( boolean deleteOldRdn )
+ {
+ this.deleteOldRdn = deleteOldRdn;
+ }
+
+ /**
+ * @return The new RDN
+ */
+ public String getNewRdn()
+ {
+ return newRdn;
+ }
+
+ /**
+ * Set the new RDN
+ * @param newRdn The new RDN
+ */
+ public void setNewRdn( String newRdn )
+ {
+ this.newRdn = newRdn;
+ }
+
+ /**
+ * @return The new superior
+ */
+ public String getNewSuperior()
+ {
+ return newSuperior;
+ }
+
+ /**
+ * Set the new superior
+ * @param newSuperior The new Superior
+ */
+ public void setNewSuperior( String newSuperior )
+ {
+ this.newSuperior = newSuperior;
+ }
+
+ /**
+ * @return True if the entry is an ADD entry
+ */
+ public boolean isChangeAdd()
+ {
+ return changeType == ADD;
+ }
+
+ /**
+ * @return True if the entry is a DELETE entry
+ */
+ public boolean isChangeDelete()
+ {
+ return changeType == DELETE;
+ }
+
+ /**
+ * @return True if the entry is a MODDN entry
+ */
+ public boolean isChangeModDn()
+ {
+ return changeType == MODDN;
+ }
+
+ /**
+ * @return True if the entry is a MODRDN entry
+ */
+ public boolean isChangeModRdn()
+ {
+ return changeType == MODRDN;
+ }
+
+ /**
+ * @return True if the entry is a MODIFY entry
+ */
+ public boolean isChangeModify()
+ {
+ return changeType == MODIFY;
+ }
+
+ /**
+ * @return The associated control, if any
+ */
+ public Control getControl()
+ {
+ return control;
+ }
+
+ /**
+ * Add a control to the entry
+ * @param control The control
+ */
+ public void setControl( Control control )
+ {
+ this.control = control;
+ }
+}