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(