Class LdifRevertor
- java.lang.Object
-
- 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
Fields Modifier and Type Field Description static booleanDELETE_OLD_RDNFlag used when we want to delete the old Rdnstatic booleanKEEP_OLD_RDNFlag used when we want to keep the old Rdn
-
Constructor Summary
Constructors Modifier Constructor Description privateLdifRevertor()Private constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static LdifEntrygenerateModify(Dn parentDn, Entry entry, Rdn oldRdn, Rdn newRdn)A helper method to generate the modified attribute after a rename.private static LdifEntrygenerateReverted(Dn newSuperior, Rdn newRdn, Dn newDn, Rdn oldRdn, boolean deleteOldRdn)A helper method which generates a reverted entry for a MODDN operationstatic LdifEntryreverseAdd(Dn dn)Compute a reverse LDIF of an AddRequest.static LdifEntryreverseDel(Dn dn, Entry deletedEntry)Compute a reverse LDIF of a DeleteRequest.static LdifEntryreverseModify(Dn dn, List<Modification> forwardModifications, Entry modifiedEntry)Compute the reversed LDIF for a modify request.static LdifEntryreverseMove(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.private static LdifEntryrevertEntry(Entry entry, Dn newDn, Dn newSuperior, Rdn oldRdn, Rdn newRdn)A small helper class to compute the simple revert.
-
-
-
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 DndeletedEntry- 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 :- add
- remove
- replace
- Parameters:
dn- the dn of the modified entryforwardModifications- the modification items for the forward changemodifiedEntry- 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
-
revertEntry
private static LdifEntry revertEntry(Entry entry, Dn newDn, Dn newSuperior, Rdn oldRdn, Rdn newRdn) throws LdapInvalidDnException
A small helper class to compute the simple revert.- Parameters:
entry- The entry to revertnewDn- The new DnnewSuperior- The new superior, if it has changed (null otherwise)oldRdn- The old RdnnewRdn- The new RDN if the RDN has changed- Returns:
- The reverted entry
- Throws:
LdapInvalidDnException- If the Dn is invalid
-
generateModify
private static LdifEntry generateModify(Dn parentDn, Entry entry, Rdn oldRdn, Rdn newRdn)
A helper method to generate the modified attribute after a rename.- Parameters:
parentDn- The parent Dnentry- The entry to revertoldRdn- The old RdnnewRdn- The new Rdn- Returns:
- The modified entry
-
generateReverted
private static LdifEntry generateReverted(Dn newSuperior, Rdn newRdn, Dn newDn, Rdn oldRdn, boolean deleteOldRdn) throws LdapInvalidDnException
A helper method which generates a reverted entry for a MODDN operation- Parameters:
newSuperior- The new superior, if it has changed (null otherwise)newRdn- The new RDN if the RDN has changednewDn- The new DnoldRdn- The old RdndeleteOldRdn- If the old Rdn attributes must be deleted or not- Returns:
- The reverted entry
- Throws:
LdapInvalidDnException- If the DN is invalid
-
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 EntrynewRdn- The new RdndeleteOldRdn- 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 EntrynewSuperior- The new superior Dn (can be null if it's just a rename)newRdn- The new RdndeleteOldRdn- A flag which tells to delete the old Rdn AVAs- Returns:
- A list of LDIF reverted entries
- Throws:
LdapInvalidDnException- If the name reverting failed
-
-