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));
+ }
+ }
+ }
}