Project

General

Profile

1
package eu.dnetlib.organizations.controller;
2

    
3
import java.util.Arrays;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.stream.Collectors;
8

    
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.security.core.Authentication;
11
import org.springframework.web.bind.annotation.GetMapping;
12
import org.springframework.web.bind.annotation.RestController;
13

    
14
import eu.dnetlib.organizations.utils.DatabaseUtils;
15
import eu.dnetlib.organizations.utils.DatabaseUtils.VocabularyTable;
16
import eu.dnetlib.organizations.utils.RelationType;
17
import eu.dnetlib.organizations.utils.SimilarityType;
18

    
19
@RestController
20
public class VocabulariesController {
21

    
22
	@Autowired
23
	private DatabaseUtils databaseUtils;
24

    
25
	@GetMapping({ "/api/vocabularies", "/public_api/vocabularies" })
26
	public Map<String, List<String>> ListVocabularies(final Authentication authentication) {
27
		final Map<String, List<String>> vocs = new HashMap<>();
28
		vocs.put("orgTypes", databaseUtils.listValuesOfVocabularyTable(VocabularyTable.org_types));
29
		vocs.put("idTypes", databaseUtils.listValuesOfVocabularyTable(VocabularyTable.id_types));
30
		vocs.put("languages", databaseUtils.listValuesOfVocabularyTable(VocabularyTable.languages));
31

    
32
		vocs.put("relTypes", Arrays.stream(RelationType.values()).map(Object::toString).collect(Collectors.toList()));
33
		vocs.put("similaritiesType", Arrays.stream(SimilarityType.values()).map(Object::toString).collect(Collectors.toList()));
34

    
35
		if (UserInfo.isSimpleUser(authentication)) {
36
			vocs.put("countries", databaseUtils.listCountriesForUser(authentication.getName()));
37
		} else {
38
			vocs.put("countries", databaseUtils.listValuesOfVocabularyTable(VocabularyTable.countries));
39
		}
40

    
41
		return vocs;
42
	}
43

    
44
}
(5-5/5)