AttributeHierarchy ah = entry.getAttributeWithSubtypes( ras[r] );
if ( ah != null )
{
for ( Iterator<IAttribute> it = ah.iterator(); it.hasNext(); )
{
IAttribute attribute = it.next();
entry.deleteAttribute( attribute );
}
}
}
}
else
{
// clear all
IAttribute[] oldAttributes = entry.getAttributes();
for ( int i = 0; oldAttributes != null && i < oldAttributes.length; i++ )
{
entry.deleteAttribute( oldAttributes[i] );
}
}
// additional clear old attributes if the record contains the attribute
NamingEnumeration<? extends Attribute> attributeEnumeration = sr.getAttributes().getAll();
while ( attributeEnumeration.hasMore() )
{
Attribute attribute = attributeEnumeration.next();
String attributeDescription = attribute.getID();
IAttribute oldAttribute = entry.getAttribute( attributeDescription );
if ( oldAttribute != null )
{
entry.deleteAttribute( oldAttribute );
}
}
// set new attributes and values
attributeEnumeration = sr.getAttributes().getAll();
while ( attributeEnumeration.hasMore() )
{
Attribute attribute = attributeEnumeration.next();
String attributeDescription = attribute.getID();
if ( attribute.getAll().hasMore() )
{
IAttribute studioAttribute = null;
if ( entry.getAttribute( attributeDescription ) == null )
{
studioAttribute = new org.apache.directory.studio.ldapbrowser.core.model.impl.Attribute( entry,
attributeDescription );
entry.addAttribute( studioAttribute );
}
else
{
studioAttribute = entry.getAttribute( attributeDescription );
}
NamingEnumeration<?> valueEnumeration = attribute.getAll();
while ( valueEnumeration.hasMore() )
{
Object value = valueEnumeration.next();
studioAttribute.addValue( new Value( studioAttribute, value ) );
}
}
}
}
}