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

53 lines
2.9 KiB
Java

package eu.eudat.model.mapper.publicapi;
import eu.eudat.model.Description;
import eu.eudat.model.publicapi.datasetprofile.DatasetProfilePublicModel;
import eu.eudat.model.publicapi.datasetwizard.DataRepositoryPublicModel;
import eu.eudat.model.publicapi.datasetwizard.ExternalDatasetPublicListingModel;
import eu.eudat.model.publicapi.datasetwizard.RegistryPublicModel;
import eu.eudat.model.publicapi.datasetwizard.ServicePublicModel;
import eu.eudat.model.publicapi.listingmodels.DataManagementPlanPublicListingModel;
import eu.eudat.model.publicapi.overviewmodels.DatasetPublicModel;
import eu.eudat.service.publicapi.PublicApiProperties;
import org.springframework.stereotype.Component;
import java.sql.Date;
import java.util.Objects;
@Component
public class DescriptionToPublicApiDatasetMapper {
private final DescriptionTemplateToPublicApiDatasetProfileMapper descriptionTemplateToPublicApiDatasetProfileMapper;
public DescriptionToPublicApiDatasetMapper(DescriptionTemplateToPublicApiDatasetProfileMapper descriptionTemplateToPublicApiDatasetProfileMapper) {
this.descriptionTemplateToPublicApiDatasetProfileMapper = descriptionTemplateToPublicApiDatasetProfileMapper;
}
public DatasetPublicModel toPublicModel(Description description, DataManagementPlanPublicListingModel dmp, PublicApiProperties.ReferenceTypeMapConfig config) {
DatasetPublicModel model = new DatasetPublicModel();
model.setId(description.getId());
model.setLabel(description.getLabel());
model.setDescription(description.getDescription());
model.setReference("");
model.setUri("");
model.setStatus(description.getStatus());
model.setDmp(dmp);
model.setDatasetProfileDefinition(descriptionTemplateToPublicApiDatasetProfileMapper.toPublicModel(description.getDescriptionTemplate()));
model.setProfile(DatasetProfilePublicModel.fromDataModel(description.getDescriptionTemplate()));
if (description.getDescriptionReferences() != null) {
model.setRegistries(description.getDescriptionReferences().stream().map(x-> RegistryPublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
model.setServices(description.getDescriptionReferences().stream().map(x-> ServicePublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
model.setDataRepositories(description.getDescriptionReferences().stream().map(x-> DataRepositoryPublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
model.setExternalDatasets(description.getDescriptionReferences().stream().map(x-> ExternalDatasetPublicListingModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
}
model.setCreatedAt(Date.from(description.getCreatedAt()));
model.setModifiedAt(Date.from(description.getUpdatedAt()));
return model;
}
}