Several bugfixes

deploy_packages_to_gitea
Jens Pelzetter 2023-02-16 20:57:36 +01:00
parent 9f6937352c
commit e150bd2509
36 changed files with 237 additions and 134 deletions

View File

@ -1,12 +1,12 @@
{ {
"name": "@librecms/ccm-cms", "name": "@librecms/ccm-cms",
"version": "7.0.0-SNAPSHOT.2023-02-06T182349", "version": "7.0.0-SNAPSHOT.2023-02-16T191702",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@librecms/ccm-cms", "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", "license": "LGPL-3.0-or-later",
"dependencies": { "dependencies": {
"@tiptap/core": "^2.0.0-beta.127", "@tiptap/core": "^2.0.0-beta.127",

View File

@ -1,6 +1,6 @@
{ {
"name": "@librecms/ccm-cms", "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", "description": "JavaScript stuff for ccm-cms",
"main": "target/generated-resources/assets/@content-sections/cms-admin.js", "main": "target/generated-resources/assets/@content-sections/cms-admin.js",
"types": "target/generated-resources/assets/@content-sections/cms-admin.d.ts", "types": "target/generated-resources/assets/@content-sections/cms-admin.d.ts",

View File

@ -143,8 +143,7 @@ public class BinaryAssetRepository
public void initNewEntity(final BinaryAsset asset) { public void initNewEntity(final BinaryAsset asset) {
super.initNewEntity(asset); super.initNewEntity(asset);
if (asset.getUuid() == null) { if (asset.getUuid() == null) {
final String uuid = UUID.randomUUID().toString(); asset.setUuid(UUID.randomUUID().toString());
asset.setUuid(uuid);
} }
} }

View File

@ -137,8 +137,7 @@ public class AssetRepository
public void initNewEntity(final Asset asset) { public void initNewEntity(final Asset asset) {
super.initNewEntity(asset); super.initNewEntity(asset);
if (asset.getUuid() == null) { if (asset.getUuid() == null) {
final String uuid = UUID.randomUUID().toString(); asset.setUuid(UUID.randomUUID().toString());
asset.setUuid(uuid);
} }
} }

View File

@ -159,7 +159,9 @@ public class AttachmentListRepository
@Override @Override
protected void initNewEntity(final AttachmentList entity) { protected void initNewEntity(final AttachmentList entity) {
super.initNewEntity(entity); super.initNewEntity(entity);
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
} }

View File

@ -138,10 +138,11 @@ public class ContentItemRepository
@Override @Override
public void initNewEntity(final ContentItem item) { public void initNewEntity(final ContentItem item) {
final String uuid = UUID.randomUUID().toString(); if (item.getUuid() == null) {
item.setUuid(uuid); item.setUuid(UUID.randomUUID().toString());
}
if (item.getItemUuid() == null || item.getItemUuid().isEmpty()) { if (item.getItemUuid() == null || item.getItemUuid().isEmpty()) {
item.setItemUuid(uuid); item.setItemUuid(item.getUuid());
} }
} }

View File

@ -95,16 +95,19 @@ public class ContentSectionRepository
return section.getObjectId() == 0; 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 @AuthorizationRequired
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
@Override @Override
public void save(final ContentSection section) { public void save(final ContentSection section) {
if (isNew(section)) {
section.setUuid(UUID.randomUUID().toString());
section.setApplicationType(ContentSection.class.getName());
}
super.save(section); super.save(section);
} }

View File

@ -79,7 +79,9 @@ public class FolderRepository extends AbstractEntityRepository<Long, Folder> {
@Override @Override
public void initNewEntity(final Folder folder) { public void initNewEntity(final Folder folder) {
folder.setUuid(UUID.randomUUID().toString()); if (folder.getUuid() == null) {
folder.setUuid(UUID.randomUUID().toString());
}
} }
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
@ -102,13 +104,13 @@ public class FolderRepository extends AbstractEntityRepository<Long, Folder> {
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public Optional<Folder> findByUuid(final String uuid) { public Optional<Folder> findByUuid(final String uuid) {
try { try {
return Optional.of( return Optional.of(
getEntityManager() getEntityManager()
.createNamedQuery("Folder.findByUuid", Folder.class) .createNamedQuery("Folder.findByUuid", Folder.class)
.setParameter("uuid", uuid) .setParameter("uuid", uuid)
.getSingleResult() .getSingleResult()
); );
} catch(NoResultException ex) { } catch (NoResultException ex) {
return Optional.empty(); return Optional.empty();
} }
} }

View File

@ -57,7 +57,9 @@ public class ItemAttachmentRepository
@Override @Override
protected void initNewEntity(final ItemAttachment entity) { protected void initNewEntity(final ItemAttachment entity) {
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<ItemAttachment> findByUuid(final String uuid) { public Optional<ItemAttachment> findByUuid(final String uuid) {

View File

@ -40,17 +40,17 @@ public class LifecycleDefinitionRepository
try { try {
return Optional.of( return Optional.of(
getEntityManager() getEntityManager()
.createNamedQuery( .createNamedQuery(
"LifecycleDefinition.findByUuid", "LifecycleDefinition.findByUuid",
LifecycleDefinition.class) LifecycleDefinition.class)
.setParameter("uuid", uuid) .setParameter("uuid", uuid)
.getSingleResult() .getSingleResult()
); );
} catch(NoResultException ex) { } catch (NoResultException ex) {
return Optional.empty(); return Optional.empty();
} }
} }
@Override @Override
public Class<LifecycleDefinition> getEntityClass() { public Class<LifecycleDefinition> getEntityClass() {
return LifecycleDefinition.class; return LifecycleDefinition.class;
@ -74,9 +74,9 @@ public class LifecycleDefinitionRepository
@Override @Override
protected void initNewEntity(final LifecycleDefinition entity) { protected void initNewEntity(final LifecycleDefinition entity) {
super.initNewEntity(entity); super.initNewEntity(entity);
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
} }

View File

@ -59,7 +59,9 @@ public class LifecycleRepository
@Override @Override
protected void initNewEntity(final Lifecycle entity) { protected void initNewEntity(final Lifecycle entity) {
super.initNewEntity(entity); super.initNewEntity(entity);
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<Lifecycle> findByUuid(final String uuid) { public Optional<Lifecycle> findByUuid(final String uuid) {

View File

@ -55,11 +55,13 @@ public class PhaseDefinititionRepository
public boolean isNew(final PhaseDefinition phaseDefinition) { public boolean isNew(final PhaseDefinition phaseDefinition) {
return phaseDefinition.getDefinitionId() == 0; return phaseDefinition.getDefinitionId() == 0;
} }
@Override @Override
public void initNewEntity(final PhaseDefinition phaseDefinition) { public void initNewEntity(final PhaseDefinition phaseDefinition) {
super.initNewEntity(phaseDefinition); super.initNewEntity(phaseDefinition);
phaseDefinition.setUuid(UUID.randomUUID().toString()); if (phaseDefinition.getUuid() == null) {
phaseDefinition.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<PhaseDefinition> findByUuid(final String uuid) { public Optional<PhaseDefinition> findByUuid(final String uuid) {

View File

@ -58,7 +58,9 @@ public class PhaseRepository extends AbstractEntityRepository<Long, Phase> {
@Override @Override
public void initNewEntity(final Phase phase) { public void initNewEntity(final Phase phase) {
super.initNewEntity(phase); super.initNewEntity(phase);
phase.setUuid(UUID.randomUUID().toString()); if (phase.getUuid() == null) {
phase.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<Phase> findByUuid(final String uuid) { public Optional<Phase> findByUuid(final String uuid) {

View File

@ -64,10 +64,8 @@ public class PageRepository extends AbstractEntityRepository<Long, Page> {
@Override @Override
protected void initNewEntity(final Page entity) { protected void initNewEntity(final Page entity) {
super.initNewEntity(entity); super.initNewEntity(entity);
if (entity.getUuid() == null) {
if (isNew(entity)) {
entity.setUuid(UUID.randomUUID().toString()); entity.setUuid(UUID.randomUUID().toString());
} }
} }

View File

@ -99,10 +99,11 @@ public class PagesRepository extends AbstractEntityRepository<Long, Pages> {
@Override @Override
public void initNewEntity(final Pages pages) { public void initNewEntity(final Pages pages) {
super.initNewEntity(pages); super.initNewEntity(pages);
pages.setUuid(UUID.randomUUID().toString()); if (pages.getUuid() == null) {
pages.setUuid(UUID.randomUUID().toString());
}
pages.setApplicationType(Pages.class.getName()); pages.setApplicationType(Pages.class.getName());
} }

View File

@ -83,7 +83,9 @@ public class CategoryRepository extends AbstractEntityRepository<Long, Category>
@Override @Override
public void initNewEntity(final Category category) { public void initNewEntity(final Category category) {
category.setUuid(UUID.randomUUID().toString()); if (category.getUuid() == null) {
category.setUuid(UUID.randomUUID().toString());
}
} }
/** /**

View File

@ -68,7 +68,9 @@ public class DomainRepository extends AbstractEntityRepository<Long, Domain> {
@Override @Override
public void initNewEntity(final Domain domain) { public void initNewEntity(final Domain domain) {
domain.setUuid(UUID.randomUUID().toString()); if (domain.getUuid() == null) {
domain.setUuid(UUID.randomUUID().toString());
}
} }
@Override @Override

View File

@ -78,7 +78,9 @@ public class CcmObjectRepository extends AbstractEntityRepository<Long, CcmObjec
@Override @Override
public void initNewEntity(final CcmObject entity) { public void initNewEntity(final CcmObject entity) {
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
/** /**

View File

@ -35,8 +35,7 @@ import java.util.UUID;
* @version created the 8/10/17 * @version created the 8/10/17
*/ */
@RequestScoped @RequestScoped
public class ResourceRepository extends AbstractEntityRepository<Long, public class ResourceRepository extends AbstractEntityRepository<Long, Resource> {
Resource> {
private static final long serialVersionUID = 4593206445936878071L; private static final long serialVersionUID = 4593206445936878071L;
@ -44,12 +43,12 @@ public class ResourceRepository extends AbstractEntityRepository<Long,
public Class<Resource> getEntityClass() { public Class<Resource> getEntityClass() {
return Resource.class; return Resource.class;
} }
@Override @Override
public String getIdAttributeName() { public String getIdAttributeName() {
return "objectId"; return "objectId";
} }
@Override @Override
public Long getIdOfEntity(final Resource entity) { public Long getIdOfEntity(final Resource entity) {
return entity.getObjectId(); return entity.getObjectId();
@ -62,7 +61,9 @@ public class ResourceRepository extends AbstractEntityRepository<Long,
@Override @Override
public void initNewEntity(final Resource resource) { public void initNewEntity(final Resource resource) {
resource.setUuid(UUID.randomUUID().toString()); if (resource.getUuid() == null) {
resource.setUuid(UUID.randomUUID().toString());
}
} }
/** /**
@ -74,7 +75,7 @@ public class ResourceRepository extends AbstractEntityRepository<Long,
*/ */
public Optional<Resource> findByUuid(final String uuid) { public Optional<Resource> findByUuid(final String uuid) {
final TypedQuery<Resource> query = getEntityManager() final TypedQuery<Resource> query = getEntityManager()
.createNamedQuery("Resource.findByUuid", Resource.class); .createNamedQuery("Resource.findByUuid", Resource.class);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
try { try {
@ -83,4 +84,5 @@ public class ResourceRepository extends AbstractEntityRepository<Long,
return Optional.empty(); return Optional.empty();
} }
} }
} }

View File

@ -18,11 +18,16 @@
*/ */
package org.libreccm.core; package org.libreccm.core;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.imexport.AbstractEntityImExporter; import org.libreccm.imexport.AbstractEntityImExporter;
import org.libreccm.imexport.Processes; import org.libreccm.imexport.Processes;
import java.util.Comparator;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.inject.Inject; import javax.inject.Inject;
@ -35,6 +40,10 @@ import javax.inject.Inject;
public class ResourceTypeImExporter public class ResourceTypeImExporter
extends AbstractEntityImExporter<ResourceType> { extends AbstractEntityImExporter<ResourceType> {
private static final Logger LOGGER = LogManager.getLogger(
ResourceTypeImExporter.class
);
@Inject @Inject
private ResourceTypeRepository repository; private ResourceTypeRepository repository;
@ -56,7 +65,22 @@ public class ResourceTypeImExporter
@Override @Override
protected void saveImportedEntity(final ResourceType entity) { protected void saveImportedEntity(final ResourceType entity) {
final List<ResourceType> 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); repository.save(entity);
LOGGER.debug("Saved {}", entity.toString());
} }
@Override @Override
@ -94,18 +118,18 @@ public class ResourceTypeImExporter
importedEntity.isViewableAsFullPage() importedEntity.isViewableAsFullPage()
); );
} }
if (existingEntity.isViewableAsEmbedded() != importedEntity if (existingEntity.isViewableAsEmbedded() != importedEntity
.isViewableAsEmbedded()) { .isViewableAsEmbedded()) {
existingEntity.setViewableAsEmbedded( existingEntity.setViewableAsEmbedded(
importedEntity.isViewableAsEmbedded() importedEntity.isViewableAsEmbedded()
); );
} }
if (existingEntity.isSingleton() != importedEntity.isSingleton()) { if (existingEntity.isSingleton() != importedEntity.isSingleton()) {
existingEntity.setSingleton(importedEntity.isSingleton()); existingEntity.setSingleton(importedEntity.isSingleton());
} }
repository.save(importedEntity); repository.save(importedEntity);
} }

View File

@ -33,7 +33,7 @@ import java.util.UUID;
* application using the {@link ResourceType}. * application using the {@link ResourceType}.
* *
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a> * @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
* *
*/ */
@RequestScoped @RequestScoped
public class ResourceTypeRepository public class ResourceTypeRepository
@ -50,7 +50,7 @@ public class ResourceTypeRepository
public String getIdAttributeName() { public String getIdAttributeName() {
return "resourceTypeId"; return "resourceTypeId";
} }
@Override @Override
public Long getIdOfEntity(final ResourceType entity) { public Long getIdOfEntity(final ResourceType entity) {
return entity.getResourceTypeId(); return entity.getResourceTypeId();
@ -58,31 +58,26 @@ public class ResourceTypeRepository
@Override @Override
public boolean isNew(final ResourceType entity) { public boolean isNew(final ResourceType entity) {
return entity.getTitle() == null; return entity.getResourceTypeId() == 0;
// return entity.getTitle() == null;
} }
@Override @Override
public void initNewEntity(final ResourceType entity) { public void initNewEntity(final ResourceType entity) {
if (entity.getUuid() == null) {
if (entity.getResourceTypeId() == 0) { entity.setUuid(UUID.randomUUID().toString());
if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
} }
public Optional<ResourceType> findByUuid(final String uuid) { public Optional<ResourceType> findByUuid(final String uuid) {
final TypedQuery<ResourceType> query = getEntityManager() final TypedQuery<ResourceType> query = getEntityManager()
.createNamedQuery("ResourceType.findByUuid", ResourceType.class); .createNamedQuery("ResourceType.findByUuid", ResourceType.class);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
return getSingleResult(query); return getSingleResult(query);
} }
/** /**
* Finds a {@link ResourceType} by its title. * Finds a {@link ResourceType} by its title.
* *

View File

@ -62,11 +62,11 @@ public class GroupRepository extends AbstractEntityRepository<Long, Group> {
return entity.getPartyId() == 0; return entity.getPartyId() == 0;
} }
public Optional<Group> findByUuid(final String uuid) { public Optional<Group> findByUuid(final String uuid) {
final TypedQuery<Group> query = getEntityManager() final TypedQuery<Group> query = getEntityManager()
.createNamedQuery("Group.findByUuid", Group.class); .createNamedQuery("Group.findByUuid", Group.class);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
final List<Group> result = query.getResultList(); final List<Group> result = query.getResultList();
if (result.isEmpty()) { if (result.isEmpty()) {
@ -134,11 +134,12 @@ public class GroupRepository extends AbstractEntityRepository<Long, Group> {
public void save(final Group group) { public void save(final Group group) {
super.save(group); super.save(group);
} }
@Override @Override
public void initNewEntity(final Group group) { public void initNewEntity(final Group group) {
if (group.getUuid() == null) {
group.setUuid(UUID.randomUUID().toString()); group.setUuid(UUID.randomUUID().toString());
}
} }
@AuthorizationRequired @AuthorizationRequired

View File

@ -64,10 +64,11 @@ public class PartyRepository extends AbstractEntityRepository<Long, Party> {
@Override @Override
public void initNewEntity(final Party party) { public void initNewEntity(final Party party) {
party.setUuid(UUID.randomUUID().toString()); if (party.getUuid() == null) {
party.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<Party> findByUuid(final String uuid) { public Optional<Party> findByUuid(final String uuid) {
final TypedQuery<Party> query = getEntityManager().createNamedQuery( final TypedQuery<Party> query = getEntityManager().createNamedQuery(
"Party.findByUuid", Party.class); "Party.findByUuid", Party.class);
@ -80,7 +81,7 @@ public class PartyRepository extends AbstractEntityRepository<Long, Party> {
return Optional.of(result.get(0)); return Optional.of(result.get(0));
} }
} }
/** /**
* Finds a {@link Party} (which can be a user or group) by its name. * Finds a {@link Party} (which can be a user or group) by its name.
* *

View File

@ -63,19 +63,20 @@ public class PermissionRepository
} }
@Override @Override
public void initNewEntity(final Permission permission) { public void initNewEntity(final Permission permission) {
if (permission.getUuid() == null) {
permission.setUuid(UUID.randomUUID().toString()); permission.setUuid(UUID.randomUUID().toString());
}
} }
public Optional<Permission> findByUuid(final String uuid) { public Optional<Permission> findByUuid(final String uuid) {
final TypedQuery<Permission> query = getEntityManager() final TypedQuery<Permission> query = getEntityManager()
.createNamedQuery("Permission.findByUuid", Permission.class); .createNamedQuery("Permission.findByUuid", Permission.class);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
return getSingleResult(query); return getSingleResult(query);
} }
/** /**
* Finds a {@link Permission} by the privilege, the grantee and the object. * Finds a {@link Permission} by the privilege, the grantee and the object.
* Where the grantee has been granted the given privilege on the given * Where the grantee has been granted the given privilege on the given

View File

@ -55,7 +55,7 @@ public class RoleRepository extends AbstractEntityRepository<Long, Role> {
public Long getIdOfEntity(final Role entity) { public Long getIdOfEntity(final Role entity) {
return entity.getRoleId(); return entity.getRoleId();
} }
@Override @Override
public boolean isNew(final Role entity) { public boolean isNew(final Role entity) {
if (entity == null) { if (entity == null) {
@ -63,12 +63,12 @@ public class RoleRepository extends AbstractEntityRepository<Long, Role> {
} }
return entity.getRoleId() == 0; return entity.getRoleId() == 0;
} }
@Override @Override
public void initNewEntity(final Role role) { public void initNewEntity(final Role role) {
if (role.getUuid() == null) {
role.setUuid(UUID.randomUUID().toString()); role.setUuid(UUID.randomUUID().toString());
}
} }
public long count() { public long count() {
@ -76,13 +76,13 @@ public class RoleRepository extends AbstractEntityRepository<Long, Role> {
"Role.count", Long.class); "Role.count", Long.class);
return query.getSingleResult(); return query.getSingleResult();
} }
public Optional<Role> findByUuid(final String uuid) { public Optional<Role> findByUuid(final String uuid) {
final TypedQuery<Role> query = getEntityManager() final TypedQuery<Role> query = getEntityManager()
.createNamedQuery("Role.findByUuid", Role.class); .createNamedQuery("Role.findByUuid", Role.class);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
return getSingleResult(query); return getSingleResult(query);
} }

View File

@ -49,7 +49,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
public String getIdAttributeName() { public String getIdAttributeName() {
return "partyId"; return "partyId";
} }
@Override @Override
public Long getIdOfEntity(final User entity) { public Long getIdOfEntity(final User entity) {
return entity.getPartyId(); return entity.getPartyId();
@ -70,7 +70,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
return getSingleResult(query); return getSingleResult(query);
} }
/** /**
* Finds a user by its user name. * Finds a user by its user name.
* *
@ -103,7 +103,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
final String entityGraphName) { final String entityGraphName) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final EntityGraph<User> entityGraph final EntityGraph<User> entityGraph
= (EntityGraph<User>) getEntityManager() = (EntityGraph<User>) getEntityManager()
.getEntityGraph(entityGraphName); .getEntityGraph(entityGraphName);
return findByName(name, entityGraph); return findByName(name, entityGraph);
} }
@ -149,7 +149,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
final String entityGraphName) { final String entityGraphName) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final EntityGraph<User> entityGraph final EntityGraph<User> entityGraph
= (EntityGraph<User>) getEntityManager() = (EntityGraph<User>) getEntityManager()
.getEntityGraph(entityGraphName); .getEntityGraph(entityGraphName);
return findByEmailAddress(emailAddress, entityGraph); return findByEmailAddress(emailAddress, entityGraph);
} }
@ -206,12 +206,11 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
@Override @Override
protected void initNewEntity(final User entity) { protected void initNewEntity(final User entity) {
if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString()); entity.setUuid(UUID.randomUUID().toString());
}
} }
@AuthorizationRequired @AuthorizationRequired
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)

View File

@ -162,7 +162,9 @@ public class SiteRepository extends AbstractEntityRepository<Long, Site> {
@Override @Override
public void initNewEntity(final Site site) { public void initNewEntity(final Site site) {
site.setUuid(UUID.randomUUID().toString()); if (site.getUuid() == null) {
site.setUuid(UUID.randomUUID().toString());
}
} }
} }

View File

@ -53,7 +53,7 @@ public class ApplicationIdResolver implements Serializable, ObjectIdResolver {
.orElseThrow( .orElseThrow(
() -> new IllegalArgumentException( () -> new IllegalArgumentException(
String.format( String.format(
"No ccmApplications with UUID %s in the database.", "No CcmApplication with UUID %s in the database.",
id.key.toString() id.key.toString()
) )
) )

View File

@ -34,7 +34,7 @@ import java.util.UUID;
/** /**
* Repository for applications. * Repository for applications.
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@RequestScoped @RequestScoped
@ -52,7 +52,7 @@ public class ApplicationRepository
public String getIdAttributeName() { public String getIdAttributeName() {
return "objectId"; return "objectId";
} }
@Override @Override
public Long getIdOfEntity(final CcmApplication entity) { public Long getIdOfEntity(final CcmApplication entity) {
return entity.getObjectId(); return entity.getObjectId();
@ -65,10 +65,13 @@ public class ApplicationRepository
@Override @Override
public void initNewEntity(final CcmApplication application) { public void initNewEntity(final CcmApplication application) {
super.initNewEntity(application); super.initNewEntity(application);
application.setUuid(UUID.randomUUID().toString()); if (application.getUuid() == null) {
application.setApplicationType(application.getClass().getName()); application.setUuid(UUID.randomUUID().toString());
}
if (application.getApplicationType() == null) {
application.setApplicationType(application.getClass().getName());
}
} }
/** /**

View File

@ -18,6 +18,8 @@
*/ */
package org.libreccm.workflow; 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.AbstractEntityImExporter;
import org.libreccm.imexport.Processes; import org.libreccm.imexport.Processes;
@ -28,6 +30,7 @@ import java.util.Set;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.EntityManager;
/** /**
* Exporter/Importer for {@link AssignableTask}s. * Exporter/Importer for {@link AssignableTask}s.
@ -40,10 +43,17 @@ import javax.inject.Inject;
@Processes(AssignableTask.class) @Processes(AssignableTask.class)
public class AssignableTaskImExporter public class AssignableTaskImExporter
extends AbstractEntityImExporter<AssignableTask> { extends AbstractEntityImExporter<AssignableTask> {
private static final Logger LOGGER = LogManager.getLogger(
AssignableTaskImExporter.class
);
@Inject @Inject
private AssignableTaskRepository assignableTaskRepository; private AssignableTaskRepository assignableTaskRepository;
@Inject
private EntityManager entityManager;
@Inject @Inject
private TaskManager taskManager; private TaskManager taskManager;
@ -74,6 +84,11 @@ public class AssignableTaskImExporter
@Override @Override
protected void saveImportedEntity(final AssignableTask entity) { protected void saveImportedEntity(final AssignableTask entity) {
assignableTaskRepository.save(entity); assignableTaskRepository.save(entity);
LOGGER.warn(
"Saved imported assignable task with UUID {} and ID {}.",
entity.getUuid(),
entity.getTaskId()
);
} }
@Override @Override
@ -140,7 +155,7 @@ public class AssignableTaskImExporter
importedEntity.getDurationMinutes() importedEntity.getDurationMinutes()
); );
} }
if (!Objects.equals( if (!Objects.equals(
existingEntity.getNotificationSender(), existingEntity.getNotificationSender(),
importedEntity.getNotificationSender() importedEntity.getNotificationSender()

View File

@ -32,6 +32,8 @@ import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.transaction.Transactional;
/** /**
* Repository for assignable tasks. * Repository for assignable tasks.
* *
@ -52,7 +54,7 @@ public class AssignableTaskRepository
public String getIdAttributeName() { public String getIdAttributeName() {
return "taskId"; return "taskId";
} }
@Override @Override
public Long getIdOfEntity(final AssignableTask entity) { public Long getIdOfEntity(final AssignableTask entity) {
return entity.getTaskId(); return entity.getTaskId();
@ -62,10 +64,10 @@ public class AssignableTaskRepository
public boolean isNew(final AssignableTask task) { public boolean isNew(final AssignableTask task) {
return task.getTaskId() == 0; return task.getTaskId() == 0;
} }
@Override @Override
protected void initNewEntity(final AssignableTask entity) { protected void initNewEntity(final AssignableTask entity) {
if (isNew(entity)) { if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString()); entity.setUuid(UUID.randomUUID().toString());
} }
} }
@ -77,6 +79,7 @@ public class AssignableTaskRepository
* *
* @return An optional either with the found item or empty * @return An optional either with the found item or empty
*/ */
@Transactional(Transactional.TxType.REQUIRED)
public Optional<AssignableTask> findByUuid(final String uuid) { public Optional<AssignableTask> findByUuid(final String uuid) {
final TypedQuery<AssignableTask> query = getEntityManager() final TypedQuery<AssignableTask> query = getEntityManager()
.createNamedQuery( .createNamedQuery(
@ -90,6 +93,7 @@ public class AssignableTaskRepository
} }
} }
@Transactional(Transactional.TxType.REQUIRED)
public List<AssignableTask> findEnabledTasksForWorkflow( public List<AssignableTask> findEnabledTasksForWorkflow(
final User user, final Workflow workflow) { final User user, final Workflow workflow) {
final TypedQuery<AssignableTask> query = getEntityManager() final TypedQuery<AssignableTask> query = getEntityManager()
@ -102,6 +106,7 @@ public class AssignableTaskRepository
return query.getResultList(); return query.getResultList();
} }
@Transactional(Transactional.TxType.REQUIRED)
public List<AssignableTask> getAssignedTasks(final User user, public List<AssignableTask> getAssignedTasks(final User user,
final Workflow workflow) { final Workflow workflow) {
final TypedQuery<AssignableTask> query = getEntityManager() final TypedQuery<AssignableTask> query = getEntityManager()
@ -119,6 +124,4 @@ public class AssignableTaskRepository
return query.getResultList(); return query.getResultList();
} }
} }

View File

@ -36,6 +36,8 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.libreccm.imexport.Exportable;
import javax.persistence.AssociationOverride; import javax.persistence.AssociationOverride;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Embedded; import javax.persistence.Embedded;
@ -119,10 +121,11 @@ import javax.xml.bind.annotation.XmlElementWrapper;
@JsonIdentityInfo( @JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class, generator = ObjectIdGenerators.PropertyGenerator.class,
resolver = TaskIdResolver.class, resolver = TaskIdResolver.class,
property = "uuid", property = "uuid"
scope = Task.class // ,
// scope = Task.class
) )
public class Task implements Identifiable, Serializable { public class Task implements Exportable, Identifiable, Serializable {
private static final long serialVersionUID = 8161343036908150426L; private static final long serialVersionUID = 8161343036908150426L;

View File

@ -20,10 +20,12 @@ package org.libreccm.workflow;
import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; 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 org.libreccm.cdi.utils.CdiUtil;
import javax.enterprise.context.RequestScoped;
import java.io.Serializable; import java.io.Serializable;
import java.util.Optional;
/** /**
* Used to resolve {@link Task}s based on the UUIDs for export or import. * Used to resolve {@link Task}s based on the UUIDs for export or import.
@ -31,11 +33,13 @@ import java.io.Serializable;
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a> * @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@RequestScoped
public class TaskIdResolver implements Serializable, ObjectIdResolver { 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 @Override
public void bindItem( public void bindItem(
final ObjectIdGenerator.IdKey id, final ObjectIdGenerator.IdKey id,
@ -48,6 +52,31 @@ public class TaskIdResolver implements Serializable, ObjectIdResolver {
@Override @Override
public Object resolveId(final ObjectIdGenerator.IdKey id) { public Object resolveId(final ObjectIdGenerator.IdKey id) {
// final Optional<Task> 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 return CdiUtil
.createCdiUtil() .createCdiUtil()
.findBean(TaskRepository.class) .findBean(TaskRepository.class)

View File

@ -46,7 +46,7 @@ public class TaskRepository extends AbstractEntityRepository<Long, Task> {
public String getIdAttributeName() { public String getIdAttributeName() {
return "taskId"; return "taskId";
} }
@Override @Override
public Long getIdOfEntity(final Task entity) { public Long getIdOfEntity(final Task entity) {
return entity.getTaskId(); return entity.getTaskId();
@ -60,7 +60,9 @@ public class TaskRepository extends AbstractEntityRepository<Long, Task> {
@Override @Override
protected void initNewEntity(final Task task) { protected void initNewEntity(final Task task) {
super.initNewEntity(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<Long, Task> {
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public Optional<Task> findByUuid(final String uuid) { public Optional<Task> findByUuid(final String uuid) {
final TypedQuery<Task> query = getEntityManager().createNamedQuery( final TypedQuery<Task> query = getEntityManager().createNamedQuery(
"Task.findByUuid", Task.class); "Task.findByUuid",
Task.class
);
query.setParameter("uuid", uuid); query.setParameter("uuid", uuid);
try { try {

View File

@ -39,7 +39,7 @@ import javax.transaction.Transactional;
public class WorkflowRepository extends AbstractEntityRepository<Long, Workflow> { public class WorkflowRepository extends AbstractEntityRepository<Long, Workflow> {
private static final long serialVersionUID = -8811728904958517569L; private static final long serialVersionUID = -8811728904958517569L;
@Override @Override
public Class<Workflow> getEntityClass() { public Class<Workflow> getEntityClass() {
return Workflow.class; return Workflow.class;
@ -54,7 +54,7 @@ public class WorkflowRepository extends AbstractEntityRepository<Long, Workflow>
public Long getIdOfEntity(final Workflow entity) { public Long getIdOfEntity(final Workflow entity) {
return entity.getWorkflowId(); return entity.getWorkflowId();
} }
@Override @Override
public boolean isNew(final Workflow workflow) { public boolean isNew(final Workflow workflow) {
return workflow.getWorkflowId() == 0; return workflow.getWorkflowId() == 0;
@ -63,10 +63,10 @@ public class WorkflowRepository extends AbstractEntityRepository<Long, Workflow>
@Override @Override
protected void initNewEntity(final Workflow workflow) { protected void initNewEntity(final Workflow workflow) {
super.initNewEntity(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. * Find a {@link Workflow} by its UUID.

View File

@ -203,6 +203,8 @@ public abstract class AbstractResourceRepository<T extends AbstractResource>
//Todo //Todo
@Override @Override
public void initNewEntity(final T entity) { public void initNewEntity(final T entity) {
entity.setUuid(UUID.randomUUID().toString()); if (entity.getUuid() == null) {
entity.setUuid(UUID.randomUUID().toString());
}
} }
} }