From cc97e93104070397f8a3af0cfbd033e612d2f16c Mon Sep 17 00:00:00 2001 From: Matija Obreza Date: Tue, 15 Jan 2019 17:02:21 +0100 Subject: [PATCH] Filter for accessions with images - Update imageCount when linking folders with accessions --- .../genesys2/server/model/genesys/AccessionId.java | 4 +++- .../genesys2/server/mvc/admin/AdminController.java | 7 +++++++ .../server/service/filter/AccessionFilter.java | 13 ++++++++++++- .../server/service/impl/AccessionServiceImpl.java | 2 +- .../resources/liquibase/liquibase-changeLog.yml | 12 ++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/genesys2/server/model/genesys/AccessionId.java b/src/main/java/org/genesys2/server/model/genesys/AccessionId.java index 144963249..159845fd2 100644 --- a/src/main/java/org/genesys2/server/model/genesys/AccessionId.java +++ b/src/main/java/org/genesys2/server/model/genesys/AccessionId.java @@ -27,6 +27,7 @@ import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.FetchType; +import javax.persistence.Index; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; @@ -65,7 +66,8 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators; */ @Entity @Inheritance(strategy = InheritanceType.JOINED) -@Table(name = "acce") +@Table(name = "acce", indexes = { + @Index(name = "IX_imageCount", columnList = "imageCount") }) @Audited public class AccessionId extends AuditedVersionedModel implements IdUUID { diff --git a/src/main/java/org/genesys2/server/mvc/admin/AdminController.java b/src/main/java/org/genesys2/server/mvc/admin/AdminController.java index 40f2c1a1a..fc57ac20d 100644 --- a/src/main/java/org/genesys2/server/mvc/admin/AdminController.java +++ b/src/main/java/org/genesys2/server/mvc/admin/AdminController.java @@ -616,6 +616,13 @@ public class AdminController { if (accession != null) { LOG.warn("Folder for accession {}:{} is {}", instCode, accession.getAccessionNumber(), acceFolder.getPath()); accession.getAccessionId().setRepositoryFolder(acceFolder); + { + // Get number of images in the gallery + ImageGallery gallery = acceFolder.getGallery(); + if (gallery != null) { + accession.getAccessionId().setImageCount(gallery.getImages().size()); + } + } accessionIdRepository.save(accession.getAccessionId()); } else { LOG.warn("No accession {}:{} for folder {}", instCode, acceFolder.getName(), acceFolder.getPath()); diff --git a/src/main/java/org/genesys2/server/service/filter/AccessionFilter.java b/src/main/java/org/genesys2/server/service/filter/AccessionFilter.java index ab00f30d3..0c8338f03 100644 --- a/src/main/java/org/genesys2/server/service/filter/AccessionFilter.java +++ b/src/main/java/org/genesys2/server/service/filter/AccessionFilter.java @@ -35,6 +35,8 @@ import com.querydsl.core.types.Predicate; */ public class AccessionFilter extends UuidModelFilter implements Serializable { + private static final long serialVersionUID = -1441103961567816877L; + /** The historic. */ public Boolean historic; @@ -94,6 +96,9 @@ public class AccessionFilter extends UuidModelFilter /** accession aliases */ public StringFilter alias; + + /** accessions with images */ + public Boolean images; /* (non-Javadoc) @@ -180,7 +185,13 @@ public class AccessionFilter extends UuidModelFilter if (sgsv != null) { and.and(accession.accessionId.duplSite.any().eq("NOR051")); } - + if (images != null) { + if (images == Boolean.TRUE) { + and.and(accession.accessionId.imageCount.gt(0)); + } else { + and.and(accession.accessionId.imageCount.eq(0)); + } + } return and; } diff --git a/src/main/java/org/genesys2/server/service/impl/AccessionServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/AccessionServiceImpl.java index 8e7be72c2..758c4e253 100644 --- a/src/main/java/org/genesys2/server/service/impl/AccessionServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/AccessionServiceImpl.java @@ -167,7 +167,7 @@ public class AccessionServiceImpl implements AccessionService { if (folder != null) { accessionDetails.files = folder.getFiles().stream().filter((file) -> !file.getContentType().contains("image/")).collect(Collectors.toList()); - ImageGallery imageGallery = imageGalleryService.loadImageGallery(folder); + ImageGallery imageGallery = imageGalleryService.getImageGallery(folder); if (imageGallery != null) { if (imageGallery.getImages() != null) { imageGallery.getImages().size(); diff --git a/src/main/resources/liquibase/liquibase-changeLog.yml b/src/main/resources/liquibase/liquibase-changeLog.yml index 9be26f992..53c66e659 100644 --- a/src/main/resources/liquibase/liquibase-changeLog.yml +++ b/src/main/resources/liquibase/liquibase-changeLog.yml @@ -4761,3 +4761,15 @@ databaseChangeLog: columnNames: folderId constraintName: UK_3x3s9vul09xif4y29o2rwx939 tableName: acce + +- changeSet: + id: 1547568102000-1 + author: mobreza + comment: Add index on acce#imageCount + changes: + - createIndex: + columns: + - column: + name: imageCount + indexName: IX_imageCount + tableName: acce -- GitLab