package eu.eudat.models.data.dashboard.recent.model; import eu.eudat.data.entities.DMP; import eu.eudat.logic.utilities.helpers.LabelBuilder; import eu.eudat.models.data.dmp.AssociatedProfile; import eu.eudat.models.data.dmp.Organisation; import eu.eudat.models.data.listingmodels.UserInfoListingModel; import eu.eudat.models.data.urls.DatasetUrlListing; import javax.transaction.Transactional; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; public class RecentDmpModel extends RecentActivityModel { private String doi; private Map extraProperties; private List datasets; private List associatedProfiles; private String organisations; private UUID groupId; public String getDoi() { return doi; } public void setDoi(String doi) { this.doi = doi; } public Map getExtraProperties() { return extraProperties; } public void setExtraProperties(Map extraProperties) { this.extraProperties = extraProperties; } public List getDatasets() { return datasets; } public void setDatasets(List datasets) { this.datasets = datasets; } public List getAssociatedProfiles() { return associatedProfiles; } public void setAssociatedProfiles(List associatedProfiles) { this.associatedProfiles = associatedProfiles; } public String getOrganisations() { return organisations; } public void setOrganisations(String organisations) { this.organisations = organisations; } public UUID getGroupId() { return groupId; } public void setGroupId(UUID groupId) { this.groupId = groupId; } @Override @Transactional public RecentActivityModel fromEntity(DMP entity) { this.setType(RecentActivityType.DMP.getIndex()); this.setId(entity.getId().toString()); this.setTitle(entity.getLabel()); this.setDescription(entity.getDescription()); this.setCreated(entity.getCreated()); this.setModified(entity.getModified()); this.setStatus(entity.getStatus()); this.setVersion(entity.getVersion()); //this.datasets = entity.getDataset().stream().map(dataset -> new RecentDatasetModel().fromDmpEntity(dataset)).collect(Collectors.toList()); this.datasets = entity.getDataset().stream().map(dataset -> new DatasetUrlListing().fromDataModel(dataset)).collect(Collectors.toList()); this.associatedProfiles = entity.getAssociatedDmps().stream().map(item -> new AssociatedProfile().fromData(item)).collect(Collectors.toList()); this.setFinalizedAt(entity.getFinalizedAt()); this.setGrant(entity.getGrant().getLabel()); this.setGrantAbbreviation(entity.getGrant().getAbbreviation()); this.setGrantId(entity.getGrant().getId().toString()); this.groupId = entity.getGroupId(); this.setPublic(entity.isPublic()); this.organisations = LabelBuilder.getLabel(entity.getOrganisations().stream().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList())); //if (entity.getProfile() != null) this.setProfile(new DatasetProfileOverviewModel().fromDataModel(entity.getProfile())); this.setPublishedAt(entity.getPublishedAt()); this.setUsers(entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList())); return this; } @Override public RecentDmpModel fromDataModel(DMP entity) { return (RecentDmpModel) this.fromEntity(entity); } @Override public DMP toDataModel() throws Exception { return null; } @Override public String getHint() { return "recentDmpModel"; } }