} else {
/* An existing object to be updated */
if (target.getFromIdols(element.getId()) == null) {
// Element is not in target yet, read it from the store and add to target
Artist original = artistDao.retrieve(element.getId());
Artist updated = artistDtoTranslator.fromDto(element,
original, translated);
target.addToIdols(updated);
} else {
// Element is in target already, use this object. No need to add to the collection
artistDtoTranslator.fromDto(element, target
.getFromIdols(element.getId()), translated);
}
}
}
/*
* Synchronize RelatedTo association.
*/
Set<Artist> relatedToToBeRemoved = new HashSet<Artist>();
/* Avoid changing the collection underneath an active iterator. */
for (Artist element : target.getRelatedTo()) {
if (source.getFromRelatedTo(element.getId()) == null) {
relatedToToBeRemoved.add(element);
}
}
/* Objects to be removed */
for (Artist element : relatedToToBeRemoved) {
target.removeFromRelatedTo(element);
}
for (DisLikesDto element : source.getRelatedTo()) {
if (element.getId() == null) {
/* A new object to be added */
target.addToRelatedTo(disLikesDtoTranslator.fromDto(element,
translated));
} else {
/* An existing object to be updated */
if (target.getFromRelatedTo(element.getId()) == null) {
// Element is not in target yet, read it from the store and add to target
Artist original = artistDao.retrieve(element.getId());
Artist updated = disLikesDtoTranslator.fromDto(element,
original, translated);
target.addToRelatedTo(updated);
} else {
// Element is in target already, use this object. No need to add to the collection
disLikesDtoTranslator.fromDto(element, target