Add repository snippet methods
This commit is contained in:
parent
600965056b
commit
54f0546fe0
|
@ -2,15 +2,15 @@ package eu.dnetlib.repo.manager.service.controllers;
|
||||||
|
|
||||||
import eu.dnetlib.domain.data.Repository;
|
import eu.dnetlib.domain.data.Repository;
|
||||||
import eu.dnetlib.domain.data.RepositoryInterface;
|
import eu.dnetlib.domain.data.RepositoryInterface;
|
||||||
|
import eu.dnetlib.repo.manager.service.domain.RepositorySnippet;
|
||||||
import eu.dnetlib.repo.manager.service.exception.ResourceNotFoundException;
|
import eu.dnetlib.repo.manager.service.exception.ResourceNotFoundException;
|
||||||
import eu.dnetlib.repo.manager.shared.*;
|
import eu.dnetlib.repo.manager.shared.*;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.security.access.prepost.PostAuthorize;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public interface RepositoryApi {
|
||||||
@RequestMapping(value = "/getRepositoriesByCountry/{country}/{mode}", method = RequestMethod.GET,
|
@RequestMapping(value = "/getRepositoriesByCountry/{country}/{mode}", method = RequestMethod.GET,
|
||||||
produces = MediaType.APPLICATION_JSON_VALUE)
|
produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
List<Repository> getRepositoriesByCountry(String country, String mode, Boolean managed) throws JSONException;
|
List<RepositorySnippet> getRepositoriesByCountry(String country, String mode, Boolean managed) throws JSONException, IOException;
|
||||||
|
|
||||||
@RequestMapping(value = "/getRepositoriesOfUser/{userEmail}/{page}/{size}",method = RequestMethod.GET,
|
@RequestMapping(value = "/getRepositoriesOfUser/{userEmail}/{page}/{size}",method = RequestMethod.GET,
|
||||||
produces = MediaType.APPLICATION_JSON_VALUE)
|
produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
|
|
@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import eu.dnetlib.domain.data.Repository;
|
import eu.dnetlib.domain.data.Repository;
|
||||||
import eu.dnetlib.domain.data.RepositoryInterface;
|
import eu.dnetlib.domain.data.RepositoryInterface;
|
||||||
import eu.dnetlib.domain.enabling.Vocabulary;
|
import eu.dnetlib.domain.enabling.Vocabulary;
|
||||||
|
import eu.dnetlib.repo.manager.service.domain.RepositorySnippet;
|
||||||
import eu.dnetlib.repo.manager.service.domain.RequestFilter;
|
import eu.dnetlib.repo.manager.service.domain.RequestFilter;
|
||||||
import eu.dnetlib.repo.manager.service.exception.ResourceNotFoundException;
|
import eu.dnetlib.repo.manager.service.exception.ResourceNotFoundException;
|
||||||
import eu.dnetlib.repo.manager.service.utils.Converter;
|
import eu.dnetlib.repo.manager.service.utils.Converter;
|
||||||
|
@ -35,6 +36,7 @@ import org.springframework.web.util.UriComponents;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.io.IOException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -143,16 +145,16 @@ public class RepositoryApiImpl implements RepositoryApi {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Repository> getRepositoriesByCountry(@PathVariable("country") String country,
|
public List<RepositorySnippet> getRepositoriesByCountry(@PathVariable("country") String country,
|
||||||
@PathVariable("mode") String mode,
|
@PathVariable("mode") String mode,
|
||||||
@RequestParam(value = "managed",required=false) Boolean managed) throws JSONException {
|
@RequestParam(value = "managed",required=false) Boolean managed) throws JSONException, IOException {
|
||||||
|
|
||||||
LOGGER.debug("Getting repositories by country!");
|
LOGGER.debug("Getting repositories by country!");
|
||||||
int page = 0;
|
int page = 0;
|
||||||
int size = 100;
|
int size = 100;
|
||||||
List<Repository> resultSet = new ArrayList<>();
|
List<RepositorySnippet> resultSet = new ArrayList<>();
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
String countryCode = countriesMap.get(country);
|
|
||||||
String filterKey = "UNKNOWN";
|
String filterKey = "UNKNOWN";
|
||||||
if (mode.equalsIgnoreCase("opendoar"))
|
if (mode.equalsIgnoreCase("opendoar"))
|
||||||
filterKey = "openaire____::opendoar";
|
filterKey = "openaire____::opendoar";
|
||||||
|
@ -160,30 +162,29 @@ public class RepositoryApiImpl implements RepositoryApi {
|
||||||
filterKey = "openaire____::re3data";
|
filterKey = "openaire____::re3data";
|
||||||
|
|
||||||
|
|
||||||
LOGGER.debug("Country code equals : " + countryCode);
|
LOGGER.debug("Country code equals : " + country);
|
||||||
LOGGER.debug("Filter mode equals : " + filterKey);
|
LOGGER.debug("Filter mode equals : " + filterKey);
|
||||||
|
|
||||||
UriComponents uriComponents = searchDatasource(String.valueOf(page),String.valueOf(size));
|
UriComponents uriComponents = searchSnipperDatasource(String.valueOf(page),String.valueOf(size));
|
||||||
RequestFilter requestFilter = new RequestFilter();
|
RequestFilter requestFilter = new RequestFilter();
|
||||||
requestFilter.setCountry(countryCode);
|
requestFilter.setCountry(country);
|
||||||
|
requestFilter.setCollectedfrom(filterKey);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
String rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
String rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
||||||
JSONArray jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
JSONArray jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
||||||
while (jsonArray.length() > 0 ) {
|
while (jsonArray.length() > 0 ) {
|
||||||
resultSet.addAll(this.getRepositoriesByMode(filterKey, Converter.jsonToRepositoryList(new JSONObject(rs))));
|
resultSet.addAll(mapper.readValue(String.valueOf(jsonArray),
|
||||||
|
mapper.getTypeFactory().constructCollectionType(List.class, RepositorySnippet.class)));
|
||||||
page += 1;
|
page += 1;
|
||||||
uriComponents = searchDatasource(String.valueOf(page),String.valueOf(size));
|
uriComponents = searchSnipperDatasource(String.valueOf(page),String.valueOf(size));
|
||||||
rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
||||||
jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
||||||
}
|
}
|
||||||
for (Repository r : resultSet)
|
|
||||||
this.updateRepositoryInfo(r);
|
|
||||||
|
|
||||||
return resultSet;
|
return resultSet;
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
LOGGER.debug("Exception on getRepositoriesByCountry" , e);
|
LOGGER.debug("Exception on getRepositoriesByCountry" , e);
|
||||||
emailUtils.reportException(e);
|
// emailUtils.reportException(e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,7 +795,17 @@ public class RepositoryApiImpl implements RepositoryApi {
|
||||||
return UriComponentsBuilder
|
return UriComponentsBuilder
|
||||||
.fromHttpUrl(baseAddress + "/ds/search/")
|
.fromHttpUrl(baseAddress + "/ds/search/")
|
||||||
.path("/{page}/{size}/")
|
.path("/{page}/{size}/")
|
||||||
.queryParam("requestSortBy","id")
|
.queryParam("requestSortBy","officialname")
|
||||||
|
.queryParam("order","ASCENDING")
|
||||||
|
.build().expand(page, size).encode();
|
||||||
|
}
|
||||||
|
|
||||||
|
private UriComponents searchSnipperDatasource(String page,String size){
|
||||||
|
|
||||||
|
return UriComponentsBuilder
|
||||||
|
.fromHttpUrl(baseAddress + "/ds/searchsnippet/")
|
||||||
|
.path("/{page}/{size}/")
|
||||||
|
.queryParam("requestSortBy","officialname")
|
||||||
.queryParam("order","ASCENDING")
|
.queryParam("order","ASCENDING")
|
||||||
.build().expand(page, size).encode();
|
.build().expand(page, size).encode();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
package eu.dnetlib.repo.manager.service.domain;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||||
|
|
||||||
|
public class RepositorySnippet implements IsSerializable {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String officialname;
|
||||||
|
private String englishname;
|
||||||
|
private String websiteurl;
|
||||||
|
private String registeredby;
|
||||||
|
|
||||||
|
|
||||||
|
public RepositorySnippet() {}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOfficialname() {
|
||||||
|
return officialname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOfficialname(String officialname) {
|
||||||
|
this.officialname = officialname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEnglishname() {
|
||||||
|
return englishname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnglishname(String englishname) {
|
||||||
|
this.englishname = englishname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWebsiteurl() {
|
||||||
|
return websiteurl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWebsiteurl(String websiteurl) {
|
||||||
|
this.websiteurl = websiteurl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegisteredby() {
|
||||||
|
return registeredby;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegisteredby(String registeredby) {
|
||||||
|
this.registeredby = registeredby;
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ public class RequestFilter{
|
||||||
private String country = null;
|
private String country = null;
|
||||||
private String id = null;
|
private String id = null;
|
||||||
private String officialname = null;
|
private String officialname = null;
|
||||||
|
private String collectedfrom = null;
|
||||||
|
|
||||||
|
|
||||||
public RequestFilter() {
|
public RequestFilter() {
|
||||||
|
@ -55,4 +56,12 @@ public class RequestFilter{
|
||||||
public void setOfficialname(String officialname) {
|
public void setOfficialname(String officialname) {
|
||||||
this.officialname = officialname;
|
this.officialname = officialname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCollectedfrom() {
|
||||||
|
return collectedfrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollectedfrom(String collectedfrom) {
|
||||||
|
this.collectedfrom = collectedfrom;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.dnetlib.repo.manager.service.utils;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import eu.dnetlib.domain.data.Repository;
|
import eu.dnetlib.domain.data.Repository;
|
||||||
import eu.dnetlib.domain.data.RepositoryInterface;
|
import eu.dnetlib.domain.data.RepositoryInterface;
|
||||||
|
import eu.dnetlib.repo.manager.service.domain.RepositorySnippet;
|
||||||
import eu.dnetlib.repo.manager.shared.AggregationDetails;
|
import eu.dnetlib.repo.manager.shared.AggregationDetails;
|
||||||
import eu.dnetlib.repo.manager.shared.Timezone;
|
import eu.dnetlib.repo.manager.shared.Timezone;
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
@ -134,6 +135,41 @@ public class Converter {
|
||||||
return Double.valueOf(number);
|
return Double.valueOf(number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<RepositorySnippet> jsonToRepositorySnippetList(JSONObject json) throws JSONException {
|
||||||
|
|
||||||
|
List<RepositorySnippet> resultSet = new ArrayList<>();
|
||||||
|
JSONArray rs = json.getJSONArray("datasourceInfo");
|
||||||
|
for(int i=0;i<rs.length();i++)
|
||||||
|
resultSet.add(jsonToRepositorySnippetObject( rs.getJSONObject(i)) );
|
||||||
|
return resultSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static RepositorySnippet jsonToRepositorySnippetObject(JSONObject repositorySnippetObject) throws JSONException {
|
||||||
|
|
||||||
|
|
||||||
|
RepositorySnippet repositorySnippet = new RepositorySnippet();
|
||||||
|
|
||||||
|
// JSONObject datasource = repositorySnippetObject.getJSONObject("datasource");
|
||||||
|
|
||||||
|
|
||||||
|
repositorySnippet.setId(repositorySnippetObject.get("id").toString());
|
||||||
|
repositorySnippet.setOfficialname(repositorySnippetObject.get("officialname").toString());
|
||||||
|
|
||||||
|
repositorySnippet.setEnglishname( repositorySnippetObject.get("englishname").toString());
|
||||||
|
if(repositorySnippet.getEnglishname().equals("null"))
|
||||||
|
repositorySnippet.setEnglishname("");
|
||||||
|
|
||||||
|
repositorySnippet.setWebsiteurl(repositorySnippetObject.get("websiteurl").toString());
|
||||||
|
if(repositorySnippet.getWebsiteurl().equals("null"))
|
||||||
|
repositorySnippet.setWebsiteurl("");
|
||||||
|
|
||||||
|
repositorySnippet.setRegisteredby(repositorySnippetObject.get("registeredby").toString());
|
||||||
|
if(repositorySnippet.getRegisteredby().equals("null"))
|
||||||
|
repositorySnippet.setRegisteredby("");
|
||||||
|
return repositorySnippet;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static List<Repository> jsonToRepositoryList(JSONObject json) throws JSONException {
|
public static List<Repository> jsonToRepositoryList(JSONObject json) throws JSONException {
|
||||||
|
|
||||||
List<Repository> resultSet = new ArrayList<>();
|
List<Repository> resultSet = new ArrayList<>();
|
||||||
|
@ -247,7 +283,7 @@ public class Converter {
|
||||||
jsonObject.put("datauploadtype",repository.getDataUploadType());
|
jsonObject.put("datauploadtype",repository.getDataUploadType());
|
||||||
jsonObject.put("missionstatementurl",repository.getMissionStatementUrl());
|
jsonObject.put("missionstatementurl",repository.getMissionStatementUrl());
|
||||||
jsonObject.put("od_contenttypes",repository.getOdContentTypes());
|
jsonObject.put("od_contenttypes",repository.getOdContentTypes());
|
||||||
jsonObject.put("officialname",repository.getOfficialName());
|
jsonObject.put("officialname",repository.getOfficialname());
|
||||||
jsonObject.put("pidsystems",repository.getPidSystems());
|
jsonObject.put("pidsystems",repository.getPidSystems());
|
||||||
jsonObject.put("provenanceaction",repository.getProvenanceActionClass());
|
jsonObject.put("provenanceaction",repository.getProvenanceActionClass());
|
||||||
jsonObject.put("qualitymanagementkind",repository.getQualityManagementKind());
|
jsonObject.put("qualitymanagementkind",repository.getQualityManagementKind());
|
||||||
|
@ -374,4 +410,5 @@ public class Converter {
|
||||||
return repositoryId.split("::")[0] + "::" + DigestUtils.md5Hex(repositoryId.split("::")[1]);
|
return repositoryId.split("::")[0] + "::" + DigestUtils.md5Hex(repositoryId.split("::")[1]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue