Import Categorizations after all other objects

deploy_packages_to_gitea
Jens Pelzetter 2022-10-24 18:41:21 +02:00
parent aef849ece8
commit 5e3f467904
2 changed files with 62 additions and 36 deletions

View File

@ -18,6 +18,7 @@
*/ */
package org.libreccm.imexport; package org.libreccm.imexport;
import org.libreccm.categorization.Categorization;
import org.libreccm.core.UnexpectedErrorException; import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.files.CcmFiles; import org.libreccm.files.CcmFiles;
import org.libreccm.files.CcmFilesConfiguration; import org.libreccm.files.CcmFilesConfiguration;
@ -230,10 +231,35 @@ public class ImportExport {
final List<EntityImExporterTreeNode> orderedNodes = treeManager final List<EntityImExporterTreeNode> orderedNodes = treeManager
.orderImExporters(tree); .orderImExporters(tree);
// Put the node for Categorizations to the end of the list
final EntityImExporterTreeNode categorizationsNode = orderedNodes
.stream()
.filter(
node -> node.getEntityImExporter().getEntityClass().equals(
Categorization.class
)
)
.findAny()
.orElseThrow(
() -> new UnexpectedErrorException(
String.format(
"There should be an ImExporter in the tree for "
+ "%s, but it is not.",
Categorization.class.getName()
)
)
);
orderedNodes.remove(categorizationsNode);
orderedNodes.add(categorizationsNode);
// Put the node for Permissions to the end of the list. // Put the node for Permissions to the end of the list.
final EntityImExporterTreeNode permissionsNode = orderedNodes final EntityImExporterTreeNode permissionsNode = orderedNodes
.stream() .stream()
.filter(node -> node.getEntityImExporter().getEntityClass().equals(Permission.class)) .filter(
node -> node.getEntityImExporter().getEntityClass().equals(
Permission.class
)
)
.findAny() .findAny()
.orElseThrow( .orElseThrow(
() -> new UnexpectedErrorException( () -> new UnexpectedErrorException(

View File

@ -56,42 +56,42 @@ public class RoleMembershipImExporter
@Override @Override
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
protected void saveImportedEntity(final RoleMembership entity) { protected void saveImportedEntity(final RoleMembership entity) {
final CriteriaBuilder criteriaBuilder = entityManager // final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder(); // .getCriteriaBuilder();
final CriteriaQuery<RoleMembership> criteriaQuery = criteriaBuilder // final CriteriaQuery<RoleMembership> criteriaQuery = criteriaBuilder
.createQuery(RoleMembership.class); // .createQuery(RoleMembership.class);
final Root<RoleMembership> from = criteriaQuery.from( // final Root<RoleMembership> from = criteriaQuery.from(
RoleMembership.class // RoleMembership.class
); // );
criteriaQuery.where( // criteriaQuery.where(
criteriaBuilder.equal( // criteriaBuilder.equal(
from.get("role"), // from.get("role"),
entity.getRole() // entity.getRole()
) // )
); // );
criteriaQuery.where( // criteriaQuery.where(
criteriaBuilder.equal( // criteriaBuilder.equal(
from.get("member"), // from.get("member"),
entity.getMember() // entity.getMember()
) // )
); // );
final TypedQuery<RoleMembership> query = entityManager.createQuery( // final TypedQuery<RoleMembership> query = entityManager.createQuery(
criteriaQuery // criteriaQuery
); // );
final List<RoleMembership> results = query.getResultList(); // final List<RoleMembership> results = query.getResultList();
if (results.isEmpty()) { // if (results.isEmpty()) {
final RoleMembership membership = new RoleMembership(); // final RoleMembership membership = new RoleMembership();
membership.setUuid(entity.getUuid()); // membership.setUuid(entity.getUuid());
membership.setMember(entity.getMember()); // membership.setMember(entity.getMember());
membership.setRole(entity.getRole()); // membership.setRole(entity.getRole());
entityManager.persist(membership); // entityManager.persist(membership);
}
// if (entity.getMembershipId() == 0) {
// entityManager.persist(entity);
// } else {
// entityManager.merge(entity);
// } // }
if (entity.getMembershipId() == 0) {
entityManager.persist(entity);
} else {
entityManager.merge(entity);
}
} }
@Override @Override