From d8a86fe83794ea9522e9eaa93f85d3d9c2ec4364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Such=C3=A1nek?= Date: Tue, 5 Sep 2023 15:26:43 +0200 Subject: [PATCH] Add permits for index entries --- .../index/IndexEntryController.java | 28 +++- .../dto/index/entry/IndexEntryUpdateDTO.java | 16 +++ .../dto/index/settings/IndexSettingsDTO.java | 3 + .../settings/IndexSettingsUpdateDTO.java | 3 + .../repository/IndexEntryRepository.java | 26 ++-- .../entity/index/entry/IndexEntry.java | 2 + .../entity/index/entry/IndexEntryPermit.java | 7 + .../entity/index/settings/IndexSettings.java | 4 + .../dtls/fairdatapoint/entity/user/User.java | 4 + .../index/entry/IndexEntryService.java | 127 ++++++++++++++---- .../index/harvester/HarvesterService.java | 18 ++- .../index/settings/IndexSettingsMapper.java | 4 +- 12 files changed, 196 insertions(+), 46 deletions(-) create mode 100644 src/main/java/nl/dtls/fairdatapoint/api/dto/index/entry/IndexEntryUpdateDTO.java create mode 100644 src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntryPermit.java diff --git a/src/main/java/nl/dtls/fairdatapoint/api/controller/index/IndexEntryController.java b/src/main/java/nl/dtls/fairdatapoint/api/controller/index/IndexEntryController.java index e836e0d52..73aa49acf 100644 --- a/src/main/java/nl/dtls/fairdatapoint/api/controller/index/IndexEntryController.java +++ b/src/main/java/nl/dtls/fairdatapoint/api/controller/index/IndexEntryController.java @@ -26,6 +26,7 @@ import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryDTO; import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryDetailDTO; import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryInfoDTO; +import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryUpdateDTO; import nl.dtls.fairdatapoint.database.rdf.repository.exception.MetadataRepositoryException; import nl.dtls.fairdatapoint.service.index.entry.IndexEntryService; import org.eclipse.rdf4j.model.Model; @@ -34,6 +35,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -50,9 +52,10 @@ public class IndexEntryController { @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE) public Page getEntriesPage( Pageable pageable, - @RequestParam(required = false, defaultValue = "") String state + @RequestParam(required = false, defaultValue = "") String state, + @RequestParam(required = false, defaultValue = "accepted") String permit ) { - return service.getEntriesPageDTOs(pageable, state); + return service.getEntriesPageDTOs(pageable, state, permit); } @GetMapping(path = "/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE) @@ -60,6 +63,15 @@ public Optional getEntry(@PathVariable final String uuid) { return service.getEntryDetailDTO(uuid); } + @PutMapping(path = "/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('ADMIN')") + public Optional updateEntry( + @PathVariable final String uuid, + @RequestBody IndexEntryUpdateDTO reqDto + ) { + return service.updateEntry(uuid, reqDto); + } + @GetMapping(path = "/{uuid}/data", produces = "!application/json") public Model getEntryData(@PathVariable final String uuid) throws MetadataRepositoryException { return service.getEntryHarvestedData(uuid); @@ -72,12 +84,16 @@ public void deleteEntry(@PathVariable final String uuid) throws MetadataReposito } @GetMapping(path = "/all", produces = MediaType.APPLICATION_JSON_VALUE) - public List getEntriesAll() { - return service.getAllEntriesAsDTOs(); + public List getEntriesAll( + @RequestParam(required = false, defaultValue = "accepted") String permit + ) { + return service.getAllEntriesAsDTOs(permit); } @GetMapping(path = "/info", produces = MediaType.APPLICATION_JSON_VALUE) - public IndexEntryInfoDTO getEntriesInfo() { - return service.getEntriesInfo(); + public IndexEntryInfoDTO getEntriesInfo( + @RequestParam(required = false, defaultValue = "accepted") String permit + ) { + return service.getEntriesInfo(permit); } } diff --git a/src/main/java/nl/dtls/fairdatapoint/api/dto/index/entry/IndexEntryUpdateDTO.java b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/entry/IndexEntryUpdateDTO.java new file mode 100644 index 000000000..8f677369c --- /dev/null +++ b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/entry/IndexEntryUpdateDTO.java @@ -0,0 +1,16 @@ +package nl.dtls.fairdatapoint.api.dto.index.entry; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryPermit; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +public class IndexEntryUpdateDTO { + + private IndexEntryPermit permit; +} diff --git a/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsDTO.java b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsDTO.java index 2f1ae628d..db47118f8 100644 --- a/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsDTO.java +++ b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsDTO.java @@ -39,6 +39,9 @@ public class IndexSettingsDTO { @NotNull private IndexSettingsPingDTO ping; + @NotNull + private Boolean autoPermit; + @NotNull private Boolean isDefault; } diff --git a/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsUpdateDTO.java b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsUpdateDTO.java index ccd3011b8..cce001e42 100644 --- a/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsUpdateDTO.java +++ b/src/main/java/nl/dtls/fairdatapoint/api/dto/index/settings/IndexSettingsUpdateDTO.java @@ -41,4 +41,7 @@ public class IndexSettingsUpdateDTO { @Valid @NotNull private IndexSettingsPingDTO ping; + + @NotNull + private Boolean autoPermit; } diff --git a/src/main/java/nl/dtls/fairdatapoint/database/mongo/repository/IndexEntryRepository.java b/src/main/java/nl/dtls/fairdatapoint/database/mongo/repository/IndexEntryRepository.java index 3866e4ab0..8de4ea338 100644 --- a/src/main/java/nl/dtls/fairdatapoint/database/mongo/repository/IndexEntryRepository.java +++ b/src/main/java/nl/dtls/fairdatapoint/database/mongo/repository/IndexEntryRepository.java @@ -23,12 +23,14 @@ package nl.dtls.fairdatapoint.database.mongo.repository; import nl.dtls.fairdatapoint.entity.index.entry.IndexEntry; +import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryPermit; import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryState; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.repository.MongoRepository; import java.time.Instant; +import java.util.List; import java.util.Optional; public interface IndexEntryRepository extends MongoRepository { @@ -37,18 +39,26 @@ public interface IndexEntryRepository extends MongoRepository findByClientUrl(String clientUrl); - Page findAllByStateEquals(Pageable pageable, IndexEntryState state); + Page findAllByStateEqualsAndPermitIn( + Pageable pageable, IndexEntryState state, List permits + ); - Page findAllByStateEqualsAndLastRetrievalTimeBefore(Pageable pageable, IndexEntryState state, - Instant when); + Page findAllByStateEqualsAndLastRetrievalTimeBeforeAndPermitIn( + Pageable pageable, IndexEntryState state, Instant when, List permits + ); - Page findAllByStateEqualsAndLastRetrievalTimeAfter(Pageable pageable, IndexEntryState state, - Instant when); + Page findAllByStateEqualsAndLastRetrievalTimeAfterAndPermitIn( + Pageable pageable, IndexEntryState state, Instant when, List permits + ); - long countAllByStateEquals(IndexEntryState state); + long countAllByStateEqualsAndPermitIn(IndexEntryState state, List permits); - long countAllByStateEqualsAndLastRetrievalTimeAfter(IndexEntryState state, Instant when); + long countAllByStateEqualsAndLastRetrievalTimeAfterAndPermitIn( + IndexEntryState state, Instant when, List permits); - long countAllByStateEqualsAndLastRetrievalTimeBefore(IndexEntryState state, Instant when); + long countAllByStateEqualsAndLastRetrievalTimeBeforeAndPermitIn( + IndexEntryState state, Instant when, List permits + ); + Iterable findAllByPermitIn(List permits); } diff --git a/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntry.java b/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntry.java index 9c8a59afb..f3ad655b7 100644 --- a/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntry.java +++ b/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntry.java @@ -48,6 +48,8 @@ public class IndexEntry { private IndexEntryState state = IndexEntryState.Unknown; + private IndexEntryPermit permit = IndexEntryPermit.PENDING; + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) private Instant registrationTime; diff --git a/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntryPermit.java b/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntryPermit.java new file mode 100644 index 000000000..9204a9434 --- /dev/null +++ b/src/main/java/nl/dtls/fairdatapoint/entity/index/entry/IndexEntryPermit.java @@ -0,0 +1,7 @@ +package nl.dtls.fairdatapoint.entity.index.entry; + +public enum IndexEntryPermit { + PENDING, + ACCEPTED, + REJECTED, +} diff --git a/src/main/java/nl/dtls/fairdatapoint/entity/index/settings/IndexSettings.java b/src/main/java/nl/dtls/fairdatapoint/entity/index/settings/IndexSettings.java index ca4a05c5c..9fdca669e 100644 --- a/src/main/java/nl/dtls/fairdatapoint/entity/index/settings/IndexSettings.java +++ b/src/main/java/nl/dtls/fairdatapoint/entity/index/settings/IndexSettings.java @@ -46,10 +46,14 @@ public class IndexSettings { @NotNull private IndexSettingsPing ping; + @NotNull + private Boolean autoPermit; + public static IndexSettings getDefault() { final IndexSettings settings = new IndexSettings(); settings.setPing(IndexSettingsPing.getDefault()); settings.setRetrieval(IndexSettingsRetrieval.getDefault()); + settings.setAutoPermit(true); return settings; } diff --git a/src/main/java/nl/dtls/fairdatapoint/entity/user/User.java b/src/main/java/nl/dtls/fairdatapoint/entity/user/User.java index 7f1ba3386..7a4f4b958 100644 --- a/src/main/java/nl/dtls/fairdatapoint/entity/user/User.java +++ b/src/main/java/nl/dtls/fairdatapoint/entity/user/User.java @@ -61,4 +61,8 @@ public User( this.passwordHash = passwordHash; this.role = role; } + + public boolean isAdmin() { + return role.equals(UserRole.ADMIN); + } } diff --git a/src/main/java/nl/dtls/fairdatapoint/service/index/entry/IndexEntryService.java b/src/main/java/nl/dtls/fairdatapoint/service/index/entry/IndexEntryService.java index dc6787bdd..fb6c4065c 100644 --- a/src/main/java/nl/dtls/fairdatapoint/service/index/entry/IndexEntryService.java +++ b/src/main/java/nl/dtls/fairdatapoint/service/index/entry/IndexEntryService.java @@ -24,21 +24,21 @@ import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; -import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryDTO; -import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryDetailDTO; -import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryInfoDTO; -import nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryStateDTO; +import nl.dtls.fairdatapoint.api.dto.index.entry.*; import nl.dtls.fairdatapoint.api.dto.index.ping.PingDTO; import nl.dtls.fairdatapoint.database.mongo.repository.IndexEntryRepository; import nl.dtls.fairdatapoint.database.rdf.repository.exception.MetadataRepositoryException; import nl.dtls.fairdatapoint.database.rdf.repository.generic.GenericMetadataRepository; import nl.dtls.fairdatapoint.entity.exception.ResourceNotFoundException; import nl.dtls.fairdatapoint.entity.index.entry.IndexEntry; +import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryPermit; import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryState; +import nl.dtls.fairdatapoint.entity.index.settings.IndexSettings; import nl.dtls.fairdatapoint.service.index.common.RequiredEnabledIndexFeature; import nl.dtls.fairdatapoint.service.index.event.EventService; import nl.dtls.fairdatapoint.service.index.harvester.HarvesterService; import nl.dtls.fairdatapoint.service.index.settings.IndexSettingsService; +import nl.dtls.fairdatapoint.service.user.CurrentUserService; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.impl.TreeModel; import org.springframework.beans.factory.annotation.Autowired; @@ -50,6 +50,7 @@ import java.time.Instant; import java.util.*; +import java.util.stream.Collectors; import java.util.stream.StreamSupport; import static nl.dtls.fairdatapoint.api.dto.index.entry.IndexEntryStateDTO.*; @@ -80,47 +81,85 @@ public class IndexEntryService { @Autowired private HarvesterService harvesterService; + @Autowired + private CurrentUserService currentUserService; + @RequiredEnabledIndexFeature public Iterable getAllEntries() { return repository.findAll(); } @RequiredEnabledIndexFeature - public List getAllEntriesAsDTOs() { + public Iterable getAllEntries(String permitQuery) { + final List permits = getPermits(permitQuery); + return repository.findAllByPermitIn(permits); + } + + @RequiredEnabledIndexFeature + public List getAllEntriesAsDTOs(String permitQuery) { final Instant validThreshold = getValidThreshold(); return StreamSupport - .stream(getAllEntries().spliterator(), true) + .stream(getAllEntries(permitQuery).spliterator(), true) .map(entry -> mapper.toDTO(entry, validThreshold)) .toList(); } @RequiredEnabledIndexFeature - public Page getEntriesPage(Pageable pageable, String state) { + public Page getEntriesPage(Pageable pageable, String state, String permitQuery) { + return getEntriesPageWithPermits(pageable, state, getPermits(permitQuery)); + } + + private List getPermits(String permitQuery) { + if (currentUserService.getCurrentUser().isEmpty() || + !currentUserService.getCurrentUser().get().isAdmin()) { + // not admin -> can use just ACCEPTED entries + return List.of(IndexEntryPermit.ACCEPTED); + } + Set permitStrings = Arrays + .stream(permitQuery.split(",")) + .map(String::toLowerCase) + .collect(Collectors.toSet()); + return Arrays + .stream(IndexEntryPermit.values()) + .filter(permitValue -> permitStrings.contains(permitValue.name())) + .toList(); + } + + private Page getEntriesPageWithPermits(Pageable pageable, String state, + List permits) { final Instant validThreshold = getValidThreshold(); if (state.equalsIgnoreCase(ACTIVE.name())) { - return repository.findAllByStateEqualsAndLastRetrievalTimeAfter(pageable, - IndexEntryState.Valid, validThreshold); + return repository.findAllByStateEqualsAndLastRetrievalTimeAfterAndPermitIn( + pageable, IndexEntryState.Valid, validThreshold, permits + ); } if (state.equalsIgnoreCase(IndexEntryStateDTO.INACTIVE.name())) { - return repository.findAllByStateEqualsAndLastRetrievalTimeBefore(pageable, - IndexEntryState.Valid, validThreshold); + return repository.findAllByStateEqualsAndLastRetrievalTimeBeforeAndPermitIn( + pageable, IndexEntryState.Valid, validThreshold, permits + ); } if (state.equalsIgnoreCase(IndexEntryStateDTO.UNREACHABLE.name())) { - return repository.findAllByStateEquals(pageable, IndexEntryState.Unreachable); + return repository.findAllByStateEqualsAndPermitIn( + pageable, IndexEntryState.Unreachable, permits + ); } if (state.equalsIgnoreCase(IndexEntryStateDTO.INVALID.name())) { - return repository.findAllByStateEquals(pageable, IndexEntryState.Invalid); + return repository.findAllByStateEqualsAndPermitIn( + pageable, IndexEntryState.Invalid, permits + ); } if (state.equalsIgnoreCase(IndexEntryStateDTO.UNKNOWN.name())) { - return repository.findAllByStateEquals(pageable, IndexEntryState.Unknown); + return repository.findAllByStateEqualsAndPermitIn( + pageable, IndexEntryState.Unknown, permits + ); } return repository.findAll(pageable); } @RequiredEnabledIndexFeature - public Page getEntriesPageDTOs(Pageable pageable, String state) { + public Page getEntriesPageDTOs(Pageable pageable, String state, String permitQuery) { final Instant validThreshold = getValidThreshold(); - return getEntriesPage(pageable, state) + return getEntriesPage(pageable, state, permitQuery) .map(entry -> mapper.toDTO(entry, validThreshold)); } @@ -141,20 +180,35 @@ public Optional getEntryDetailDTO(String uuid) { } @RequiredEnabledIndexFeature - public IndexEntryInfoDTO getEntriesInfo() { + public IndexEntryInfoDTO getEntriesInfo(String permitQuery) { + final List permits = getPermits(permitQuery); final Instant validThreshold = getValidThreshold(); final Map entriesCount = new HashMap<>(); entriesCount.put("ALL", repository.count()); - entriesCount.put(UNKNOWN.name(), repository.countAllByStateEquals(IndexEntryState.Unknown)); - entriesCount.put(ACTIVE.name(), - repository.countAllByStateEqualsAndLastRetrievalTimeAfter( - IndexEntryState.Valid, validThreshold)); - entriesCount.put(INACTIVE.name(), - repository.countAllByStateEqualsAndLastRetrievalTimeBefore( - IndexEntryState.Valid, validThreshold)); - entriesCount.put(UNREACHABLE.name(), repository.countAllByStateEquals( - IndexEntryState.Unreachable)); - entriesCount.put(INVALID.name(), repository.countAllByStateEquals(IndexEntryState.Invalid)); + entriesCount.put( + UNKNOWN.name(), + repository.countAllByStateEqualsAndPermitIn(IndexEntryState.Unknown, permits) + ); + entriesCount.put( + ACTIVE.name(), + repository.countAllByStateEqualsAndLastRetrievalTimeAfterAndPermitIn( + IndexEntryState.Valid, validThreshold, permits + ) + ); + entriesCount.put( + INACTIVE.name(), + repository.countAllByStateEqualsAndLastRetrievalTimeBeforeAndPermitIn( + IndexEntryState.Valid, validThreshold, permits + ) + ); + entriesCount.put( + UNREACHABLE.name(), + repository.countAllByStateEqualsAndPermitIn(IndexEntryState.Unreachable, permits) + ); + entriesCount.put( + INVALID.name(), + repository.countAllByStateEqualsAndPermitIn(IndexEntryState.Invalid, permits) + ); return new IndexEntryInfoDTO(entriesCount); } @@ -163,6 +217,7 @@ public IndexEntry storeEntry(@Valid PingDTO pingDTO) { final String clientUrl = pingDTO.getClientUrl(); final Optional entity = repository.findByClientUrl(clientUrl); final Instant now = Instant.now(); + final IndexSettings settings = indexSettingsService.getOrDefaults(); final IndexEntry entry; if (entity.isPresent()) { @@ -175,6 +230,11 @@ public IndexEntry storeEntry(@Valid PingDTO pingDTO) { entry.setUuid(UUID.randomUUID().toString()); entry.setClientUrl(clientUrl); entry.setRegistrationTime(now); + if (settings.getAutoPermit()) { + entry.setPermit(IndexEntryPermit.ACCEPTED); + } else { + entry.setPermit(IndexEntryPermit.PENDING); + } } entry.setModificationTime(now); @@ -204,4 +264,17 @@ public Model getEntryHarvestedData(String uuid) throws MetadataRepositoryExcepti model.addAll(genericMetadataRepository.find(i(entry.getClientUrl()))); return model; } + + public Optional updateEntry(String uuid, IndexEntryUpdateDTO reqDto) { + final Optional entry = getEntry(uuid); + if (entry.isPresent()) { + entry.get().setPermit(reqDto.getPermit()); + repository.save(entry.get()); + } + return getEntryDetailDTO(uuid); + } + + public Optional getEntryByClientUrl(String clientUrl) { + return repository.findByClientUrl(clientUrl); + } } diff --git a/src/main/java/nl/dtls/fairdatapoint/service/index/harvester/HarvesterService.java b/src/main/java/nl/dtls/fairdatapoint/service/index/harvester/HarvesterService.java index f30641b3f..6986b10c3 100644 --- a/src/main/java/nl/dtls/fairdatapoint/service/index/harvester/HarvesterService.java +++ b/src/main/java/nl/dtls/fairdatapoint/service/index/harvester/HarvesterService.java @@ -25,6 +25,9 @@ import lombok.extern.slf4j.Slf4j; import nl.dtls.fairdatapoint.database.rdf.repository.exception.MetadataRepositoryException; import nl.dtls.fairdatapoint.database.rdf.repository.generic.GenericMetadataRepository; +import nl.dtls.fairdatapoint.entity.index.entry.IndexEntry; +import nl.dtls.fairdatapoint.entity.index.entry.IndexEntryPermit; +import nl.dtls.fairdatapoint.service.index.entry.IndexEntryService; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; @@ -40,10 +43,7 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static java.util.Optional.ofNullable; import static nl.dtls.fairdatapoint.entity.metadata.MetadataGetter.getChildren; @@ -63,6 +63,9 @@ public class HarvesterService { @Autowired private GenericMetadataRepository genericMetadataRepository; + @Autowired + private IndexEntryService indexEntryService; + @Autowired private RestTemplate restTemplate; @@ -72,6 +75,13 @@ public void deleteHarvestedData(String clientUrl) throws MetadataRepositoryExcep @Async public void harvest(String clientUrl) throws MetadataRepositoryException { + log.info("Checking index entry for '{}'", clientUrl); + final Optional indexEntry = indexEntryService.getEntryByClientUrl(clientUrl); + if (indexEntry.isEmpty() || indexEntry.get().getPermit() != IndexEntryPermit.ACCEPTED) { + log.info("Skipping (not ACCEPTED entry) '{}'", clientUrl); + return; + } + log.info("Start harvesting '{}'", clientUrl); // 0. Remove previously harvested metadata diff --git a/src/main/java/nl/dtls/fairdatapoint/service/index/settings/IndexSettingsMapper.java b/src/main/java/nl/dtls/fairdatapoint/service/index/settings/IndexSettingsMapper.java index 67f4eaf18..63edd1e7c 100644 --- a/src/main/java/nl/dtls/fairdatapoint/service/index/settings/IndexSettingsMapper.java +++ b/src/main/java/nl/dtls/fairdatapoint/service/index/settings/IndexSettingsMapper.java @@ -58,6 +58,7 @@ public IndexSettingsDTO toDTO(IndexSettings indexSettings) { return new IndexSettingsDTO( toRetrievalDTO(indexSettings.getRetrieval()), toPingDTO(indexSettings.getPing()), + indexSettings.getAutoPermit(), indexSettings.equals(IndexSettings.getDefault()) ); } @@ -65,7 +66,8 @@ public IndexSettingsDTO toDTO(IndexSettings indexSettings) { public IndexSettingsUpdateDTO toUpdateDTO(IndexSettings indexSettings) { return new IndexSettingsUpdateDTO( toRetrievalDTO(indexSettings.getRetrieval()), - toPingDTO(indexSettings.getPing()) + toPingDTO(indexSettings.getPing()), + indexSettings.getAutoPermit() ); }