2023-11-27 16:33:24 +01:00
|
|
|
package eu.eudat.model.mapper.publicapi;
|
|
|
|
|
2023-11-28 16:29:25 +01:00
|
|
|
import eu.eudat.data.EntityDoiEntity;
|
2023-11-28 11:54:08 +01:00
|
|
|
import eu.eudat.model.Dmp;
|
2023-11-28 17:04:26 +01:00
|
|
|
import eu.eudat.model.DmpDescriptionTemplate;
|
|
|
|
import eu.eudat.model.publicapi.associatedprofile.AssociatedProfilePublicModel;
|
2023-11-28 16:29:25 +01:00
|
|
|
import eu.eudat.model.publicapi.doi.DoiPublicModel;
|
2023-11-28 14:52:17 +01:00
|
|
|
import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel;
|
2023-12-06 16:38:03 +01:00
|
|
|
import eu.eudat.model.publicapi.listingmodels.DataManagementPlanPublicListingModel;
|
2023-11-28 15:20:31 +01:00
|
|
|
import eu.eudat.model.publicapi.organisation.OrganizationPublicModel;
|
2023-11-28 11:54:08 +01:00
|
|
|
import eu.eudat.model.publicapi.overviewmodels.DataManagementPlanPublicModel;
|
2023-11-28 14:05:51 +01:00
|
|
|
import eu.eudat.model.publicapi.researcher.ResearcherPublicModel;
|
2023-11-28 13:25:29 +01:00
|
|
|
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
|
2024-02-08 17:12:47 +01:00
|
|
|
import eu.eudat.service.publicapi.PublicApiProperties;
|
2023-11-28 11:54:08 +01:00
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import java.sql.Date;
|
2023-11-28 16:29:25 +01:00
|
|
|
import java.util.List;
|
2023-11-28 14:05:51 +01:00
|
|
|
import java.util.Objects;
|
2023-11-28 11:54:08 +01:00
|
|
|
|
|
|
|
@Component
|
2023-11-27 16:33:24 +01:00
|
|
|
public class DmpToPublicApiDmpMapper {
|
|
|
|
|
2023-12-06 16:38:03 +01:00
|
|
|
private final DescriptionToPublicApiDatasetMapper descriptionToPublicApiDatasetMapper;
|
|
|
|
|
|
|
|
public DmpToPublicApiDmpMapper(DescriptionToPublicApiDatasetMapper descriptionToPublicApiDatasetMapper) {
|
|
|
|
this.descriptionToPublicApiDatasetMapper = descriptionToPublicApiDatasetMapper;
|
|
|
|
}
|
|
|
|
|
2024-02-08 17:12:47 +01:00
|
|
|
public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List<EntityDoiEntity> doiEntities, List<DmpDescriptionTemplate> descriptionTemplates, PublicApiProperties.ReferenceTypeMapConfig config) {
|
2023-11-28 11:54:08 +01:00
|
|
|
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());
|
2023-12-06 16:38:03 +01:00
|
|
|
if (dmp.getBlueprint() != null) model.setProfile(dmp.getBlueprint().getLabel());
|
2023-11-28 11:54:08 +01:00
|
|
|
|
2023-12-06 16:38:03 +01:00
|
|
|
if (dmp.getDescriptions() != null) {
|
|
|
|
DataManagementPlanPublicListingModel publicListingModel = new DataManagementPlanPublicListingModel();
|
|
|
|
publicListingModel.setId(model.getId());
|
2024-02-08 17:12:47 +01:00
|
|
|
model.setDatasets(dmp.getDescriptions().stream().map(x -> descriptionToPublicApiDatasetMapper.toPublicModel(x, publicListingModel, config)).toList());
|
2023-12-06 16:38:03 +01:00
|
|
|
}
|
2023-11-29 13:34:37 +01:00
|
|
|
|
2023-11-28 13:25:29 +01:00
|
|
|
model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList());
|
2024-02-08 17:12:47 +01:00
|
|
|
model.setResearchers(dmp.getDmpReferences().stream().map(x-> ResearcherPublicModel.fromDmpReference(x, config)).filter(Objects::nonNull).toList());
|
|
|
|
model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences(), config));
|
|
|
|
model.setOrganisations(dmp.getDmpReferences().stream().map(x-> OrganizationPublicModel.fromDmpReference(x, config)).filter(Objects::nonNull).toList());
|
2023-11-28 17:04:26 +01:00
|
|
|
model.setDois(doiEntities.stream().map(DoiPublicModel::fromDataModel).toList());
|
2024-02-01 11:53:02 +01:00
|
|
|
model.setAssociatedProfiles(descriptionTemplates.stream().map(x -> AssociatedProfilePublicModel.fromDmpDescriptionTemplate(x, dmp.getBlueprint())).toList());
|
2023-11-28 11:54:08 +01:00
|
|
|
|
|
|
|
model.setCreatedAt(Date.from(dmp.getCreatedAt()));
|
|
|
|
model.setModifiedAt(Date.from(dmp.getUpdatedAt()));
|
|
|
|
model.setFinalizedAt(Date.from(dmp.getFinalizedAt()));
|
2023-11-27 16:33:24 +01:00
|
|
|
|
2023-11-28 11:54:08 +01:00
|
|
|
return model;
|
|
|
|
}
|
2023-11-27 16:33:24 +01:00
|
|
|
}
|
2024-01-30 17:34:22 +01:00
|
|
|
|