org.apache.directory.api.ldap.model.ldif
Class LdifRevertor

java.lang.Object
  extended by org.apache.directory.api.ldap.model.ldif.LdifRevertor

public final class LdifRevertor
extends Object

A helper class which provides methods to reverse a LDIF modification operation.

Author:
Apache Directory Project

Field Summary
static boolean DELETE_OLD_RDN
          Flag used when we want to delete the old Rdn
static boolean KEEP_OLD_RDN
          Flag used when we want to keep the old Rdn
 
Method Summary
static LdifEntry reverseAdd(Dn dn)
          Compute a reverse LDIF of an AddRequest.
static LdifEntry reverseDel(Dn dn, Entry deletedEntry)
          Compute a reverse LDIF of a DeleteRequest.
static LdifEntry reverseModify(Dn dn, List<Modification> forwardModifications, Entry modifiedEntry)
          Compute the reversed LDIF for a modify request.
static LdifEntry reverseMove(Dn newSuperiorDn, Dn modifiedDn)
          Compute a reverse LDIF for a forward change which if in LDIF format would represent a Move operation.
static List<LdifEntry> reverseMoveAndRename(Entry entry, Dn newSuperior, Rdn newRdn, boolean deleteOldRdn)
          Revert a Dn to it's previous version by removing the first Rdn and adding the given Rdn.
static List<LdifEntry> reverseRename(Entry entry, Rdn newRdn, boolean deleteOldRdn)
          Revert a Dn to it's previous version by removing the first Rdn and adding the given Rdn.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DELETE_OLD_RDN

public static final boolean DELETE_OLD_RDN
Flag used when we want to delete the old Rdn

See Also:
Constant Field Values

KEEP_OLD_RDN

public static final boolean KEEP_OLD_RDN
Flag used when we want to keep the old Rdn

See Also:
Constant Field Values
Method Detail

reverseAdd

public static LdifEntry reverseAdd(Dn dn)
Compute a reverse LDIF of an AddRequest. It's simply a delete request of the added entry

Parameters:
dn - the dn of the added entry
Returns:
a reverse LDIF

reverseDel

public static LdifEntry reverseDel(Dn dn,
                                   Entry deletedEntry)
                            throws LdapException
Compute a reverse LDIF of a DeleteRequest. We have to get the previous entry in order to restore it.

Parameters:
dn - The deleted entry Dn
deletedEntry - The entry which has been deleted
Returns:
A reverse LDIF
Throws:
LdapException - If something went wrong

reverseModify

public static LdifEntry reverseModify(Dn dn,
                                      List<Modification> forwardModifications,
                                      Entry modifiedEntry)
                               throws LdapException
Compute the reversed LDIF for a modify request. We will deal with the three kind of modifications : As the modifications should be issued in a reversed order ( ie, for the initials modifications {A, B, C}, the reversed modifications will be ordered like {C, B, A}), we will change the modifications order.

Parameters:
dn - the dn of the modified entry
forwardModifications - the modification items for the forward change
modifiedEntry - The modified entry. Necessary for the destructive modifications
Returns:
A reversed LDIF
Throws:
LdapException - If something went wrong

reverseMove

public static LdifEntry reverseMove(Dn newSuperiorDn,
                                    Dn modifiedDn)
                             throws LdapException
Compute a reverse LDIF for a forward change which if in LDIF format would represent a Move operation. Hence there is no newRdn in the picture here.

Parameters:
newSuperiorDn - the new parent dn to be (must not be null)
modifiedDn - the dn of the entry being moved (must not be null)
Returns:
a reverse LDIF
Throws:
LdapException - if something went wrong

reverseRename

public static List<LdifEntry> reverseRename(Entry entry,
                                            Rdn newRdn,
                                            boolean deleteOldRdn)
                                     throws LdapInvalidDnException
Revert a Dn to it's previous version by removing the first Rdn and adding the given Rdn. It's a rename operation. The biggest issue is that we have many corner cases, depending on the RDNs we are manipulating, and on the content of the initial entry.

Parameters:
entry - The initial Entry
newRdn - The new Rdn
deleteOldRdn - A flag which tells to delete the old Rdn AVAs
Returns:
A list of LDIF reverted entries
Throws:
LdapInvalidDnException - If the name reverting failed

reverseMoveAndRename

public static List<LdifEntry> reverseMoveAndRename(Entry entry,
                                                   Dn newSuperior,
                                                   Rdn newRdn,
                                                   boolean deleteOldRdn)
                                            throws LdapInvalidDnException
Revert a Dn to it's previous version by removing the first Rdn and adding the given Rdn. It's a rename operation. The biggest issue is that we have many corner cases, depending on the RDNs we are manipulating, and on the content of the initial entry.

Parameters:
entry - The initial Entry
newSuperior - The new superior Dn (can be null if it's just a rename)
newRdn - The new Rdn
deleteOldRdn - A flag which tells to delete the old Rdn AVAs
Returns:
A list of LDIF reverted entries
Throws:
LdapInvalidDnException - If the name reverting failed


Copyright © 2003-2013 The Apache Software Foundation. All Rights Reserved.