|
|
|
@ -7,15 +7,19 @@ import eu.eudat.controllers.publicapi.request.dataset.DatasetPublicTableRequest;
|
|
|
|
|
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 +32,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 +67,8 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|
|
|
|
|
|
|
|
|
private final DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper;
|
|
|
|
|
|
|
|
|
|
private final DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
public PublicDatasetsDescriptionDocumentation(
|
|
|
|
|
ApiContext apiContext,
|
|
|
|
@ -69,13 +76,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)
|
|
|
|
@ -102,18 +110,6 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|
|
|
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataTableData<DatasetPublicListingModel>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTableData));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static DescriptionLookup getDescriptionLookup() {
|
|
|
|
|
BaseFieldSet fieldSet = new BaseFieldSet();
|
|
|
|
|
Set<String> fields;
|
|
|
|
|
fields = Set.of(
|
|
|
|
|
|
|
|
|
|
);
|
|
|
|
|
fieldSet.setFields(fields);
|
|
|
|
|
DescriptionLookup lookup = new DescriptionLookup();
|
|
|
|
|
lookup.setProject(fieldSet);
|
|
|
|
|
return lookup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "This method is used to get the overview of a public dataset.", description = PublicApiStaticHelpers.Description.getOverviewSinglePublicNotes)
|
|
|
|
|
@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {@ApiResponse(
|
|
|
|
|
responseCode = "200",
|
|
|
|
@ -126,16 +122,71 @@ public class PublicDatasetsDescriptionDocumentation extends BaseController {
|
|
|
|
|
public @ResponseBody ResponseEntity<ResponseItem<DatasetPublicModel>> getOverviewSinglePublic(
|
|
|
|
|
@PathVariable @Parameter(description = "fetch the dataset with the given id", example = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") String id
|
|
|
|
|
) {
|
|
|
|
|
DescriptionLookup lookup = getDescriptionLookup();
|
|
|
|
|
DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(EnumSet.of(AuthorizationFlags.Public)).ids(UUID.fromString(id)).isActive(IsActive.Active);
|
|
|
|
|
Description model = this.builderFactory.builder(DescriptionBuilder.class).build(lookup.getProject(), query.firstAs(lookup.getProject()));
|
|
|
|
|
if (model == null)
|
|
|
|
|
throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
|
|
|
|
|
|
|
|
|
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 DescriptionLookup getDescriptionLookup() {
|
|
|
|
|
BaseFieldSet descriptionFieldSet = new BaseFieldSet();
|
|
|
|
|
Set<String> descriptionFields = Set.of(
|
|
|
|
|
Description._id,
|
|
|
|
|
Description._label,
|
|
|
|
|
Description._description,
|
|
|
|
|
Description._status,
|
|
|
|
|
String.join(".", Description._createdBy, User._id),
|
|
|
|
|
String.join(".", Description._createdBy, User._name),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._id)),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._reference)),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._label)),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._abbreviation)),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._description)),
|
|
|
|
|
String.join(".", Description._descriptionReferences, String.join(".", DescriptionReference._reference, Reference._definition)),
|
|
|
|
|
Description._createdAt,
|
|
|
|
|
Description._updatedAt,
|
|
|
|
|
Description._finalizedAt
|
|
|
|
|
|
|
|
|
|
);
|
|
|
|
|
descriptionFieldSet.setFields(descriptionFields);
|
|
|
|
|
DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(EnumSet.of(AuthorizationFlags.Public)).ids(UUID.fromString(id)).isActive(IsActive.Active);
|
|
|
|
|
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);
|
|
|
|
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DatasetPublicModel>().status(ApiMessageCode.NO_MESSAGE).payload(dataset));
|
|
|
|
|
DescriptionLookup lookup = new DescriptionLookup();
|
|
|
|
|
lookup.setProject(descriptionFieldSet);
|
|
|
|
|
return lookup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|