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;
import org.libreccm.categorization.Categorization;
import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.files.CcmFiles;
import org.libreccm.files.CcmFilesConfiguration;
@ -230,10 +231,35 @@ public class ImportExport {
final List<EntityImExporterTreeNode> orderedNodes = treeManager
.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.
final EntityImExporterTreeNode permissionsNode = orderedNodes
.stream()
.filter(node -> node.getEntityImExporter().getEntityClass().equals(Permission.class))
.filter(
node -> node.getEntityImExporter().getEntityClass().equals(
Permission.class
)
)
.findAny()
.orElseThrow(
() -> new UnexpectedErrorException(

View File

@ -56,42 +56,42 @@ public class RoleMembershipImExporter
@Override
@Transactional(Transactional.TxType.REQUIRED)
protected void saveImportedEntity(final RoleMembership entity) {
final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder();
final CriteriaQuery<RoleMembership> criteriaQuery = criteriaBuilder
.createQuery(RoleMembership.class);
final Root<RoleMembership> 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<RoleMembership> query = entityManager.createQuery(
criteriaQuery
);
final List<RoleMembership> 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);
// final CriteriaBuilder criteriaBuilder = entityManager
// .getCriteriaBuilder();
// final CriteriaQuery<RoleMembership> criteriaQuery = criteriaBuilder
// .createQuery(RoleMembership.class);
// final Root<RoleMembership> 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<RoleMembership> query = entityManager.createQuery(
// criteriaQuery
// );
// final List<RoleMembership> 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