argos/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DmpToPublicApiDmpMapper.java

47 lines
2.2 KiB
Java

package eu.eudat.model.mapper.publicapi;
import eu.eudat.data.DmpDescriptionTemplateEntity;
import eu.eudat.data.EntityDoiEntity;
import eu.eudat.model.Dmp;
import eu.eudat.model.DmpDescriptionTemplate;
import eu.eudat.model.publicapi.associatedprofile.AssociatedProfilePublicModel;
import eu.eudat.model.publicapi.doi.DoiPublicModel;
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.researcher.ResearcherPublicModel;
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
import org.springframework.stereotype.Component;
import java.sql.Date;
import java.util.List;
import java.util.Objects;
@Component
public class DmpToPublicApiDmpMapper {
public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List<EntityDoiEntity> doiEntities, List<DmpDescriptionTemplate> descriptionTemplates) {
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());
model.setProfile(dmp.getBlueprint().getLabel());
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.setOrganisations(dmp.getDmpReferences().stream().map(OrganizationPublicModel::fromDmpReference).filter(Objects::isNull).toList());
model.setDois(doiEntities.stream().map(DoiPublicModel::fromDataModel).toList());
model.setAssociatedProfiles(descriptionTemplates.stream().map(AssociatedProfilePublicModel::fromDmpDescriptionTemplate).toList());
model.setCreatedAt(Date.from(dmp.getCreatedAt()));
model.setModifiedAt(Date.from(dmp.getUpdatedAt()));
model.setFinalizedAt(Date.from(dmp.getFinalizedAt()));
return model;
}
}