From 8f77d0726e9664a6988aa0964db25deb17cfba3a Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sun, 29 Jan 2023 13:02:46 +0100 Subject: [PATCH] Fixed problem with PersonNames when importing Persons --- .../org/librecms/assets/PersonImExporter.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) 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(