From 1eab15f8f3a62365469ecfb5f58c6e6953be0167 Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Thu, 17 Feb 2022 17:34:22 -0800 Subject: [PATCH] Fix constrain issue. --- .../com/wisemapping/dao/UserManagerImpl.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java index 6aaacb12..109ae75e 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java @@ -27,9 +27,11 @@ import com.wisemapping.security.LegacyPasswordEncoder; import org.hibernate.ObjectNotFoundException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import org.springframework.security.crypto.password.PasswordEncoder; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -103,9 +105,10 @@ public class UserManagerImpl @Override public User createUser(@NotNull User user, @NotNull Collaborator collaborator) { - this.createUser(user); + assert user != null : "Trying to store a null user"; // Migrate from previous temporal collab to new user ... + List newCollabs = new ArrayList<>(); final Set collaborations = collaborator.getCollaborations(); for (Collaboration oldCollab : collaborations) { Collaboration newCollab = new Collaboration(); @@ -113,16 +116,18 @@ public class UserManagerImpl newCollab.setMindMap(oldCollab.getMindMap()); newCollab.setCollaborator(user); user.addCollaboration(newCollab); - getHibernateTemplate().save(newCollab); - - // Delete collaborations on this collaborator ... - getHibernateTemplate().delete(oldCollab); + newCollabs.add(newCollab); } - // Delete collaboration ... - getHibernateTemplate().delete(collaborator); - getHibernateTemplate().flush(); - getHibernateTemplate().saveOrUpdate(user); + // Delete old collaboration + final HibernateTemplate template = getHibernateTemplate(); + collaborations.forEach(c -> template.delete(c)); + template.delete(collaborator); + + // Save all new... + user.setPassword(passwordEncoder.encode(user.getPassword())); + template.save(user); + newCollabs.forEach(c -> template.save(c)); return user; }