1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package com.c2kernel.lookup;
import com.c2kernel.common.ObjectCannotBeUpdated;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.property.Property;
import com.c2kernel.utils.Logger;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPDN;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
public class LegacyLDAPPropertyManager extends LDAPPropertyManager {
public LegacyLDAPPropertyManager(LDAPLookup ldap) {
super(ldap);
}
public void deleteProperty(EntityPath thisEntity, String name) throws ObjectNotFoundException, ObjectCannotBeUpdated {
try {
LDAPLookupUtils.delete(ldap.getConnection(), "cn="+name+","+thisEntity.getFullDN());
} catch (LDAPException ex) {
Logger.error("Error deleting prop "+name+" from "+thisEntity.getSysKey());
Logger.error(ex);
}
}
public String[] getPropertyNames(EntityPath thisEntity) throws ObjectNotFoundException {
String props[]= LDAPLookupUtils.getChildrenDNs(ldap.getConnection(), thisEntity.getFullDN(), "objectclass=cristalproperty");
String names[] = new String[props.length];
for (int i=0; i<props.length;i++)
names[i] = new String(LDAPDN.explodeDN(props[i],true)[0]);
return names;
}
public String getPropertyValue(EntityPath thisEntity, String name) throws ObjectNotFoundException {
LDAPEntry anEntry = LDAPLookupUtils.getEntry(ldap.getConnection(),"cn="+name+","+thisEntity.getFullDN());
if (anEntry==null)
throw new ObjectNotFoundException("LDAPLookup: Property "+name+" not found in "+thisEntity.getSysKey(), "");
return LDAPLookupUtils.getFirstAttributeValue(anEntry,"propval");
}
public boolean hasProperties(EntityPath thisEntity) throws ObjectNotFoundException {
return LDAPLookupUtils.hasChildren(ldap.getConnection(), thisEntity.getFullDN(), "objectclass=cristalproperty" );
}
public void setProperty(EntityPath thisEntity, Property prop) throws ObjectNotFoundException, ObjectCannotBeUpdated {
try {
LDAPEntry anEntry = LDAPLookupUtils.getEntry(ldap.getConnection(),"cn="+prop.getName()+","+thisEntity.getFullDN());
String currentVal = LDAPLookupUtils.getFirstAttributeValue(anEntry,"propval");
if (currentVal == null || !currentVal.equals(prop.getValue()) )
//change the propvalue if the prop.getValue() is not the same value in LDAP
LDAPLookupUtils.setAttributeValue(ldap.getConnection(), anEntry,"propval",prop.getValue());
} catch (ObjectNotFoundException ex) {
LDAPAttributeSet attrSet = new LDAPAttributeSet();
attrSet.add(new LDAPAttribute("objectclass","cristalproperty"));
attrSet.add(new LDAPAttribute("cn",prop.getName()));
if (prop.getValue()!=null && prop.getValue().length()!=0)
attrSet.add(new LDAPAttribute("propval",prop.getValue()));
LDAPEntry newEntry = new LDAPEntry("cn="+prop.getName()+","+thisEntity.getFullDN(),attrSet);
try {
LDAPLookupUtils.addEntry(ldap.getConnection(),newEntry);
} catch (Exception e) {
Logger.error(e);
throw new ObjectCannotBeUpdated(e.getMessage(), "");
}
}
}
}
|