for (AbstractMappingItem item : attrUtil.getMappingItems(
syncTask.getResource(), MappingPurpose.SYNCHRONIZATION)) {
Attribute attribute = obj.getAttributeByName(item.getExtAttrName());
AttributeTO attributeTO;
switch (item.getIntMappingType()) {
case UserId:
case RoleId:
break;
case Password:
if (attributableTO instanceof UserTO && attribute != null && attribute.getValue() != null
&& !attribute.getValue().isEmpty()) {
((UserTO) attributableTO).setPassword(getPassword(attribute.getValue().get(0)));
}
break;
case Username:
if (attributableTO instanceof UserTO) {
((UserTO) attributableTO).setUsername(attribute == null || attribute.getValue().isEmpty()
|| attribute.getValue().get(0) == null
? null
: attribute.getValue().get(0).toString());
}
break;
case RoleName:
if (attributableTO instanceof RoleTO) {
((RoleTO) attributableTO).setName(attribute == null || attribute.getValue().isEmpty()
|| attribute.getValue().get(0) == null
? null
: attribute.getValue().get(0).toString());
}
break;
case RoleOwnerSchema:
if (attributableTO instanceof RoleTO && attribute != null) {
// using a special attribute (with schema "", that will be ignored) for carrying the
// RoleOwnerSchema value
attributeTO = new AttributeTO();
attributeTO.setSchema(StringUtils.EMPTY);
if (attribute.getValue().isEmpty() || attribute.getValue().get(0) == null) {
attributeTO.addValue(StringUtils.EMPTY);
} else {
attributeTO.addValue(attribute.getValue().get(0).toString());
}
((RoleTO) attributableTO).addAttribute(attributeTO);
}
break;
case UserSchema:
case RoleSchema:
attributeTO = new AttributeTO();
attributeTO.setSchema(item.getIntAttrName());
for (Object value : attribute == null || attribute.getValue() == null
? Collections.emptyList()
: attribute.getValue()) {
if (value != null) {
attributeTO.addValue(value.toString());
}
}
attributableTO.addAttribute(attributeTO);
break;
case UserDerivedSchema:
case RoleDerivedSchema:
attributeTO = new AttributeTO();
attributeTO.setSchema(item.getIntAttrName());
attributableTO.addDerivedAttribute(attributeTO);
break;
case UserVirtualSchema:
case RoleVirtualSchema:
attributeTO = new AttributeTO();
attributeTO.setSchema(item.getIntAttrName());
for (Object value : attribute == null || attribute.getValue() == null
? Collections.emptyList()
: attribute.getValue()) {
if (value != null) {
attributeTO.addValue(value.toString());
}
}
attributableTO.addVirtualAttribute(attributeTO);
break;