Dmp on Dataset mapped for public API
This commit is contained in:
parent
f5f5d6345f
commit
2fae4f41a7
|
@ -6,6 +6,7 @@ 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 org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -15,7 +16,7 @@ import java.util.Objects;
|
|||
@Component
|
||||
public class DescriptionToPublicApiDatasetMapper {
|
||||
|
||||
public DatasetPublicModel toPublicModel(Description description) {
|
||||
public DatasetPublicModel toPublicModel(Description description, DataManagementPlanPublicListingModel dmp) {
|
||||
DatasetPublicModel model = new DatasetPublicModel();
|
||||
model.setLabel(description.getLabel());
|
||||
model.setDescription(description.getDescription());
|
||||
|
@ -23,6 +24,8 @@ public class DescriptionToPublicApiDatasetMapper {
|
|||
model.setUri("");
|
||||
model.setStatus(description.getStatus());
|
||||
|
||||
model.setDmp(dmp);
|
||||
|
||||
model.setProfile(DatasetProfilePublicModel.fromDataModel(description.getDescriptionTemplate()));
|
||||
model.setRegistries(description.getDescriptionReferences().stream().map(RegistryPublicModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
model.setServices(description.getDescriptionReferences().stream().map(ServicePublicModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
|
|
|
@ -4,18 +4,23 @@ import eu.eudat.authorization.AuthorizationFlags;
|
|||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.controllers.BaseController;
|
||||
import eu.eudat.controllers.publicapi.request.dataset.DatasetPublicTableRequest;
|
||||
import eu.eudat.controllers.publicapi.request.dmp.DataManagmentPlanPublicTableRequest;
|
||||
import eu.eudat.controllers.publicapi.response.DataTableData;
|
||||
import eu.eudat.data.DescriptionEntity;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.model.Description;
|
||||
import eu.eudat.model.*;
|
||||
import eu.eudat.model.builder.DescriptionBuilder;
|
||||
import eu.eudat.model.builder.DmpBuilder;
|
||||
import eu.eudat.model.mapper.publicapi.DescriptionToPublicApiDatasetListingMapper;
|
||||
import eu.eudat.model.mapper.publicapi.DescriptionToPublicApiDatasetMapper;
|
||||
import eu.eudat.model.mapper.publicapi.DmpToPublicApiDmpListingMapper;
|
||||
import eu.eudat.model.publicapi.listingmodels.DatasetPublicListingModel;
|
||||
import eu.eudat.model.publicapi.overviewmodels.DatasetPublicModel;
|
||||
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
||||
import eu.eudat.query.DescriptionQuery;
|
||||
import eu.eudat.query.DmpQuery;
|
||||
import eu.eudat.query.lookup.DescriptionLookup;
|
||||
import eu.eudat.query.lookup.DmpLookup;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
@ -28,6 +33,7 @@ import io.swagger.v3.oas.annotations.media.ExampleObject;
|
|||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -62,6 +68,8 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|||
|
||||
private final DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper;
|
||||
|
||||
private final DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper;
|
||||
|
||||
@Autowired
|
||||
public PublicDatasetsDescriptionDocumentation(
|
||||
ApiContext apiContext,
|
||||
|
@ -69,13 +77,14 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|||
BuilderFactory builderFactory,
|
||||
MessageSource messageSource,
|
||||
DescriptionToPublicApiDatasetMapper descriptionToPublicApiDatasetMapper,
|
||||
DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper) {
|
||||
DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper, DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper) {
|
||||
super(apiContext);
|
||||
this.queryFactory = queryFactory;
|
||||
this.builderFactory = builderFactory;
|
||||
this.messageSource = messageSource;
|
||||
this.descriptionToPublicApiDatasetMapper = descriptionToPublicApiDatasetMapper;
|
||||
this.descriptionToPublicApiDatasetListingMapper = descriptionToPublicApiDatasetListingMapper;
|
||||
this.dmpToPublicApiDmpListingMapper = dmpToPublicApiDmpListingMapper;
|
||||
}
|
||||
|
||||
@Operation(summary = "This method is used to get a listing of public datasets.", description = PublicApiStaticHelpers.Description.getPagedNotes)
|
||||
|
@ -135,7 +144,39 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|||
Description model = this.builderFactory.builder(DescriptionBuilder.class).build(descriptionFieldSet, query.firstAs(descriptionFieldSet));
|
||||
if (model == null)
|
||||
throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
DatasetPublicModel dataset = this.descriptionToPublicApiDatasetMapper.toPublicModel(model);
|
||||
|
||||
DmpQuery dmpQuery = this.queryFactory.query(DmpQuery.class).authorize(EnumSet.of(AuthorizationFlags.Public)).ids(model.getDmp().getId()).isActive(IsActive.Active);
|
||||
DmpLookup dmpLookup = getDmpLookup();
|
||||
Dmp dmp = this.builderFactory.builder(DmpBuilder.class).build(dmpLookup.getProject(), dmpQuery.firstAs(dmpLookup.getProject()));
|
||||
|
||||
DatasetPublicModel dataset = this.descriptionToPublicApiDatasetMapper.toPublicModel(model, this.dmpToPublicApiDmpListingMapper.toPublicListingModel(dmp));
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DatasetPublicModel>().status(ApiMessageCode.NO_MESSAGE).payload(dataset));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static DmpLookup getDmpLookup() {
|
||||
BaseFieldSet fieldSet = new BaseFieldSet();
|
||||
Set<String> fields = Set.of(
|
||||
Dmp._id,
|
||||
Dmp._label,
|
||||
Dmp._description,
|
||||
Dmp._version,
|
||||
Dmp._groupId,
|
||||
String.join(".", Dmp._dmpUsers, String.join(".", DmpUser._user, User._id)),
|
||||
String.join(".", Dmp._dmpUsers, String.join(".", DmpUser._user, User._name)),
|
||||
String.join(".", Dmp._dmpUsers, DmpUser._role),
|
||||
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._id)),
|
||||
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._reference)),
|
||||
String.join(".", Dmp._dmpReferences, String.join(".", DmpReference._reference, Reference._label)),
|
||||
Dmp._dmpReferences,
|
||||
Dmp._createdAt,
|
||||
Dmp._updatedAt,
|
||||
Dmp._finalizedAt
|
||||
);
|
||||
fieldSet.setFields(fields);
|
||||
DmpLookup lookup = new DmpLookup();
|
||||
lookup.setProject(fieldSet);
|
||||
return lookup;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue