Project

General

Profile

1
package eu.dnetlib.organizations.controller;
2

    
3
import java.security.Principal;
4
import java.util.Arrays;
5
import java.util.List;
6

    
7
import org.apache.commons.lang3.StringUtils;
8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.data.domain.Page;
10
import org.springframework.data.domain.PageRequest;
11
import org.springframework.web.bind.annotation.PathVariable;
12
import org.springframework.web.bind.annotation.RequestBody;
13
import org.springframework.web.bind.annotation.RequestMapping;
14
import org.springframework.web.bind.annotation.RequestMethod;
15
import org.springframework.web.bind.annotation.RequestParam;
16
import org.springframework.web.bind.annotation.RestController;
17

    
18
import eu.dnetlib.organizations.model.OpenaireSimRel;
19
import eu.dnetlib.organizations.model.utils.BrowseEntry;
20
import eu.dnetlib.organizations.model.utils.RelationByOrg;
21
import eu.dnetlib.organizations.model.view.OrganizationSimpleView;
22
import eu.dnetlib.organizations.model.view.OrganizationView;
23
import eu.dnetlib.organizations.repository.OpenaireSimRelRepository;
24
import eu.dnetlib.organizations.repository.readonly.OrganizationSimpleViewRepository;
25
import eu.dnetlib.organizations.repository.readonly.OrganizationViewRepository;
26
import eu.dnetlib.organizations.utils.DatabaseUtils;
27

    
28
@RestController
29
@RequestMapping("/api/organizations")
30
public class OrganizationController {
31

    
32
	@Autowired
33
	private OrganizationViewRepository organizationViewRepository;
34
	@Autowired
35
	private OrganizationSimpleViewRepository organizationSimpleViewRepository;
36
	@Autowired
37
	private OpenaireSimRelRepository openaireSimRelRepository;
38
	@Autowired
39
	private DatabaseUtils databaseUtils;
40

    
41
	@RequestMapping(value = "/save", method = RequestMethod.POST)
42
	public List<String> save(@RequestBody final OrganizationView org, final Principal principal) {
43
		final String user = principal != null ? principal.getName() : "anonymous";
44
		final String orgId = databaseUtils.insertOrUpdateOrganization(org, user, StringUtils.isNotBlank(org.getId()));
45
		return Arrays.asList(orgId);
46
	}
47

    
48
	@RequestMapping(value = "/get", method = RequestMethod.GET)
49
	public OrganizationView findById(@RequestParam final String id) {
50
		return organizationViewRepository.findById(id).get();
51
	}
52

    
53
	@RequestMapping(value = "/relations", method = RequestMethod.GET)
54
	public List<RelationByOrg> findRelationsById(@RequestParam final String id) {
55
		return organizationViewRepository.findRelations(id);
56
	}
57

    
58
	@RequestMapping(value = "/similarities", method = RequestMethod.GET)
59
	public List<OpenaireSimRel> findSimilaritiesById(@RequestParam final String id) {
60
		return openaireSimRelRepository.findByLocalId(id);
61
	}
62

    
63
	@RequestMapping(value = "/search/{page}/{size}", method = RequestMethod.GET)
64
	public Page<OrganizationSimpleView> search(@PathVariable final int page, @PathVariable final int size, @RequestParam final String q) {
65
		return organizationSimpleViewRepository.findByNameContainingIgnoreCase(q, PageRequest.of(page, size));
66
	}
67

    
68
	@RequestMapping(value = "/byCountry/{code}/{page}/{size}", method = RequestMethod.GET)
69
	public Page<OrganizationSimpleView> findByCountry(@PathVariable final String code, @PathVariable final int page, @PathVariable final int size) {
70
		return organizationSimpleViewRepository.findByCountry(code, PageRequest.of(page, size));
71
	}
72

    
73
	@RequestMapping(value = "/byType/{type}/{page}/{size}", method = RequestMethod.GET)
74
	public Page<OrganizationSimpleView> findByType(@PathVariable final String type, @PathVariable final int page, @PathVariable final int size) {
75
		return organizationSimpleViewRepository.findByType(type, PageRequest.of(page, size));
76
	}
77

    
78
	@RequestMapping(value = "/browse/countries", method = RequestMethod.GET)
79
	public List<BrowseEntry> browseCountries() {
80
		return organizationSimpleViewRepository.browseCountries();
81
	}
82

    
83
	@RequestMapping(value = "/browse/types", method = RequestMethod.GET)
84
	public List<BrowseEntry> browseOrganizationTypes() {
85
		return organizationSimpleViewRepository.browseTypes();
86
	}
87
}
(1-1/3)