Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/02/2011, 11:50
stack
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

/**
* Creado 22/09/2009
* Este método permite modificar un usuario del ldap.
* @param uid, es el identificador del usuario cuyos atributos serán modificados.
* @param atributos, HashMap que contiene los atributos que serán modificados.
* @return estatus, indica el estatus de la operación de modificación en el ldap. 1 éxito, 2 fracaso
*/
public int modificarUsuario(String uid,HashMap atributos) {

int estatus = 0;
InitialDirContext iniDirContext=null;

//Se calcula el entrydn del usuario
HashMap hashEntrydn = new HashMap();
hashEntrydn.put("entrydn","");
hashEntrydn = consultarUsuario(uid,hashEntrydn);
String entrydn = (String)hashEntrydn.get("entrydn");

try {
Vector vectorMods = new Vector();

String key;
Object value;
ArrayList lista;
for (Iterator i = atributos.keySet().iterator(); i.hasNext();) {
key = (String) i.next();
if (!key.equals("jpegPhoto")){
value = atributos.get(key);

if (value instanceof ArrayList) {
lista = (ArrayList)value;
vectorMods.add(new ModificationItem(DirContext.REMOVE_ATTRIBUTE,new BasicAttribute(key)));
for (int z=0;z<lista.size();z=z+1)
{
vectorMods.add(new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute(key, lista.get(z))));
}
}
else
{
vectorMods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(key, value)));
}

}else{
byte[] foto = (byte[])atributos.get(key);
vectorMods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(key, foto)));
}

}
ctx = ContextFactory.getDirContext();
iniDirContext = (InitialDirContext) ctx;

ModificationItem[] mods = new ModificationItem[vectorMods.size()];
for (int d=0;d<vectorMods.size();d=d+1)
{
mods[d]=(ModificationItem)vectorMods.get(d);
System.out.println("vectorMods["+d+"]="+vectorMods.get(d));
}

iniDirContext.modifyAttributes(entrydn, mods);
estatus = 1;
} catch (NamingException e) {
System.out
.println("La modificación no se ha llevado a cabo con éxito. "
+ e.getMessage());
estatus = 2;
}finally{

try{
if (iniDirContext!=null){
iniDirContext.close();
}
}catch(NamingException e){
System.err.println("Error al cerrar el iniDirContext" + e.getMessage());
}
}

return estatus;
}