diff --git a/sources/core/pom.xml b/sources/core/pom.xml index 70f89fe..83dc2ac 100644 --- a/sources/core/pom.xml +++ b/sources/core/pom.xml @@ -22,11 +22,11 @@ tools.dynamia.modules.entityfiles.parent tools.dynamia.modules - 7.2.3 + 7.3.0 Dynamia Modules - EntityFiles - Core tools.dynamia.modules.entityfiles - 7.2.3 + 7.3.0 https://www.dynamia.tools/modules/entityfiles diff --git a/sources/core/src/main/java/tools/dynamia/modules/entityfile/service/impl/EntityFileServiceImpl.java b/sources/core/src/main/java/tools/dynamia/modules/entityfile/service/impl/EntityFileServiceImpl.java index 79cfb64..69c6e9d 100644 --- a/sources/core/src/main/java/tools/dynamia/modules/entityfile/service/impl/EntityFileServiceImpl.java +++ b/sources/core/src/main/java/tools/dynamia/modules/entityfile/service/impl/EntityFileServiceImpl.java @@ -18,10 +18,14 @@ package tools.dynamia.modules.entityfile.service.impl; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Root; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import tools.dynamia.commons.BeanUtils; @@ -42,9 +46,6 @@ import tools.dynamia.modules.entityfile.local.LocalEntityFileStorage; import tools.dynamia.modules.entityfile.service.EntityFileService; -import jakarta.persistence.EntityManager; -import jakarta.persistence.PersistenceContext; - import java.io.File; import java.io.Serializable; import java.net.URL; @@ -57,6 +58,7 @@ * @author Mario Serrano Leones */ @Service +@CacheConfig(cacheNames = "entity-files") public class EntityFileServiceImpl implements EntityFileService { @Autowired @@ -295,6 +297,7 @@ public void download(EntityFile entityFile, File outputFile) { } @Override + @Cacheable public EntityFile getEntityFile(String uuid) { try { CriteriaBuilder cb = entityManager.getCriteriaBuilder(); diff --git a/sources/pom.xml b/sources/pom.xml index e8f7fee..66e1650 100644 --- a/sources/pom.xml +++ b/sources/pom.xml @@ -22,7 +22,7 @@ tools.dynamia.modules tools.dynamia.modules.entityfiles.parent pom - 7.2.3 + 7.3.0 Dynamia Modules - EntityFiles https://dynamia.tools/modules/entityfiles DynamiaTools extension to attach files to entities @@ -63,9 +63,9 @@ UTF-8 - 5.3.2 - 3.4.1 - 2.30.6 + 5.3.6 + 3.4.4 + 2.31.18 17 3.13.0 UTF-8 diff --git a/sources/s3/pom.xml b/sources/s3/pom.xml index fa81ea9..1012e56 100644 --- a/sources/s3/pom.xml +++ b/sources/s3/pom.xml @@ -23,12 +23,12 @@ tools.dynamia.modules tools.dynamia.modules.entityfiles.parent - 7.2.3 + 7.3.0 Dynamia Modules - EntityFiles - S3 tools.dynamia.modules.entityfiles.s3 - 7.2.3 + 7.3.0 https://www.dynamia.tools/modules/entityfiles diff --git a/sources/ui/pom.xml b/sources/ui/pom.xml index 5cef8c3..d90b60e 100644 --- a/sources/ui/pom.xml +++ b/sources/ui/pom.xml @@ -22,11 +22,11 @@ tools.dynamia.modules.entityfiles.parent tools.dynamia.modules - 7.2.3 + 7.3.0 Dynamia Modules - EntityFiles UI tools.dynamia.modules.entityfiles.ui - 7.2.3 + 7.3.0 https://www.dynamia.tools/modules/entityfiles diff --git a/sources/ui/src/main/java/tools/dynamia/modules/entityfile/ui/components/EntityFileImage.java b/sources/ui/src/main/java/tools/dynamia/modules/entityfile/ui/components/EntityFileImage.java index 2879fc3..7d2d799 100644 --- a/sources/ui/src/main/java/tools/dynamia/modules/entityfile/ui/components/EntityFileImage.java +++ b/sources/ui/src/main/java/tools/dynamia/modules/entityfile/ui/components/EntityFileImage.java @@ -22,15 +22,18 @@ import org.zkoss.zul.Image; import tools.dynamia.commons.SimpleCache; +import tools.dynamia.integration.Containers; import tools.dynamia.io.IOUtils; import tools.dynamia.io.Resource; import tools.dynamia.modules.entityfile.StoredEntityFile; import tools.dynamia.modules.entityfile.domain.EntityFile; +import tools.dynamia.modules.entityfile.service.EntityFileService; import tools.dynamia.zk.BindingComponentIndex; import tools.dynamia.zk.ComponentAliasIndex; import tools.dynamia.zk.ImageCache; import java.io.Serial; +import java.util.Objects; public class EntityFileImage extends Image { @@ -54,6 +57,7 @@ public class EntityFileImage extends Image { private int thumbnailHeight = 64; private int thumbnailWidth = 64; private String noPhotoPath = "/static/dynamia-tools/images/no-photo.jpg"; + private String entityFileUuid; public EntityFile getValue() { return entityFile; @@ -64,6 +68,10 @@ public void setValue(EntityFile entityFile) { loadImage(); } + public void setValue(String uuid) { + setEntityFileUuid(uuid); + } + private void loadImage() { if (entityFile != null) { Long key = entityFile.getId(); @@ -178,4 +186,25 @@ public static void clearCache(EntityFile file) { URL_THUMB_CACHE.remove(file.getId()); } } + + public String getEntityFileUuid() { + return entityFileUuid; + } + + public void setEntityFileUuid(String entityFileUuid) { + var old = this.entityFileUuid; + if (!Objects.equals(old, entityFileUuid)) { + this.entityFileUuid = entityFileUuid; + loadEntityFileByUuid(); + } + } + + private void loadEntityFileByUuid() { + if (entityFileUuid != null && !entityFileUuid.isBlank()) { + var service = Containers.get().findObject(EntityFileService.class); + if (service != null) { + setValue(service.getEntityFile(entityFileUuid)); + } + } + } }