diff --git a/ccm-cms/src/main/java/org/librecms/assets/PersonImExporter.java b/ccm-cms/src/main/java/org/librecms/assets/PersonImExporter.java
index 9e8a93e72..3f574d4a9 100644
--- a/ccm-cms/src/main/java/org/librecms/assets/PersonImExporter.java
+++ b/ccm-cms/src/main/java/org/librecms/assets/PersonImExporter.java
@@ -20,6 +20,8 @@ package org.librecms.assets;
import java.util.Objects;
+import javax.inject.Inject;
+
/**
*
* @author Jens Pelzetter
@@ -27,6 +29,9 @@ import java.util.Objects;
public class PersonImExporter
extends AbstractContactableEntityImExporter {
+ @Inject
+ private PersonNameRepository personNameRepo;
+
@Override
public Class getEntityClass() {
return Person.class;
@@ -46,9 +51,47 @@ public class PersonImExporter
existingContactable.getPersonNames(),
importedContactable.getPersonNames()
)) {
- existingContactable.setPersonNames(
- importedContactable.getPersonNames()
- );
+// existingContactable.setPersonNames(
+// importedContactable.getPersonNames()
+// );
+ for (int i = 0;
+ i < existingContactable.getPersonNames().size()
+ && i < importedContactable.getPersonNames().size();
+ i++) {
+ final PersonName existing = existingContactable
+ .getPersonNames()
+ .get(i);
+ final PersonName imported = importedContactable
+ .getPersonNames()
+ .get(i);
+ if (!Objects.equals(existing, imported)) {
+ existing.setGivenName(imported.getGivenName());
+ existing.setPrefix(imported.getPrefix());
+ existing.setSuffix(imported.getSuffix());
+ existing.setSurname(imported.getSurname());
+
+ personNameRepo.save(existing);
+ }
+ }
+
+ if (importedContactable.getPersonNames().size()
+ > existingContactable.getPersonNames().size()) {
+ for (int i = existingContactable.getPersonNames().size();
+ i < importedContactable.getPersonNames().size();
+ i++) {
+ final PersonName imported = importedContactable
+ .getPersonNames()
+ .get(i);
+ final PersonName newPersonName = new PersonName();
+ newPersonName.setGivenName(imported.getGivenName());
+ newPersonName.setPrefix(imported.getPrefix());
+ newPersonName.setSuffix(imported.getSuffix());
+ newPersonName.setSurname(imported.getSurname());
+
+ existingContactable.addPersonName(newPersonName);
+ personNameRepo.save(imported);
+ }
+ }
}
if (!Objects.equals(