package com.hwlcn.ldap.ldif; import java.util.Arrays; import java.util.List; import com.hwlcn.ldap.asn1.ASN1OctetString; import com.hwlcn.ldap.ldap.sdk.ChangeType; import com.hwlcn.ldap.ldap.sdk.DeleteRequest; import com.hwlcn.ldap.ldap.sdk.LDAPException; import com.hwlcn.ldap.ldap.sdk.LDAPInterface; import com.hwlcn.ldap.ldap.sdk.LDAPResult; import com.hwlcn.ldap.util.ByteStringBuffer; import com.hwlcn.core.annotation.NotMutable; import com.hwlcn.core.annotation.ThreadSafety; import com.hwlcn.ldap.util.ThreadSafetyLevel; import static com.hwlcn.ldap.util.Debug.*; import static com.hwlcn.ldap.util.StaticUtils.*; @NotMutable() @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) public final class LDIFDeleteChangeRecord extends LDIFChangeRecord { private static final long serialVersionUID = 486284031156138191L; public LDIFDeleteChangeRecord(final String dn) { super(dn); } public LDIFDeleteChangeRecord(final DeleteRequest deleteRequest) { super(deleteRequest.getDN()); } public DeleteRequest toDeleteRequest() { return new DeleteRequest(getDN()); } @Override() public ChangeType getChangeType() { return ChangeType.DELETE; } @Override() public LDAPResult processChange(final LDAPInterface connection) throws LDAPException { return connection.delete(toDeleteRequest()); } @Override() public String[] toLDIF(final int wrapColumn) { if (wrapColumn > 0) { List<String> ldifLines = Arrays.asList( LDIFWriter.encodeNameAndValue("dn", new ASN1OctetString(getDN())), "changetype: delete"); ldifLines = LDIFWriter.wrapLines(wrapColumn, ldifLines); final String[] lineArray = new String[ldifLines.size()]; return ldifLines.toArray(lineArray); } else { return new String[] { LDIFWriter.encodeNameAndValue("dn", new ASN1OctetString(getDN())), "changetype: delete" }; } } @Override() public void toLDIF(final ByteStringBuffer buffer, final int wrapColumn) { LDIFWriter.encodeNameAndValue("dn", new ASN1OctetString(getDN()), buffer, wrapColumn); buffer.append(EOL_BYTES); LDIFWriter.encodeNameAndValue("changetype", new ASN1OctetString("delete"), buffer, wrapColumn); buffer.append(EOL_BYTES); } @Override() public void toLDIFString(final StringBuilder buffer, final int wrapColumn) { LDIFWriter.encodeNameAndValue("dn", new ASN1OctetString(getDN()), buffer, wrapColumn); buffer.append(EOL); LDIFWriter.encodeNameAndValue("changetype", new ASN1OctetString("delete"), buffer, wrapColumn); buffer.append(EOL); } @Override() public int hashCode() { try { return getParsedDN().hashCode(); } catch (Exception e) { debugException(e); return toLowerCase(getDN()).hashCode(); } } @Override() public boolean equals(final Object o) { if (o == null) { return false; } if (o == this) { return true; } if (! (o instanceof LDIFDeleteChangeRecord)) { return false; } final LDIFDeleteChangeRecord r = (LDIFDeleteChangeRecord) o; try { return getParsedDN().equals(r.getParsedDN()); } catch (Exception e) { debugException(e); return toLowerCase(getDN()).equals(toLowerCase(r.getDN())); } } @Override() public void toString(final StringBuilder buffer) { buffer.append("LDIFDeleteChangeRecord(dn='"); buffer.append(getDN()); buffer.append("')"); } }