use of org.apache.directory.api.ldap.model.schema.syntaxCheckers.NameAndOptionalUIDSyntaxChecker in project directory-ldap-api by apache.
the class LdifAnonymizer method anonymizeEntry.
/**
* Anonymize the full entry
*/
private Entry anonymizeEntry(LdifEntry ldifEntry) throws LdapException {
Entry entry = ldifEntry.getEntry();
Entry newEntry = new DefaultEntry(schemaManager);
// Process the DN first
Dn entryDn = entry.getDn();
Dn anonymizedDn = anonymizeDn(entryDn);
// Now, process the entry's attributes
for (Attribute attribute : entry) {
AttributeType attributeType = attribute.getAttributeType();
// Deal with the special case of DN
if (attributeType.getSyntax().getSyntaxChecker() instanceof DnSyntaxChecker) {
for (Value dnValue : attribute) {
Dn dn = new Dn(schemaManager, dnValue.getValue());
Dn newdDn = anonymizeDn(dn);
newEntry.add(attributeType, newdDn.toString());
}
} else // Deal with the special case of a NameAndOptionalUID
if (attributeType.getSyntax().getSyntaxChecker() instanceof NameAndOptionalUIDSyntaxChecker) {
for (Value dnValue : attribute) {
// Get rid of the # part (UID)
String valueStr = dnValue.getValue();
int uidPos = valueStr.indexOf('#');
String uid = null;
if (uidPos != -1) {
uid = valueStr.substring(uidPos + 1);
valueStr = valueStr.substring(0, uidPos);
}
Dn dn = new Dn(schemaManager, valueStr);
Dn newDn = anonymizeDn(dn);
String newDnStr = newDn.toString();
if (uid != null) {
newDnStr = newDnStr + '#' + uid;
}
newEntry.add(attributeType, newDnStr);
}
} else {
Anonymizer anonymizer = attributeAnonymizers.get(attribute.getAttributeType().getOid());
if (anonymizer == null) {
newEntry.add(attribute);
} else {
Attribute anonymizedAttribute = anonymizer.anonymize(valueMap, valueSet, attribute);
if (anonymizedAttribute != null) {
newEntry.add(anonymizedAttribute);
}
}
}
}
newEntry.setDn(anonymizedDn);
return newEntry;
}
Aggregations