diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java index 8f67d80b2..059832fcd 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java @@ -73,19 +73,6 @@ public class CategoryIdResolver implements Serializable, ObjectIdResolver { .save(category); return category; } -// -// return CdiUtil -// .createCdiUtil() -// .findBean(CategoryRepository.class) -// .findByUuid(id.key.toString()) -// .orElseThrow( -// () -> new IllegalArgumentException( -// String.format( -// "No Category with UUID %s in the database.", -// id.key.toString() -// ) -// ) -// ); } @Override diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleMembershipImExporter.java b/ccm-core/src/main/java/org/libreccm/security/RoleMembershipImExporter.java index bb3758451..69a1d5ce4 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleMembershipImExporter.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleMembershipImExporter.java @@ -23,12 +23,17 @@ import org.libreccm.imexport.Exportable; import org.libreccm.imexport.Processes; import java.util.HashSet; +import java.util.List; import java.util.Objects; import java.util.Set; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.NoResultException; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import javax.transaction.Transactional; /** @@ -51,7 +56,42 @@ public class RoleMembershipImExporter @Override @Transactional(Transactional.TxType.REQUIRED) protected void saveImportedEntity(final RoleMembership entity) { - entityManager.persist(entity); + final CriteriaBuilder criteriaBuilder = entityManager + .getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = criteriaBuilder + .createQuery(RoleMembership.class); + final Root from = criteriaQuery.from( + RoleMembership.class + ); + criteriaQuery.where( + criteriaBuilder.equal( + from.get("role"), + entity.getRole() + ) + ); + criteriaQuery.where( + criteriaBuilder.equal( + from.get("member"), + entity.getMember() + ) + ); + final TypedQuery query = entityManager.createQuery( + criteriaQuery + ); + final List results = query.getResultList(); + if (results.isEmpty()) { + final RoleMembership membership = new RoleMembership(); + membership.setUuid(entity.getUuid()); + membership.setMember(entity.getMember()); + membership.setRole(entity.getRole()); + entityManager.persist(membership); + } + +// if (entity.getMembershipId() == 0) { +// entityManager.persist(entity); +// } else { +// entityManager.merge(entity); +// } } @Override