15/02/2011, 11:50
|
| | Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 18 años 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;
} |