From e150bd2509e6827651bb2c6b827587ddeba25d7c Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Thu, 16 Feb 2023 20:57:36 +0100 Subject: [PATCH] Several bugfixes --- ccm-cms/package-lock.json | 4 +-- ccm-cms/package.json | 2 +- .../assets/BinaryAssetRepository.java | 3 +- .../contentsection/AssetRepository.java | 3 +- .../AttachmentListRepository.java | 4 ++- .../contentsection/ContentItemRepository.java | 7 ++-- .../ContentSectionRepository.java | 13 ++++--- .../contentsection/FolderRepository.java | 18 +++++----- .../ItemAttachmentRepository.java | 4 ++- .../LifecycleDefinitionRepository.java | 20 +++++------ .../lifecycle/LifecycleRepository.java | 4 ++- .../PhaseDefinititionRepository.java | 6 ++-- .../librecms/lifecycle/PhaseRepository.java | 4 ++- .../org/librecms/pages/PageRepository.java | 4 +-- .../org/librecms/pages/PagesRepository.java | 5 +-- .../categorization/CategoryRepository.java | 4 ++- .../categorization/DomainRepository.java | 4 ++- .../libreccm/core/CcmObjectRepository.java | 4 ++- .../org/libreccm/core/ResourceRepository.java | 14 ++++---- .../libreccm/core/ResourceTypeImExporter.java | 30 ++++++++++++++-- .../libreccm/core/ResourceTypeRepository.java | 27 ++++++-------- .../libreccm/security/GroupRepository.java | 13 +++---- .../libreccm/security/PartyRepository.java | 9 ++--- .../security/PermissionRepository.java | 15 ++++---- .../org/libreccm/security/RoleRepository.java | 18 +++++----- .../org/libreccm/security/UserRepository.java | 15 ++++---- .../org/libreccm/sites/SiteRepository.java | 4 ++- .../libreccm/web/ApplicationIdResolver.java | 2 +- .../libreccm/web/ApplicationRepository.java | 13 ++++--- .../workflow/AssignableTaskImExporter.java | 17 ++++++++- .../workflow/AssignableTaskRepository.java | 13 ++++--- .../main/java/org/libreccm/workflow/Task.java | 9 +++-- .../org/libreccm/workflow/TaskIdResolver.java | 35 +++++++++++++++++-- .../org/libreccm/workflow/TaskRepository.java | 10 ++++-- .../libreccm/workflow/WorkflowRepository.java | 10 +++--- .../docrepo/AbstractResourceRepository.java | 4 ++- 36 files changed, 237 insertions(+), 134 deletions(-) diff --git a/ccm-cms/package-lock.json b/ccm-cms/package-lock.json index 9aa2a24bc..67d81871a 100644 --- a/ccm-cms/package-lock.json +++ b/ccm-cms/package-lock.json @@ -1,12 +1,12 @@ { "name": "@librecms/ccm-cms", - "version": "7.0.0-SNAPSHOT.2023-02-06T182349", + "version": "7.0.0-SNAPSHOT.2023-02-16T191702", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@librecms/ccm-cms", - "version": "7.0.0-SNAPSHOT.2023-02-06T182349", + "version": "7.0.0-SNAPSHOT.2023-02-16T191702", "license": "LGPL-3.0-or-later", "dependencies": { "@tiptap/core": "^2.0.0-beta.127", diff --git a/ccm-cms/package.json b/ccm-cms/package.json index d7067244b..196c0fe25 100644 --- a/ccm-cms/package.json +++ b/ccm-cms/package.json @@ -1,6 +1,6 @@ { "name": "@librecms/ccm-cms", - "version": "7.0.0-SNAPSHOT.2023-02-06T182349", + "version": "7.0.0-SNAPSHOT.2023-02-16T191702", "description": "JavaScript stuff for ccm-cms", "main": "target/generated-resources/assets/@content-sections/cms-admin.js", "types": "target/generated-resources/assets/@content-sections/cms-admin.d.ts", diff --git a/ccm-cms/src/main/java/org/librecms/assets/BinaryAssetRepository.java b/ccm-cms/src/main/java/org/librecms/assets/BinaryAssetRepository.java index 93483f8ef..0b98726e9 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/BinaryAssetRepository.java +++ b/ccm-cms/src/main/java/org/librecms/assets/BinaryAssetRepository.java @@ -143,8 +143,7 @@ public class BinaryAssetRepository public void initNewEntity(final BinaryAsset asset) { super.initNewEntity(asset); if (asset.getUuid() == null) { - final String uuid = UUID.randomUUID().toString(); - asset.setUuid(uuid); + asset.setUuid(UUID.randomUUID().toString()); } } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java index b6db2acfa..1fd1634e3 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java @@ -137,8 +137,7 @@ public class AssetRepository public void initNewEntity(final Asset asset) { super.initNewEntity(asset); if (asset.getUuid() == null) { - final String uuid = UUID.randomUUID().toString(); - asset.setUuid(uuid); + asset.setUuid(UUID.randomUUID().toString()); } } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/AttachmentListRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/AttachmentListRepository.java index 52a134251..76b485010 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AttachmentListRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AttachmentListRepository.java @@ -159,7 +159,9 @@ public class AttachmentListRepository @Override protected void initNewEntity(final AttachmentList entity) { super.initNewEntity(entity); - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java index e1642c20c..cbb2dce22 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java @@ -138,10 +138,11 @@ public class ContentItemRepository @Override public void initNewEntity(final ContentItem item) { - final String uuid = UUID.randomUUID().toString(); - item.setUuid(uuid); + if (item.getUuid() == null) { + item.setUuid(UUID.randomUUID().toString()); + } if (item.getItemUuid() == null || item.getItemUuid().isEmpty()) { - item.setItemUuid(uuid); + item.setItemUuid(item.getUuid()); } } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionRepository.java index 6d1be4f51..8c2c2f393 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionRepository.java @@ -95,16 +95,19 @@ public class ContentSectionRepository return section.getObjectId() == 0; } + @Override + protected void initNewEntity(final ContentSection section) { + if (section.getUuid() == null) { + section.setUuid(UUID.randomUUID().toString()); + } + section.setApplicationType(ContentSection.class.getName()); + } + @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) @Override public void save(final ContentSection section) { - if (isNew(section)) { - section.setUuid(UUID.randomUUID().toString()); - section.setApplicationType(ContentSection.class.getName()); - } - super.save(section); } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/FolderRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/FolderRepository.java index 4f1228ee7..942185e57 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/FolderRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/FolderRepository.java @@ -79,7 +79,9 @@ public class FolderRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Folder folder) { - folder.setUuid(UUID.randomUUID().toString()); + if (folder.getUuid() == null) { + folder.setUuid(UUID.randomUUID().toString()); + } } @Transactional(Transactional.TxType.REQUIRED) @@ -102,13 +104,13 @@ public class FolderRepository extends AbstractEntityRepository { @Transactional(Transactional.TxType.REQUIRED) public Optional findByUuid(final String uuid) { try { - return Optional.of( - getEntityManager() - .createNamedQuery("Folder.findByUuid", Folder.class) - .setParameter("uuid", uuid) - .getSingleResult() - ); - } catch(NoResultException ex) { + return Optional.of( + getEntityManager() + .createNamedQuery("Folder.findByUuid", Folder.class) + .setParameter("uuid", uuid) + .getSingleResult() + ); + } catch (NoResultException ex) { return Optional.empty(); } } diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentRepository.java index 4a352b16f..0b8218303 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentRepository.java @@ -57,7 +57,9 @@ public class ItemAttachmentRepository @Override protected void initNewEntity(final ItemAttachment entity) { - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } public Optional findByUuid(final String uuid) { diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java index 2408bf215..031e8863a 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java @@ -40,17 +40,17 @@ public class LifecycleDefinitionRepository try { return Optional.of( getEntityManager() - .createNamedQuery( - "LifecycleDefinition.findByUuid", - LifecycleDefinition.class) - .setParameter("uuid", uuid) - .getSingleResult() + .createNamedQuery( + "LifecycleDefinition.findByUuid", + LifecycleDefinition.class) + .setParameter("uuid", uuid) + .getSingleResult() ); - } catch(NoResultException ex) { + } catch (NoResultException ex) { return Optional.empty(); } } - + @Override public Class getEntityClass() { return LifecycleDefinition.class; @@ -74,9 +74,9 @@ public class LifecycleDefinitionRepository @Override protected void initNewEntity(final LifecycleDefinition entity) { super.initNewEntity(entity); - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } - - } diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleRepository.java b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleRepository.java index f6bd509ca..83b02ad90 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleRepository.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleRepository.java @@ -59,7 +59,9 @@ public class LifecycleRepository @Override protected void initNewEntity(final Lifecycle entity) { super.initNewEntity(entity); - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } public Optional findByUuid(final String uuid) { diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseDefinititionRepository.java b/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseDefinititionRepository.java index 312c11e98..80dd3aa4f 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseDefinititionRepository.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseDefinititionRepository.java @@ -55,11 +55,13 @@ public class PhaseDefinititionRepository public boolean isNew(final PhaseDefinition phaseDefinition) { return phaseDefinition.getDefinitionId() == 0; } - + @Override public void initNewEntity(final PhaseDefinition phaseDefinition) { super.initNewEntity(phaseDefinition); - phaseDefinition.setUuid(UUID.randomUUID().toString()); + if (phaseDefinition.getUuid() == null) { + phaseDefinition.setUuid(UUID.randomUUID().toString()); + } } public Optional findByUuid(final String uuid) { diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseRepository.java b/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseRepository.java index 12c24df7e..b3fb118d0 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseRepository.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/PhaseRepository.java @@ -58,7 +58,9 @@ public class PhaseRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Phase phase) { super.initNewEntity(phase); - phase.setUuid(UUID.randomUUID().toString()); + if (phase.getUuid() == null) { + phase.setUuid(UUID.randomUUID().toString()); + } } public Optional findByUuid(final String uuid) { diff --git a/ccm-cms/src/main/java/org/librecms/pages/PageRepository.java b/ccm-cms/src/main/java/org/librecms/pages/PageRepository.java index 83ded0217..ebb67151e 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/PageRepository.java +++ b/ccm-cms/src/main/java/org/librecms/pages/PageRepository.java @@ -64,10 +64,8 @@ public class PageRepository extends AbstractEntityRepository { @Override protected void initNewEntity(final Page entity) { - super.initNewEntity(entity); - - if (isNew(entity)) { + if (entity.getUuid() == null) { entity.setUuid(UUID.randomUUID().toString()); } } diff --git a/ccm-cms/src/main/java/org/librecms/pages/PagesRepository.java b/ccm-cms/src/main/java/org/librecms/pages/PagesRepository.java index 2215715c7..df812b571 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/PagesRepository.java +++ b/ccm-cms/src/main/java/org/librecms/pages/PagesRepository.java @@ -99,10 +99,11 @@ public class PagesRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Pages pages) { - super.initNewEntity(pages); - pages.setUuid(UUID.randomUUID().toString()); + if (pages.getUuid() == null) { + pages.setUuid(UUID.randomUUID().toString()); + } pages.setApplicationType(Pages.class.getName()); } diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java index 294e04144..3bc7fba9a 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java @@ -83,7 +83,9 @@ public class CategoryRepository extends AbstractEntityRepository @Override public void initNewEntity(final Category category) { - category.setUuid(UUID.randomUUID().toString()); + if (category.getUuid() == null) { + category.setUuid(UUID.randomUUID().toString()); + } } /** diff --git a/ccm-core/src/main/java/org/libreccm/categorization/DomainRepository.java b/ccm-core/src/main/java/org/libreccm/categorization/DomainRepository.java index caff64b7e..6f840d048 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/DomainRepository.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/DomainRepository.java @@ -68,7 +68,9 @@ public class DomainRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Domain domain) { - domain.setUuid(UUID.randomUUID().toString()); + if (domain.getUuid() == null) { + domain.setUuid(UUID.randomUUID().toString()); + } } @Override diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java index a4bc3ecdf..ce6274c9f 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java @@ -78,7 +78,9 @@ public class CcmObjectRepository extends AbstractEntityRepository { +public class ResourceRepository extends AbstractEntityRepository { private static final long serialVersionUID = 4593206445936878071L; @@ -44,12 +43,12 @@ public class ResourceRepository extends AbstractEntityRepository getEntityClass() { return Resource.class; } - + @Override public String getIdAttributeName() { return "objectId"; } - + @Override public Long getIdOfEntity(final Resource entity) { return entity.getObjectId(); @@ -62,7 +61,9 @@ public class ResourceRepository extends AbstractEntityRepository findByUuid(final String uuid) { final TypedQuery query = getEntityManager() - .createNamedQuery("Resource.findByUuid", Resource.class); + .createNamedQuery("Resource.findByUuid", Resource.class); query.setParameter("uuid", uuid); try { @@ -83,4 +84,5 @@ public class ResourceRepository extends AbstractEntityRepository { + private static final Logger LOGGER = LogManager.getLogger( + ResourceTypeImExporter.class + ); + @Inject private ResourceTypeRepository repository; @@ -56,7 +65,22 @@ public class ResourceTypeImExporter @Override protected void saveImportedEntity(final ResourceType entity) { + final List types = repository + .findAll() + .stream() + .sorted( + Comparator.comparing(ResourceType::getResourceTypeId) + ) + .collect(Collectors.toList()); + final long lastId; + if (types.isEmpty()) { + lastId = 0; + } else { + lastId = types.get(types.size() - 1).getResourceTypeId(); + } + entity.setResourceTypeId(lastId + 1); repository.save(entity); + LOGGER.debug("Saved {}", entity.toString()); } @Override @@ -94,18 +118,18 @@ public class ResourceTypeImExporter importedEntity.isViewableAsFullPage() ); } - + if (existingEntity.isViewableAsEmbedded() != importedEntity .isViewableAsEmbedded()) { existingEntity.setViewableAsEmbedded( importedEntity.isViewableAsEmbedded() ); } - + if (existingEntity.isSingleton() != importedEntity.isSingleton()) { existingEntity.setSingleton(importedEntity.isSingleton()); } - + repository.save(importedEntity); } diff --git a/ccm-core/src/main/java/org/libreccm/core/ResourceTypeRepository.java b/ccm-core/src/main/java/org/libreccm/core/ResourceTypeRepository.java index 038cb2018..2c88e6e68 100644 --- a/ccm-core/src/main/java/org/libreccm/core/ResourceTypeRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/ResourceTypeRepository.java @@ -33,7 +33,7 @@ import java.util.UUID; * application using the {@link ResourceType}. * * @author Tobias Osmers - * + * */ @RequestScoped public class ResourceTypeRepository @@ -50,7 +50,7 @@ public class ResourceTypeRepository public String getIdAttributeName() { return "resourceTypeId"; } - + @Override public Long getIdOfEntity(final ResourceType entity) { return entity.getResourceTypeId(); @@ -58,31 +58,26 @@ public class ResourceTypeRepository @Override public boolean isNew(final ResourceType entity) { - return entity.getTitle() == null; + return entity.getResourceTypeId() == 0; +// return entity.getTitle() == null; } - + @Override public void initNewEntity(final ResourceType entity) { - - if (entity.getResourceTypeId() == 0) { - - if (entity.getUuid() == null) { - entity.setUuid(UUID.randomUUID().toString()); - } - + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); } - } public Optional findByUuid(final String uuid) { - + final TypedQuery query = getEntityManager() - .createNamedQuery("ResourceType.findByUuid", ResourceType.class); + .createNamedQuery("ResourceType.findByUuid", ResourceType.class); query.setParameter("uuid", uuid); - + return getSingleResult(query); } - + /** * Finds a {@link ResourceType} by its title. * diff --git a/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java b/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java index 46b641649..bd81e496e 100644 --- a/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java @@ -62,11 +62,11 @@ public class GroupRepository extends AbstractEntityRepository { return entity.getPartyId() == 0; } - + public Optional findByUuid(final String uuid) { - + final TypedQuery query = getEntityManager() - .createNamedQuery("Group.findByUuid", Group.class); + .createNamedQuery("Group.findByUuid", Group.class); query.setParameter("uuid", uuid); final List result = query.getResultList(); if (result.isEmpty()) { @@ -134,11 +134,12 @@ public class GroupRepository extends AbstractEntityRepository { public void save(final Group group) { super.save(group); } - + @Override public void initNewEntity(final Group group) { - - group.setUuid(UUID.randomUUID().toString()); + if (group.getUuid() == null) { + group.setUuid(UUID.randomUUID().toString()); + } } @AuthorizationRequired diff --git a/ccm-core/src/main/java/org/libreccm/security/PartyRepository.java b/ccm-core/src/main/java/org/libreccm/security/PartyRepository.java index a6c2d2a84..0580b6cf2 100644 --- a/ccm-core/src/main/java/org/libreccm/security/PartyRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/PartyRepository.java @@ -64,10 +64,11 @@ public class PartyRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Party party) { - party.setUuid(UUID.randomUUID().toString()); + if (party.getUuid() == null) { + party.setUuid(UUID.randomUUID().toString()); + } } - - + public Optional findByUuid(final String uuid) { final TypedQuery query = getEntityManager().createNamedQuery( "Party.findByUuid", Party.class); @@ -80,7 +81,7 @@ public class PartyRepository extends AbstractEntityRepository { return Optional.of(result.get(0)); } } - + /** * Finds a {@link Party} (which can be a user or group) by its name. * diff --git a/ccm-core/src/main/java/org/libreccm/security/PermissionRepository.java b/ccm-core/src/main/java/org/libreccm/security/PermissionRepository.java index b0623e56c..25a702304 100644 --- a/ccm-core/src/main/java/org/libreccm/security/PermissionRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/PermissionRepository.java @@ -63,19 +63,20 @@ public class PermissionRepository } @Override - public void initNewEntity(final Permission permission) { - - permission.setUuid(UUID.randomUUID().toString()); + public void initNewEntity(final Permission permission) { + if (permission.getUuid() == null) { + permission.setUuid(UUID.randomUUID().toString()); + } } - + public Optional findByUuid(final String uuid) { final TypedQuery query = getEntityManager() - .createNamedQuery("Permission.findByUuid", Permission.class); + .createNamedQuery("Permission.findByUuid", Permission.class); query.setParameter("uuid", uuid); - + return getSingleResult(query); } - + /** * Finds a {@link Permission} by the privilege, the grantee and the object. * Where the grantee has been granted the given privilege on the given diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java b/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java index b694dabb0..820d5c37d 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java @@ -55,7 +55,7 @@ public class RoleRepository extends AbstractEntityRepository { public Long getIdOfEntity(final Role entity) { return entity.getRoleId(); } - + @Override public boolean isNew(final Role entity) { if (entity == null) { @@ -63,12 +63,12 @@ public class RoleRepository extends AbstractEntityRepository { } return entity.getRoleId() == 0; } - + @Override public void initNewEntity(final Role role) { - - role.setUuid(UUID.randomUUID().toString()); - + if (role.getUuid() == null) { + role.setUuid(UUID.randomUUID().toString()); + } } public long count() { @@ -76,13 +76,13 @@ public class RoleRepository extends AbstractEntityRepository { "Role.count", Long.class); return query.getSingleResult(); } - + public Optional findByUuid(final String uuid) { - + final TypedQuery query = getEntityManager() - .createNamedQuery("Role.findByUuid", Role.class); + .createNamedQuery("Role.findByUuid", Role.class); query.setParameter("uuid", uuid); - + return getSingleResult(query); } diff --git a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java index 44ee36cdb..00f20f015 100644 --- a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java @@ -49,7 +49,7 @@ public class UserRepository extends AbstractEntityRepository { public String getIdAttributeName() { return "partyId"; } - + @Override public Long getIdOfEntity(final User entity) { return entity.getPartyId(); @@ -70,7 +70,7 @@ public class UserRepository extends AbstractEntityRepository { return getSingleResult(query); } - + /** * Finds a user by its user name. * @@ -103,7 +103,7 @@ public class UserRepository extends AbstractEntityRepository { final String entityGraphName) { @SuppressWarnings("unchecked") final EntityGraph entityGraph - = (EntityGraph) getEntityManager() + = (EntityGraph) getEntityManager() .getEntityGraph(entityGraphName); return findByName(name, entityGraph); } @@ -149,7 +149,7 @@ public class UserRepository extends AbstractEntityRepository { final String entityGraphName) { @SuppressWarnings("unchecked") final EntityGraph entityGraph - = (EntityGraph) getEntityManager() + = (EntityGraph) getEntityManager() .getEntityGraph(entityGraphName); return findByEmailAddress(emailAddress, entityGraph); } @@ -206,12 +206,11 @@ public class UserRepository extends AbstractEntityRepository { @Override protected void initNewEntity(final User entity) { - - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } - - @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) diff --git a/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java b/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java index fb646c3e5..2e0bbe727 100644 --- a/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java +++ b/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java @@ -162,7 +162,9 @@ public class SiteRepository extends AbstractEntityRepository { @Override public void initNewEntity(final Site site) { - site.setUuid(UUID.randomUUID().toString()); + if (site.getUuid() == null) { + site.setUuid(UUID.randomUUID().toString()); + } } } diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationIdResolver.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationIdResolver.java index 0099d0b4b..8de4431eb 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationIdResolver.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationIdResolver.java @@ -53,7 +53,7 @@ public class ApplicationIdResolver implements Serializable, ObjectIdResolver { .orElseThrow( () -> new IllegalArgumentException( String.format( - "No ccmApplications with UUID %s in the database.", + "No CcmApplication with UUID %s in the database.", id.key.toString() ) ) diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java index 84d03e67f..993793723 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java @@ -34,7 +34,7 @@ import java.util.UUID; /** * Repository for applications. - * + * * @author Jens Pelzetter */ @RequestScoped @@ -52,7 +52,7 @@ public class ApplicationRepository public String getIdAttributeName() { return "objectId"; } - + @Override public Long getIdOfEntity(final CcmApplication entity) { return entity.getObjectId(); @@ -65,10 +65,13 @@ public class ApplicationRepository @Override public void initNewEntity(final CcmApplication application) { - super.initNewEntity(application); - application.setUuid(UUID.randomUUID().toString()); - application.setApplicationType(application.getClass().getName()); + if (application.getUuid() == null) { + application.setUuid(UUID.randomUUID().toString()); + } + if (application.getApplicationType() == null) { + application.setApplicationType(application.getClass().getName()); + } } /** diff --git a/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskImExporter.java b/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskImExporter.java index 9f9a617b6..17ef7f129 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskImExporter.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskImExporter.java @@ -18,6 +18,8 @@ */ package org.libreccm.workflow; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.libreccm.imexport.AbstractEntityImExporter; import org.libreccm.imexport.Processes; @@ -28,6 +30,7 @@ import java.util.Set; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.persistence.EntityManager; /** * Exporter/Importer for {@link AssignableTask}s. @@ -40,10 +43,17 @@ import javax.inject.Inject; @Processes(AssignableTask.class) public class AssignableTaskImExporter extends AbstractEntityImExporter { + + private static final Logger LOGGER = LogManager.getLogger( + AssignableTaskImExporter.class + ); @Inject private AssignableTaskRepository assignableTaskRepository; + @Inject + private EntityManager entityManager; + @Inject private TaskManager taskManager; @@ -74,6 +84,11 @@ public class AssignableTaskImExporter @Override protected void saveImportedEntity(final AssignableTask entity) { assignableTaskRepository.save(entity); + LOGGER.warn( + "Saved imported assignable task with UUID {} and ID {}.", + entity.getUuid(), + entity.getTaskId() + ); } @Override @@ -140,7 +155,7 @@ public class AssignableTaskImExporter importedEntity.getDurationMinutes() ); } - + if (!Objects.equals( existingEntity.getNotificationSender(), importedEntity.getNotificationSender() diff --git a/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskRepository.java b/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskRepository.java index d73843d83..1837509b6 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskRepository.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/AssignableTaskRepository.java @@ -32,6 +32,8 @@ import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; +import javax.transaction.Transactional; + /** * Repository for assignable tasks. * @@ -52,7 +54,7 @@ public class AssignableTaskRepository public String getIdAttributeName() { return "taskId"; } - + @Override public Long getIdOfEntity(final AssignableTask entity) { return entity.getTaskId(); @@ -62,10 +64,10 @@ public class AssignableTaskRepository public boolean isNew(final AssignableTask task) { return task.getTaskId() == 0; } - + @Override protected void initNewEntity(final AssignableTask entity) { - if (isNew(entity)) { + if (entity.getUuid() == null) { entity.setUuid(UUID.randomUUID().toString()); } } @@ -77,6 +79,7 @@ public class AssignableTaskRepository * * @return An optional either with the found item or empty */ + @Transactional(Transactional.TxType.REQUIRED) public Optional findByUuid(final String uuid) { final TypedQuery query = getEntityManager() .createNamedQuery( @@ -90,6 +93,7 @@ public class AssignableTaskRepository } } + @Transactional(Transactional.TxType.REQUIRED) public List findEnabledTasksForWorkflow( final User user, final Workflow workflow) { final TypedQuery query = getEntityManager() @@ -102,6 +106,7 @@ public class AssignableTaskRepository return query.getResultList(); } + @Transactional(Transactional.TxType.REQUIRED) public List getAssignedTasks(final User user, final Workflow workflow) { final TypedQuery query = getEntityManager() @@ -119,6 +124,4 @@ public class AssignableTaskRepository return query.getResultList(); } - - } diff --git a/ccm-core/src/main/java/org/libreccm/workflow/Task.java b/ccm-core/src/main/java/org/libreccm/workflow/Task.java index 6e1f778ff..c92751950 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/Task.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/Task.java @@ -36,6 +36,8 @@ import java.util.Objects; import static org.libreccm.core.CoreConstants.DB_SCHEMA; +import org.libreccm.imexport.Exportable; + import javax.persistence.AssociationOverride; import javax.persistence.Column; import javax.persistence.Embedded; @@ -119,10 +121,11 @@ import javax.xml.bind.annotation.XmlElementWrapper; @JsonIdentityInfo( generator = ObjectIdGenerators.PropertyGenerator.class, resolver = TaskIdResolver.class, - property = "uuid", - scope = Task.class + property = "uuid" +// , +// scope = Task.class ) -public class Task implements Identifiable, Serializable { +public class Task implements Exportable, Identifiable, Serializable { private static final long serialVersionUID = 8161343036908150426L; diff --git a/ccm-core/src/main/java/org/libreccm/workflow/TaskIdResolver.java b/ccm-core/src/main/java/org/libreccm/workflow/TaskIdResolver.java index a1a3fda1b..c80ab2438 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/TaskIdResolver.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/TaskIdResolver.java @@ -20,10 +20,12 @@ package org.libreccm.workflow; import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdResolver; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.libreccm.cdi.utils.CdiUtil; -import javax.enterprise.context.RequestScoped; import java.io.Serializable; +import java.util.Optional; /** * Used to resolve {@link Task}s based on the UUIDs for export or import. @@ -31,11 +33,13 @@ import java.io.Serializable; * @author Tobias Osmers * @author Jens Pelzetter */ -@RequestScoped public class TaskIdResolver implements Serializable, ObjectIdResolver { - private static final long serialVersionUID = 1L; + private static final Logger LOGGER = LogManager.getLogger( + TaskIdResolver.class); + private static final long serialVersionUID = 1L; + @Override public void bindItem( final ObjectIdGenerator.IdKey id, @@ -48,6 +52,31 @@ public class TaskIdResolver implements Serializable, ObjectIdResolver { @Override public Object resolveId(final ObjectIdGenerator.IdKey id) { +// final Optional result = CdiUtil +// .createCdiUtil() +// .findBean(TaskRepository.class) +// .findByUuid(id.key.toString()); +// +// if (result.isPresent()) { +// return result.get(); +// } +// +// return Optional.ofNullable( +// CdiUtil +// .createCdiUtil() +// .findBean(AssignableTaskImExporter.class) +// .getImportedTask(id.key.toString()) +// ) +// .orElseThrow( +// () -> new IllegalArgumentException( +// String.format( +// "No task with UUID %s found.", +// id.key.toString() +// ) +// ) +// ); +// + return CdiUtil .createCdiUtil() .findBean(TaskRepository.class) diff --git a/ccm-core/src/main/java/org/libreccm/workflow/TaskRepository.java b/ccm-core/src/main/java/org/libreccm/workflow/TaskRepository.java index b7d986154..3eec37471 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/TaskRepository.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/TaskRepository.java @@ -46,7 +46,7 @@ public class TaskRepository extends AbstractEntityRepository { public String getIdAttributeName() { return "taskId"; } - + @Override public Long getIdOfEntity(final Task entity) { return entity.getTaskId(); @@ -60,7 +60,9 @@ public class TaskRepository extends AbstractEntityRepository { @Override protected void initNewEntity(final Task task) { super.initNewEntity(task); - task.setUuid(UUID.randomUUID().toString()); + if (task.getUuid() == null) { + task.setUuid(UUID.randomUUID().toString()); + } } /** @@ -73,7 +75,9 @@ public class TaskRepository extends AbstractEntityRepository { @Transactional(Transactional.TxType.REQUIRED) public Optional findByUuid(final String uuid) { final TypedQuery query = getEntityManager().createNamedQuery( - "Task.findByUuid", Task.class); + "Task.findByUuid", + Task.class + ); query.setParameter("uuid", uuid); try { diff --git a/ccm-core/src/main/java/org/libreccm/workflow/WorkflowRepository.java b/ccm-core/src/main/java/org/libreccm/workflow/WorkflowRepository.java index de9d454de..46072ac9b 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/WorkflowRepository.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/WorkflowRepository.java @@ -39,7 +39,7 @@ import javax.transaction.Transactional; public class WorkflowRepository extends AbstractEntityRepository { private static final long serialVersionUID = -8811728904958517569L; - + @Override public Class getEntityClass() { return Workflow.class; @@ -54,7 +54,7 @@ public class WorkflowRepository extends AbstractEntityRepository public Long getIdOfEntity(final Workflow entity) { return entity.getWorkflowId(); } - + @Override public boolean isNew(final Workflow workflow) { return workflow.getWorkflowId() == 0; @@ -63,10 +63,10 @@ public class WorkflowRepository extends AbstractEntityRepository @Override protected void initNewEntity(final Workflow workflow) { super.initNewEntity(workflow); - workflow.setUuid(UUID.randomUUID().toString()); + if (workflow.getUuid() == null) { + workflow.setUuid(UUID.randomUUID().toString()); + } } - - /** * Find a {@link Workflow} by its UUID. diff --git a/ccm-docrepo/src/main/java/org/libreccm/docrepo/AbstractResourceRepository.java b/ccm-docrepo/src/main/java/org/libreccm/docrepo/AbstractResourceRepository.java index 42d6308c0..9ea5dc6cc 100644 --- a/ccm-docrepo/src/main/java/org/libreccm/docrepo/AbstractResourceRepository.java +++ b/ccm-docrepo/src/main/java/org/libreccm/docrepo/AbstractResourceRepository.java @@ -203,6 +203,8 @@ public abstract class AbstractResourceRepository //Todo @Override public void initNewEntity(final T entity) { - entity.setUuid(UUID.randomUUID().toString()); + if (entity.getUuid() == null) { + entity.setUuid(UUID.randomUUID().toString()); + } } }