Fetching and building grants for dmps for public API

This commit is contained in:
Thomas Georgios Giannos 2023-11-28 15:52:17 +02:00
parent eb19b9a7d5
commit 693f1dba7f
3 changed files with 33 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package eu.eudat.model.mapper.publicapi;
import eu.eudat.model.Dmp;
import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel;
import eu.eudat.model.publicapi.overviewmodels.DataManagementPlanPublicModel;
import eu.eudat.model.publicapi.researcher.ResearcherPublicModel;
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
@ -22,6 +23,7 @@ public class DmpToPublicApiDmpMapper {
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.setCreatedAt(Date.from(dmp.getCreatedAt()));
model.setModifiedAt(Date.from(dmp.getUpdatedAt()));

View File

@ -1,9 +1,15 @@
package eu.eudat.model.publicapi.grant;
import eu.eudat.commons.enums.ReferenceType;
import eu.eudat.data.old.Grant;
import eu.eudat.model.DmpReference;
import eu.eudat.model.Reference;
import eu.eudat.model.publicapi.funder.FunderPublicOverviewModel;
import eu.eudat.model.referencedefinition.Field;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class GrantPublicOverviewModel {
@ -72,6 +78,28 @@ public class GrantPublicOverviewModel {
this.funder = funder;
}
public static GrantPublicOverviewModel fromDmpReferences(List<DmpReference> dmpReferences) {
for (DmpReference dmpReference : dmpReferences) {
if (dmpReference.getReference().getType() != ReferenceType.Grants)
continue;
GrantPublicOverviewModel model = new GrantPublicOverviewModel();
Reference reference = dmpReference.getReference();
model.setId(reference.getId());
model.setDescription(reference.getDescription());
model.setAbbreviation(reference.getAbbreviation());
model.setLabel(reference.getLabel());
Field startDate = reference.getDefinition().getFields().stream().filter(x -> x.getCode().equals("startDate")).toList().get(0);
if (startDate != null) model.setStartDate(Date.from(Instant.parse(startDate.getValue())));
Field endDate = reference.getDefinition().getFields().stream().filter(x -> x.getCode().equals("endDate")).toList().get(0);
if (startDate != null) model.setEndDate(Date.from(Instant.parse(endDate.getValue())));
Field uri = reference.getDefinition().getFields().stream().filter(x -> x.getCode().equals("uri")).toList().get(0);
if (uri != null) model.setUri(uri.getValue());
return model;
}
return null;
}
public GrantPublicOverviewModel fromDataModel(Grant entity) {
this.id = entity.getId();
this.label = entity.getLabel();

View File

@ -161,6 +161,9 @@ public class PublicDmpsDocumentation extends BaseController {
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._id)),
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._reference)),
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._label)),
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._abbreviation)),
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._description)),
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._definition)),
Dmp._createdAt,
Dmp._updatedAt,
Dmp._finalizedAt