Project

General

Profile

1
package eu.dnetlib.administration.uis.modules.datasources;
2

    
3
import java.util.List;
4
import java.util.Map;
5

    
6
import org.apache.commons.lang3.StringUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.cache.annotation.CacheEvict;
11
import org.springframework.cache.annotation.Cacheable;
12
import org.springframework.stereotype.Controller;
13
import org.springframework.web.bind.annotation.RequestMapping;
14
import org.springframework.web.bind.annotation.RequestParam;
15
import org.springframework.web.bind.annotation.ResponseBody;
16

    
17
import com.google.gson.Gson;
18

    
19
import eu.dnetlib.administration.uis.functions.ProtocolParameterValue;
20
import eu.dnetlib.administration.uis.utils.ProtocolParametersInspector;
21
import eu.dnetlib.clients.dsManager.BrowseTerm;
22
import eu.dnetlib.clients.dsManager.DatasourcePoint;
23
import eu.dnetlib.clients.dsManager.DsManagerClient;
24
import eu.dnetlib.clients.dsManager.IfaceDesc;
25
import eu.dnetlib.clients.dsManager.SearchInterfacesEntry;
26
import eu.dnetlib.clients.dsManager.SimpleDatasourceDesc;
27
import eu.dnetlib.clients.msro.MsroClient;
28
import eu.dnetlib.exceptions.DnetGenericException;
29

    
30
@Controller
31
public class RepoInternalController {
32

    
33
	private static final Log log = LogFactory.getLog(RepoInternalController.class);
34

    
35
	@Autowired
36
	private DsManagerClient dsManager;
37

    
38
	@Autowired
39
	private ProtocolParametersInspector ppInspector;
40

    
41
	@Autowired
42
	private MsroClient msroClient;
43

    
44
	@RequestMapping(value = "/ui/browseRepoField.do")
45
	public @ResponseBody List<BrowseTerm> browseRepoField(@RequestParam(value = "field", required = true) final String field) throws Exception {
46
		return dsManager.browseField(field);
47
	}
48

    
49
	@Cacheable("listApis")
50
	@RequestMapping(value = "/ui/listApis.do")
51
	public @ResponseBody List<SearchInterfacesEntry> listApis(
52
			@RequestParam(value = "param", required = true) final String param,
53
			@RequestParam(value = "value", required = true) final String value) throws Exception {
54
		return dsManager.searchInterface(param, value);
55
	}
56

    
57
	@CacheEvict(value = "listApis", allEntries = true, beforeInvocation = true)
58
	@RequestMapping(value = "/ui/refreshApis.do")
59
	public @ResponseBody List<SearchInterfacesEntry> refreshApis(
60
			@RequestParam(value = "param", required = true) final String param,
61
			@RequestParam(value = "value", required = true) final String value) throws Exception {
62
		return listApis(param, value);
63
	}
64

    
65
	@RequestMapping(value = "/ui/listRepositories.map")
66
	public @ResponseBody List<DatasourcePoint> listRepositories_asMap() throws Exception {
67
		return dsManager.getRepositoryMap();
68
	}
69

    
70
	@RequestMapping(value = "/ui/listRepositories.json")
71
	public @ResponseBody List<SimpleDatasourceDesc> listRepositories(@RequestParam(value = "type", required = true) final String type) throws Exception {
72
		return dsManager.simpleListDatasourcesByType(type);
73
	}
74

    
75
	@SuppressWarnings("unchecked")
76
	@RequestMapping("/ui/repo/repoApi.update")
77
	public @ResponseBody boolean updateRepoApi(
78
			@RequestParam(value = "id", required = true) final String repoId,
79
			@RequestParam(value = "iface", required = true) final String ifaceId,
80
			@RequestParam(value = "accessParams", required = true) final String accessParamsJson) throws Exception {
81
		if (!StringUtils.isEmpty(accessParamsJson)) {
82
			dsManager.bulkUpdateApiAccessParams(repoId, ifaceId, new Gson().fromJson(accessParamsJson, Map.class));
83
		}
84
		return true;
85
	}
86

    
87
	@RequestMapping("/ui/repo/repoApiCompliance.update")
88
	@CacheEvict(value = "listApis", allEntries = true)
89
	public @ResponseBody boolean updateRepoApiCompliance(@RequestParam(value = "id", required = true) final String repoId,
90
			@RequestParam(value = "iface", required = true) final String ifaceId,
91
			@RequestParam(value = "compliance", required = true) final String compliance) throws Exception {
92

    
93
		log.debug("SET COMPLIANCE TO " + compliance);
94

    
95
		dsManager.overrideCompliance(repoId, ifaceId, compliance);
96

    
97
		return true;
98
	}
99

    
100
	@RequestMapping("/ui/repo/repoApiCompliance.reset")
101
	@CacheEvict(value = "listApis", allEntries = true)
102
	public @ResponseBody boolean resetRepoApiCompliance(@RequestParam(value = "id", required = true) final String repoId,
103
			@RequestParam(value = "iface", required = true) final String ifaceId) throws Exception {
104

    
105
		log.debug("RESET COMPLIANCE");
106

    
107
		dsManager.overrideCompliance(repoId, ifaceId, null);
108

    
109
		return true;
110
	}
111

    
112
	@RequestMapping("/ui/repoApi.new")
113
	public @ResponseBody boolean addRepoApi(@RequestParam(value = "repoId", required = true) final String repoId,
114
			@RequestParam(value = "iface", required = true) final String ifaceJson) throws DnetGenericException {
115
		final IfaceDesc iface = new Gson().fromJson(ifaceJson, IfaceDesc.class);
116

    
117
		log.info("Adding interface " + iface.getId() + " to repository " + repoId);
118

    
119
		return dsManager.addInterface(repoId, iface);
120
	}
121

    
122
	@RequestMapping("/ui/listValidValuesForParam.do")
123
	public @ResponseBody List<ProtocolParameterValue> listValidValuesForParam(
124
			@RequestParam(value = "protocol", required = true) final String protocol,
125
			@RequestParam(value = "param", required = true) final String param,
126
			@RequestParam(value = "baseUrl", required = true) final String baseUrl) throws DnetGenericException {
127
		return ppInspector.listValidValuesForParam(protocol, param, baseUrl);
128
	}
129
}
(8-8/10)