Fetching and building organizations for dmps for public API

This commit is contained in:
Thomas Georgios Giannos 2023-11-28 16:20:31 +02:00
parent 693f1dba7f
commit b00b048632
3 changed files with 22 additions and 56 deletions

View File

@ -2,6 +2,7 @@ package eu.eudat.model.mapper.publicapi;
import eu.eudat.model.Dmp; import eu.eudat.model.Dmp;
import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel; import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel;
import eu.eudat.model.publicapi.organisation.OrganizationPublicModel;
import eu.eudat.model.publicapi.overviewmodels.DataManagementPlanPublicModel; import eu.eudat.model.publicapi.overviewmodels.DataManagementPlanPublicModel;
import eu.eudat.model.publicapi.researcher.ResearcherPublicModel; import eu.eudat.model.publicapi.researcher.ResearcherPublicModel;
import eu.eudat.model.publicapi.user.UserInfoPublicModel; import eu.eudat.model.publicapi.user.UserInfoPublicModel;
@ -24,6 +25,7 @@ public class DmpToPublicApiDmpMapper {
model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList()); model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList());
model.setResearchers(dmp.getDmpReferences().stream().map(ResearcherPublicModel::fromDmpReference).filter(Objects::isNull).toList()); model.setResearchers(dmp.getDmpReferences().stream().map(ResearcherPublicModel::fromDmpReference).filter(Objects::isNull).toList());
model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences())); model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences()));
model.setOrganisations(dmp.getDmpReferences().stream().map(OrganizationPublicModel::fromDmpReference).filter(Objects::isNull).toList());
model.setCreatedAt(Date.from(dmp.getCreatedAt())); model.setCreatedAt(Date.from(dmp.getCreatedAt()));
model.setModifiedAt(Date.from(dmp.getUpdatedAt())); model.setModifiedAt(Date.from(dmp.getUpdatedAt()));

View File

@ -1,6 +1,9 @@
package eu.eudat.model.publicapi.organisation; package eu.eudat.model.publicapi.organisation;
import eu.eudat.commons.enums.ReferenceType;
import eu.eudat.data.old.Organisation; import eu.eudat.data.old.Organisation;
import eu.eudat.model.DmpReference;
import eu.eudat.model.Reference;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@ -64,55 +67,18 @@ public class OrganizationPublicModel {
this.key = key; this.key = key;
} }
public OrganizationPublicModel fromDataModel(Organisation entity) { public static OrganizationPublicModel fromDmpReference(DmpReference dmpReference) {
this.id = entity.getId().toString(); if (dmpReference.getReference().getType() != ReferenceType.Organizations)
this.name = entity.getLabel(); return null;
this.label = entity.getUri();
if (entity.getReference() != null) {
this.reference = entity.getReference();
this.key = entity.getReference().substring(0, entity.getReference().indexOf(":"));
}
return this;
}
public Organisation toDataModel() {
Organisation organisationEntity = new Organisation();
if (this.key != null && this.reference != null) {
if (this.reference.startsWith(this.key + ":")) {
organisationEntity.setReference(this.reference);
} else {
organisationEntity.setReference(this.key + ":" + this.reference);
}
}
if (this.id != null) {
organisationEntity.setId(UUID.fromString(this.id));
}
organisationEntity.setLabel(this.name);
organisationEntity.setUri(this.label);
organisationEntity.setCreated(new Date());
organisationEntity.setStatus((short) this.status);
return organisationEntity;
}
public static OrganizationPublicModel fromMap(HashMap<String, Object> map) {
OrganizationPublicModel model = new OrganizationPublicModel(); OrganizationPublicModel model = new OrganizationPublicModel();
if (map != null) { Reference reference = dmpReference.getReference();
model.id = (String) map.get("id"); model.setId(reference.getId().toString());
model.key = (String) map.get("key"); model.setReference(reference.getReference());
model.label = (String) map.get("label"); model.setLabel(reference.getLabel());
model.name = (String) map.get("name"); model.setName(reference.getLabel());
model.reference = (String) map.get("reference"); if (reference.getReference() != null)
model.status = (int) map.get("status"); model.setKey(reference.getReference().substring(0, reference.getReference().indexOf(":")));
model.tag = (String) map.get("tag");
}
return model; return model;
} }
public String generateLabel() {
return this.getName();
}
public String getHint() {
return null;
}
} }

View File

@ -2,14 +2,11 @@ package eu.eudat.model.publicapi.researcher;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.enums.ReferenceType;
import eu.eudat.data.old.Researcher;
import eu.eudat.model.DmpReference; import eu.eudat.model.DmpReference;
import eu.eudat.model.Reference;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.UUID;
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class ResearcherPublicModel { public class ResearcherPublicModel {
private static final Logger logger = LoggerFactory.getLogger(ResearcherPublicModel.class); private static final Logger logger = LoggerFactory.getLogger(ResearcherPublicModel.class);
@ -74,10 +71,11 @@ public class ResearcherPublicModel {
if (dmpReference.getReference().getType() != ReferenceType.Researcher) if (dmpReference.getReference().getType() != ReferenceType.Researcher)
return null; return null;
ResearcherPublicModel model = new ResearcherPublicModel(); ResearcherPublicModel model = new ResearcherPublicModel();
model.setId(dmpReference.getReference().getId().toString()); Reference reference = dmpReference.getReference();
model.setReference(dmpReference.getReference().getReference()); model.setId(reference.getId().toString());
model.setLabel(dmpReference.getReference().getLabel()); model.setReference(reference.getReference());
model.setName(dmpReference.getReference().getLabel()); model.setLabel(reference.getLabel());
model.setName(reference.getLabel());
String[] refParts = dmpReference.getReference().getReference().split(":"); String[] refParts = dmpReference.getReference().getReference().split(":");
String source = refParts[0]; String source = refParts[0];
if (source.equals("dmp")) if (source.equals("dmp"))