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 { private UUID id; private String label; private String abbreviation; private String description; private Date startDate; private Date endDate; private String uri; private FunderPublicOverviewModel funder; public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public String getAbbreviation() { return abbreviation; } public void setAbbreviation(String abbreviation) { this.abbreviation = abbreviation; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } public FunderPublicOverviewModel getFunder() { return funder; } public void setFunder(FunderPublicOverviewModel funder) { this.funder = funder; } public static GrantPublicOverviewModel fromDmpReferences(List dmpReferences) { FunderPublicOverviewModel funder = null; for (DmpReference dmpReference : dmpReferences) { if (dmpReference.getReference().getType() == ReferenceType.Funder) { funder = new FunderPublicOverviewModel(); Reference reference = dmpReference.getReference(); funder.setId(reference.getId()); funder.setLabel(reference.getLabel()); continue; } 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()); model.setFunder(funder); 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(); this.abbreviation = entity.getAbbreviation(); this.description = entity.getDescription(); this.startDate = entity.getStartdate(); this.endDate = entity.getEnddate(); this.uri = entity.getUri(); this.funder = new FunderPublicOverviewModel(); if (entity.getFunder() != null) this.funder.fromDataModel(entity.getFunder()); return this; } public Grant toDataModel() throws Exception { return null; } public String getHint() { return null; } }