diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java index c3585eb..50c5d05 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java @@ -27,9 +27,10 @@ public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao } @Override + @Transactional public void save(Person obj) { - checkSubEntities(obj); super.save(obj); + checkSubEntities(obj); } public void checkSubEntities(Person obj) { diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java index 0f314dc..af6bdf9 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java @@ -2,6 +2,7 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.data; import java.io.Serializable; import java.time.LocalDate; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -168,6 +169,9 @@ public class Person extends BaseEntity implements Serializable { public void add(Contact contact) { contact.setPerson(this); + if (contacts == null) { + contacts = new ArrayList<>(); + } contacts.add(contact); } diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/ContactGrid.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/ContactGrid.java index f257d5e..bd5c61d 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/ContactGrid.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/ContactGrid.java @@ -1,6 +1,8 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.stream.Collectors; import com.google.i18n.phonenumbers.NumberParseException; @@ -57,7 +59,14 @@ public class ContactGrid extends AbstractDataGrid { @Override protected Collection readValues(Person person) { - return person.getContacts().stream().filter(e -> e.getDeleted() == null).collect(Collectors.toList()); + if (person == null) { + return Collections.emptyList(); + } + List contacts = person.getContacts(); + if (contacts == null) { + return Collections.emptyList(); + } + return contacts.stream().filter(e -> e.getDeleted() == null).collect(Collectors.toList()); } @Override diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java index 17926e6..8613fb3 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java @@ -191,6 +191,7 @@ public class PersonEditDetails extends HorizontalLayout { adressLayout.setPerson(person); if (person != null) { + binder.validate(); okButton.setEnabled(true); } else { okButton.setEnabled(false);