import com.novell.ldap.*;
import java.util.Date;
import java.util.ArrayList;
import java.io.UnsupportedEncodingException;
public class DeleteAttribute
{
public static void main( String[] args ) {
if (args.length != 4) {
System.err.println("Usage: java DeleteAttribute <host name> "
+ "<login dn> <password> <modify dn>");
System.err.println("Example: java DeleteAttribute Acme.com "
+ "\"cn=Admin,o=Acme\" secret\n"
+ " \"cn=JSmith,ou=Sales,o=Acme\"");
System.exit(1);
}
int ldapPort = LDAPConnection.DEFAULT_PORT;
int ldapVersion = LDAPConnection.LDAP_V3;
Date currentDate = new Date();
String ldapHost = args[0];
String loginDN = args[1];
String password = args[2];
String dn = args[3];
LDAPConnection lc = new LDAPConnection();
ArrayList modList = new ArrayList();
LDAPAttribute attribute = new LDAPAttribute( "description",
"This object was modified at " + new Date( currentDate.getTime()));
modList.add( new LDAPModification(LDAPModification.ADD, attribute));
attribute = new LDAPAttribute( "telephoneNumber", "1 801 555 1212");
modList.add( new LDAPModification(LDAPModification.ADD, attribute));
attribute = new LDAPAttribute( "telephoneNumber", "1 801 555 2121");
modList.add( new LDAPModification(LDAPModification.ADD, attribute));
LDAPModification[] modsadd = new LDAPModification[modList.size()];
modsadd = (LDAPModification[])modList.toArray(modsadd);
modList.clear();
attribute = new LDAPAttribute( "description");
modList.add( new LDAPModification(LDAPModification.DELETE,attribute));
attribute = new LDAPAttribute( "telephoneNumber");
modList.add( new LDAPModification(LDAPModification.DELETE,attribute));
LDAPModification[] modsdel = new LDAPModification[modList.size()];
modsdel = (LDAPModification[])modList.toArray(modsdel);
modList.clear();
attribute = new LDAPAttribute( "description");
modList.add( new LDAPModification(LDAPModification.REPLACE,attribute));
attribute = new LDAPAttribute( "telephoneNumber");
modList.add( new LDAPModification(LDAPModification.REPLACE,attribute));
LDAPModification[] modsrep = new LDAPModification[modList.size()];
modsrep = (LDAPModification[])modList.toArray(modsrep);
try {
lc.connect( ldapHost, ldapPort);
lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") );
try {
lc.modify( dn, modsadd);
System.out.println(
"Successfully added the attributes to the entry." );
} catch( LDAPException ex ) {
if(ex.getResultCode()!=LDAPException.ATTRIBUTE_OR_VALUE_EXISTS){
System.out.println("failed to add attribute: " +
ex.toString());
}
}
lc.modify( dn, modsdel);
System.out.println(
"Successfully deleted the attributes " +
"using the delete modification type." );
try {
lc.modify( dn, modsadd);
System.out.println(
"Successfully added the attributes to the entry." );
} catch( LDAPException ex ) {
if(ex.getResultCode()!=LDAPException.ATTRIBUTE_OR_VALUE_EXISTS){
System.out.println("failed to add attribute: " +
ex.toString());
}
}
lc.modify( dn, modsrep);
System.out.println(
"Successfully deleted the attributes " +
"using the replace modification type." );
lc.disconnect();
}
catch( LDAPException e ) {
if ( e.getResultCode() == LDAPException.NO_SUCH_OBJECT )
System.err.println( "Error: No such entry" );
else if ( e.getResultCode() ==
LDAPException.INSUFFICIENT_ACCESS_RIGHTS )
System.err.println( "Error: Insufficient rights" );
else if ( e.getResultCode() ==
LDAPException.ATTRIBUTE_OR_VALUE_EXISTS )
System.err.println( "Error: Attribute or value exists" );
else {
System.err.println( "Error: " + e.toString() );
}
System.exit(1);
}
catch( UnsupportedEncodingException e ) {
System.out.println( "Error: " + e.toString() );
}
System.exit(0);
}
}