From 371dcd5a61c42fca5c0d2c331830f8b4031848dc Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Mon, 8 Jan 2024 13:25:56 +0200 Subject: [PATCH] elastic changes --- .../eudat/elastic/data/DmpElasticEntity.java | 12 --------- .../NestedDescriptionElasticEntity.java | 13 ++++++++++ .../elasticbuilder/DmpElasticBuilder.java | 26 ++----------------- .../NestedDescriptionElasticBuilder.java | 22 ++++++++++++---- .../eudat/elastic/query/DmpElasticQuery.java | 3 --- .../query/NestedDescriptionElasticQuery.java | 3 +++ 6 files changed, 35 insertions(+), 44 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java index 8402bd601..1bc1eaa28 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java @@ -68,10 +68,6 @@ public class DmpElasticEntity { private List collaborators; public final static String _collaborators = "collaborators"; - @Field(value = DmpElasticEntity._descriptionTemplates, type = FieldType.Nested) - private List descriptionTemplates; - public final static String _descriptionTemplates = "descriptionTemplates"; - @Field(value = DmpElasticEntity._descriptions, type = FieldType.Nested) private List descriptions; public final static String _descriptions = "descriptions"; @@ -176,14 +172,6 @@ public class DmpElasticEntity { this.collaborators = collaborators; } - public List getDescriptionTemplates() { - return descriptionTemplates; - } - - public void setDescriptionTemplates(List descriptionTemplates) { - this.descriptionTemplates = descriptionTemplates; - } - public List getDescriptions() { return descriptions; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java index c9a5f7d48..99af0ac47 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java @@ -1,6 +1,7 @@ package eu.eudat.elastic.data.nested; import eu.eudat.commons.enums.DescriptionStatus; +import eu.eudat.elastic.data.DescriptionElasticEntity; import gr.cite.tools.elastic.ElasticConstants; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.*; @@ -46,6 +47,10 @@ public class NestedDescriptionElasticEntity { private List references; public final static String _references = "references"; + @Field(value = DescriptionElasticEntity._descriptionTemplate, type = FieldType.Object) + private NestedDescriptionTemplateElasticEntity descriptionTemplate; + public final static String _descriptionTemplate = "descriptionTemplate"; + public UUID getId() { return id; } @@ -109,4 +114,12 @@ public class NestedDescriptionElasticEntity { public void setReferences(List references) { this.references = references; } + + public NestedDescriptionTemplateElasticEntity getDescriptionTemplate() { + return descriptionTemplate; + } + + public void setDescriptionTemplate(NestedDescriptionTemplateElasticEntity descriptionTemplate) { + this.descriptionTemplate = descriptionTemplate; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java index d129bd2f9..3f87d4fd9 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java @@ -42,10 +42,9 @@ public class DmpElasticBuilder extends BaseElasticBuilder(); Map> referenceElasticEntityMap = this.collectDmpReferences(data); - Map> dmpElasticEntityMap = this.collectDescriptions(data); + Map> descriptionElasticEntityMap = this.collectDescriptions(data); Map> collaboratorElasticEntityMap = this.collectCollaborators(data); Map> doiElasticEntityMap = this.collectDois(data); - Map> descriptionTemplateElasticEntityMap = this.collectDescriptionTemplates(data); List models = new ArrayList<>(); for (DmpEntity d : data) { @@ -64,10 +63,9 @@ public class DmpElasticBuilder extends BaseElasticBuilder> collectDescriptionTemplates(List data) throws MyApplicationException { - if (data.isEmpty()) return null; - this.logger.debug("checking related - {}", DmpReference.class.getSimpleName()); - - DmpDescriptionTemplateQuery associationQuery = this.queryFactory.query(DmpDescriptionTemplateQuery.class).dmpIds(data.stream().map(DmpEntity::getId).collect(Collectors.toList())).isActive(IsActive.Active); - List associationEntities = associationQuery.collect(); - - DescriptionTemplateQuery query = this.queryFactory.query(DescriptionTemplateQuery.class).isActive(IsActive.Active).groupIds(associationEntities.stream().map(DmpDescriptionTemplateEntity::getDescriptionTemplateGroupId).distinct().collect(Collectors.toList())); - Map itemMapById = this.builderFactory.builder(NestedDescriptionTemplateElasticBuilder.class).asForeignKey(query, NestedDescriptionTemplateElasticEntity::getId); - - Map> itemMap = new HashMap<>(); - for (DmpDescriptionTemplateEntity associationEntity : associationEntities){ - if (!itemMap.containsKey(associationEntity.getDmpId())) itemMap.put(associationEntity.getDmpId(), new ArrayList<>()); - NestedDescriptionTemplateElasticEntity item = itemMapById.getOrDefault(associationEntity.getDescriptionTemplateGroupId(), null); - if (item != null) itemMap.get(associationEntity.getDmpId()).add(item); - } - - return itemMap; - } - private Map> collectDescriptions(List data) throws MyApplicationException { if (data.isEmpty()) return null; diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedDescriptionElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedDescriptionElasticBuilder.java index 8b0456a95..49392086a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedDescriptionElasticBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedDescriptionElasticBuilder.java @@ -6,15 +6,14 @@ import eu.eudat.data.DescriptionEntity; import eu.eudat.data.DescriptionReferenceEntity; import eu.eudat.data.DescriptionTagEntity; import eu.eudat.elastic.data.nested.NestedDescriptionElasticEntity; +import eu.eudat.elastic.data.nested.NestedDescriptionTemplateElasticEntity; import eu.eudat.elastic.data.nested.NestedReferenceElasticEntity; import eu.eudat.elastic.data.nested.NestedTagElasticEntity; import eu.eudat.elastic.elasticbuilder.BaseElasticBuilder; import eu.eudat.model.DescriptionReference; import eu.eudat.model.DescriptionTag; -import eu.eudat.query.DescriptionReferenceQuery; -import eu.eudat.query.DescriptionTagQuery; -import eu.eudat.query.ReferenceQuery; -import eu.eudat.query.TagQuery; +import eu.eudat.model.DescriptionTemplate; +import eu.eudat.query.*; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.QueryFactory; import gr.cite.tools.exception.MyApplicationException; @@ -33,7 +32,7 @@ import java.util.stream.Collectors; public class NestedDescriptionElasticBuilder extends BaseElasticBuilder { private final QueryFactory queryFactory; - private final BuilderFactory builderFactory; + private final BuilderFactory builderFactory; @Autowired public NestedDescriptionElasticBuilder( @@ -50,6 +49,7 @@ public class NestedDescriptionElasticBuilder extends BaseElasticBuilder> referenceElasticEntityMap = this.collectDescriptionReferences(data); Map> tagElasticEntityMap = this.collectDescriptionTags(data); + Map descriptionTemplateElasticEntityMap = this.collectDescriptionTemplates(data); List models = new ArrayList<>(); for (DescriptionEntity d : data) { @@ -109,4 +109,16 @@ public class NestedDescriptionElasticBuilder extends BaseElasticBuilder collectDescriptionTemplates(List data) throws MyApplicationException { + if (data.isEmpty()) + return null; + this.logger.debug("checking related - {}", DescriptionTemplate.class.getSimpleName()); + + Map itemMap; + DescriptionTemplateQuery q = this.queryFactory.query(DescriptionTemplateQuery.class).isActive(IsActive.Active).ids(data.stream().map(DescriptionEntity::getDescriptionTemplateId).distinct().collect(Collectors.toList())); + itemMap = this.builderFactory.builder(NestedDescriptionTemplateElasticBuilder.class).asForeignKey(q, NestedDescriptionTemplateElasticEntity::getId); + + return itemMap; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/query/DmpElasticQuery.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/query/DmpElasticQuery.java index dc32b361a..e8698e6ea 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/query/DmpElasticQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/query/DmpElasticQuery.java @@ -265,7 +265,6 @@ public class DmpElasticQuery extends ElasticQuery { if (columns.contains(DmpElasticEntity._finalizedAt)) mocDoc.setFinalizedAt(FieldBasedMapper.shallowSafeConversion(rawData.get(DmpElasticEntity._finalizedAt), Date.class)); mocDoc.setCollaborators(this.convertNested(rawData, columns, this.queryFactory.query(NestedCollaboratorElasticQuery.class), DmpElasticEntity._collaborators, null)); mocDoc.setReferences(this.convertNested(rawData, columns, this.queryFactory.query(NestedReferenceElasticQuery.class), DmpElasticEntity._references, null)); - mocDoc.setDescriptionTemplates(this.convertNested(rawData, columns, this.queryFactory.query(NestedDescriptionTemplateElasticQuery.class), DmpElasticEntity._descriptionTemplates, null)); mocDoc.setDescriptions(this.convertNested(rawData, columns, this.queryFactory.query(NestedDescriptionElasticQuery.class), DmpElasticEntity._descriptions, null)); return mocDoc; } @@ -283,7 +282,6 @@ public class DmpElasticQuery extends ElasticQuery { else if (item.match(DmpElasticEntity._accessType)) return this.elasticFieldOf(DmpElasticEntity._accessType); else if (item.prefix(DmpElasticEntity._collaborators)) return this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DmpElasticEntity._collaborators).fieldNameOf(this.extractPrefixed(item, DmpElasticEntity._collaborators)); else if (item.prefix(DmpElasticEntity._references)) return this.queryFactory.query(NestedReferenceElasticQuery.class).nestedPath(DmpElasticEntity._references).fieldNameOf(this.extractPrefixed(item, DmpElasticEntity._references)); - else if (item.prefix(DmpElasticEntity._descriptionTemplates)) return this.queryFactory.query(NestedDescriptionTemplateElasticQuery.class).nestedPath(DmpElasticEntity._descriptionTemplates).fieldNameOf(this.extractPrefixed(item, DmpElasticEntity._descriptionTemplates)); else if (item.prefix(DmpElasticEntity._descriptions)) return this.queryFactory.query(NestedDescriptionElasticQuery.class).nestedPath(DmpElasticEntity._descriptions).fieldNameOf(this.extractPrefixed(item, DmpElasticEntity._descriptions)); else return null; } @@ -314,7 +312,6 @@ public class DmpElasticQuery extends ElasticQuery { protected ElasticNestedQuery nestedQueryOf(FieldResolver item) { if (item.prefix(DmpElasticEntity._collaborators)) return this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DmpElasticEntity._collaborators); else if (item.prefix(DmpElasticEntity._references)) return this.queryFactory.query(NestedReferenceElasticQuery.class).nestedPath(DmpElasticEntity._references); - else if (item.prefix(DmpElasticEntity._descriptionTemplates)) return this.queryFactory.query(NestedDescriptionTemplateElasticQuery.class).nestedPath(DmpElasticEntity._descriptionTemplates); else if (item.prefix(DmpElasticEntity._descriptions)) return this.queryFactory.query(NestedDescriptionElasticQuery.class).nestedPath(DmpElasticEntity._descriptions); else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/query/NestedDescriptionElasticQuery.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/query/NestedDescriptionElasticQuery.java index efdf580c9..e3b648333 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/elastic/query/NestedDescriptionElasticQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/query/NestedDescriptionElasticQuery.java @@ -3,6 +3,7 @@ package eu.eudat.elastic.query; import co.elastic.clients.elasticsearch._types.query_dsl.Query; import eu.eudat.commons.enums.DescriptionStatus; import eu.eudat.convention.ConventionService; +import eu.eudat.elastic.data.DescriptionElasticEntity; import eu.eudat.elastic.data.nested.NestedDescriptionElasticEntity; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryFactory; @@ -74,6 +75,7 @@ public class NestedDescriptionElasticQuery extends ElasticNestedQuery