dnet-docker/dnet-app/apps/dnet-datasource-manager/src/main/java/eu/dnetlib/services/dsm/controller/OtherController.java

64 lines
2.2 KiB
Java
Raw Normal View History

2023-10-25 14:13:18 +02:00
package eu.dnetlib.services.dsm.controller;
2023-11-23 14:19:22 +01:00
import java.util.Arrays;
2023-10-25 14:13:18 +02:00
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
2024-01-25 11:45:32 +01:00
import org.springframework.beans.factory.annotation.Value;
2023-10-25 14:13:18 +02:00
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.common.clients.DnetServiceClientFactory;
import eu.dnetlib.common.clients.VocabularyClient;
2023-11-23 14:19:22 +01:00
import eu.dnetlib.domain.common.KeyValue;
2023-10-25 14:13:18 +02:00
import eu.dnetlib.domain.vocabulary.VocabularyTerm;
import eu.dnetlib.services.dsm.service.ProtocolService;
2023-11-23 14:19:22 +01:00
import eu.dnetlib.services.dsm.utils.DsmBrowsableFields;
2023-10-25 14:13:18 +02:00
import io.swagger.v3.oas.annotations.tags.Tag;
@RestController
2023-11-15 14:56:36 +01:00
@RequestMapping("/api")
2023-10-25 14:13:18 +02:00
@Tag(name = "OpenAIRE DSM API - other methods", description = "the OpenAIRE Datasource Manager API - other methods")
public class OtherController extends AbstractDsmController {
@Autowired
private DnetServiceClientFactory clientFactory;
@Autowired
private ProtocolService protocolService;
2024-01-25 11:45:32 +01:00
@Value("${dsm.compatibilityLevels.vocabulary}")
private String compatibilityLevelsVocabulary;
@Value("${dsm.contentDescTypes.vocabulary}")
private String contentDescTypesVocabulary;
2023-10-25 14:13:18 +02:00
@GetMapping("/conf")
public Map<String, Iterable<?>> configuration() {
final Map<String, Iterable<?>> map = new LinkedHashMap<>();
2024-01-25 11:45:32 +01:00
final VocabularyClient vocabularyClient = this.clientFactory.getClient(VocabularyClient.class);
2023-10-25 14:13:18 +02:00
2023-11-23 14:19:22 +01:00
map.put("browsableFields", Arrays.stream(DsmBrowsableFields.values())
.map(f -> new KeyValue<>(f.name(), f.desc))
.collect(Collectors.toList()));
2024-01-25 11:45:32 +01:00
map.put("protocols", this.protocolService.listProtocols());
map.put("compatibilityLevels", vocabularyClient.listTerms(this.compatibilityLevelsVocabulary)
2023-10-25 14:13:18 +02:00
.stream()
.map(VocabularyTerm::getCode)
.sorted()
.collect(Collectors.toList()));
2024-01-25 11:45:32 +01:00
map.put("contentDescTypes", vocabularyClient.listTerms(this.contentDescTypesVocabulary)
2023-10-25 14:13:18 +02:00
.stream()
.map(VocabularyTerm::getCode)
.sorted()
.collect(Collectors.toList()));
return map;
}
}