From 319e1f0dcaa01a4df2f6621c3be6d41ed81c6ac9 Mon Sep 17 00:00:00 2001 From: Thomas Georgios Giannos Date: Tue, 28 Nov 2023 18:04:26 +0200 Subject: [PATCH] Preparing fetching of associated dataset profiles for dmps for public API --- .../mapper/publicapi/DmpToPublicApiDmpMapper.java | 10 +++++++--- .../AssociatedProfilePublicModel.java | 8 ++++++++ .../publicapi/PublicDmpsDocumentation.java | 15 ++++++++++----- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DmpToPublicApiDmpMapper.java b/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DmpToPublicApiDmpMapper.java index cbfe570b4..929879640 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DmpToPublicApiDmpMapper.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DmpToPublicApiDmpMapper.java @@ -1,7 +1,10 @@ package eu.eudat.model.mapper.publicapi; +import eu.eudat.data.DmpDescriptionTemplateEntity; import eu.eudat.data.EntityDoiEntity; import eu.eudat.model.Dmp; +import eu.eudat.model.DmpDescriptionTemplate; +import eu.eudat.model.publicapi.associatedprofile.AssociatedProfilePublicModel; import eu.eudat.model.publicapi.doi.DoiPublicModel; import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel; import eu.eudat.model.publicapi.organisation.OrganizationPublicModel; @@ -17,20 +20,21 @@ import java.util.Objects; @Component public class DmpToPublicApiDmpMapper { - public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List doiEntities) { + public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List doiEntities, List descriptionTemplates) { DataManagementPlanPublicModel model = new DataManagementPlanPublicModel(); model.setId(dmp.getId().toString()); model.setLabel(dmp.getLabel()); model.setDescription(dmp.getDescription()); model.setVersion(dmp.getVersion()); model.setGroupId(dmp.getGroupId()); + model.setProfile(dmp.getBlueprint().getLabel()); model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList()); model.setResearchers(dmp.getDmpReferences().stream().map(ResearcherPublicModel::fromDmpReference).filter(Objects::isNull).toList()); model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences())); model.setOrganisations(dmp.getDmpReferences().stream().map(OrganizationPublicModel::fromDmpReference).filter(Objects::isNull).toList()); - List dois = doiEntities.stream().map(DoiPublicModel::fromDataModel).toList(); - model.setDois(dois); + model.setDois(doiEntities.stream().map(DoiPublicModel::fromDataModel).toList()); + model.setAssociatedProfiles(descriptionTemplates.stream().map(AssociatedProfilePublicModel::fromDmpDescriptionTemplate).toList()); model.setCreatedAt(Date.from(dmp.getCreatedAt())); model.setModifiedAt(Date.from(dmp.getUpdatedAt())); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/publicapi/associatedprofile/AssociatedProfilePublicModel.java b/dmp-backend/core/src/main/java/eu/eudat/model/publicapi/associatedprofile/AssociatedProfilePublicModel.java index 278640dc4..8ab10b2b8 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/publicapi/associatedprofile/AssociatedProfilePublicModel.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/publicapi/associatedprofile/AssociatedProfilePublicModel.java @@ -2,6 +2,9 @@ package eu.eudat.model.publicapi.associatedprofile; import eu.eudat.data.DescriptionTemplateEntity; import eu.eudat.commons.types.xml.XmlSerializable; +import eu.eudat.data.DmpDescriptionTemplateEntity; +import eu.eudat.model.DescriptionTemplate; +import eu.eudat.model.DmpDescriptionTemplate; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -61,6 +64,11 @@ public class AssociatedProfilePublicModel implements XmlSerializable> getOverviewSinglePublic( @PathVariable @Parameter(description = "fetch the dmp with the given id", example = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") String id ) { - BaseFieldSet fieldSet = new BaseFieldSet(); - Set fields = Set.of( + BaseFieldSet dmpFieldSet = new BaseFieldSet(); + Set dmpFields = Set.of( Dmp._id, Dmp._label, Dmp._description, @@ -170,13 +172,16 @@ public class PublicDmpsDocumentation extends BaseController { Dmp._updatedAt, Dmp._finalizedAt ); - fieldSet.setFields(fields); + dmpFieldSet.setFields(dmpFields); DmpQuery query = this.queryFactory.query(DmpQuery.class).ids(UUID.fromString(id)).accessTypes(DmpAccessType.Public).isActive(IsActive.Active); - Dmp model = this.builderFactory.builder(DmpBuilder.class).build(fieldSet, query.firstAs(fieldSet)); + Dmp model = this.builderFactory.builder(DmpBuilder.class).build(dmpFieldSet, query.firstAs(dmpFieldSet)); if (model == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale())); EntityDoiQuery entityDoiQuery = this.queryFactory.query(EntityDoiQuery.class).entityIds(UUID.fromString(id)).isActive(IsActive.Active); - DataManagementPlanPublicModel dataManagementPlan = this.dmpToPublicApiDmpMapper.toPublicModel(model, entityDoiQuery.collect()); + BaseFieldSet templateFieldSet = new BaseFieldSet(); + DmpDescriptionTemplateQuery dmpDescriptionTemplateQuery = this.queryFactory.query(DmpDescriptionTemplateQuery.class).dmpIds(UUID.fromString(id)).isActive(IsActive.Active); + List descriptionTemplates = this.builderFactory.builder(DmpDescriptionTemplateBuilder.class).build(templateFieldSet, dmpDescriptionTemplateQuery.collectAs(templateFieldSet)); + DataManagementPlanPublicModel dataManagementPlan = this.dmpToPublicApiDmpMapper.toPublicModel(model, entityDoiQuery.collect(), descriptionTemplates); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlan)); }