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.RepositoryInterface;
|
||||
import eu.dnetlib.repo.manager.service.domain.RepositorySnippet;
|
||||
import eu.dnetlib.repo.manager.service.exception.ResourceNotFoundException;
|
||||
import eu.dnetlib.repo.manager.shared.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.json.JSONException;
|
||||
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 java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -27,7 +27,7 @@ public interface RepositoryApi {
|
|||
@RequestMapping(value = "/getRepositoriesByCountry/{country}/{mode}", method = RequestMethod.GET,
|
||||
produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
@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,
|
||||
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.RepositoryInterface;
|
||||
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.exception.ResourceNotFoundException;
|
||||
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 javax.annotation.PostConstruct;
|
||||
import java.io.IOException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
@ -143,16 +145,16 @@ public class RepositoryApiImpl implements RepositoryApi {
|
|||
|
||||
|
||||
@Override
|
||||
public List<Repository> getRepositoriesByCountry(@PathVariable("country") String country,
|
||||
@PathVariable("mode") String mode,
|
||||
@RequestParam(value = "managed",required=false) Boolean managed) throws JSONException {
|
||||
public List<RepositorySnippet> getRepositoriesByCountry(@PathVariable("country") String country,
|
||||
@PathVariable("mode") String mode,
|
||||
@RequestParam(value = "managed",required=false) Boolean managed) throws JSONException, IOException {
|
||||
|
||||
LOGGER.debug("Getting repositories by country!");
|
||||
int page = 0;
|
||||
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";
|
||||
if (mode.equalsIgnoreCase("opendoar"))
|
||||
filterKey = "openaire____::opendoar";
|
||||
|
@ -160,30 +162,29 @@ public class RepositoryApiImpl implements RepositoryApi {
|
|||
filterKey = "openaire____::re3data";
|
||||
|
||||
|
||||
LOGGER.debug("Country code equals : " + countryCode);
|
||||
LOGGER.debug("Country code equals : " + country);
|
||||
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.setCountry(countryCode);
|
||||
requestFilter.setCountry(country);
|
||||
requestFilter.setCollectedfrom(filterKey);
|
||||
|
||||
try{
|
||||
String rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
||||
JSONArray jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
||||
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;
|
||||
uriComponents = searchDatasource(String.valueOf(page),String.valueOf(size));
|
||||
uriComponents = searchSnipperDatasource(String.valueOf(page),String.valueOf(size));
|
||||
rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class);
|
||||
jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo");
|
||||
}
|
||||
for (Repository r : resultSet)
|
||||
this.updateRepositoryInfo(r);
|
||||
|
||||
return resultSet;
|
||||
}catch (Exception e){
|
||||
LOGGER.debug("Exception on getRepositoriesByCountry" , e);
|
||||
emailUtils.reportException(e);
|
||||
// emailUtils.reportException(e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
|
@ -794,7 +795,17 @@ public class RepositoryApiImpl implements RepositoryApi {
|
|||
return UriComponentsBuilder
|
||||
.fromHttpUrl(baseAddress + "/ds/search/")
|
||||
.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")
|
||||
.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 id = null;
|
||||
private String officialname = null;
|
||||
private String collectedfrom = null;
|
||||
|
||||
|
||||
public RequestFilter() {
|
||||
|
@ -55,4 +56,12 @@ public class RequestFilter{
|
|||
public void setOfficialname(String 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 eu.dnetlib.domain.data.Repository;
|
||||
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.Timezone;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
|
@ -134,6 +135,41 @@ public class Converter {
|
|||
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 {
|
||||
|
||||
List<Repository> resultSet = new ArrayList<>();
|
||||
|
@ -247,7 +283,7 @@ public class Converter {
|
|||
jsonObject.put("datauploadtype",repository.getDataUploadType());
|
||||
jsonObject.put("missionstatementurl",repository.getMissionStatementUrl());
|
||||
jsonObject.put("od_contenttypes",repository.getOdContentTypes());
|
||||
jsonObject.put("officialname",repository.getOfficialName());
|
||||
jsonObject.put("officialname",repository.getOfficialname());
|
||||
jsonObject.put("pidsystems",repository.getPidSystems());
|
||||
jsonObject.put("provenanceaction",repository.getProvenanceActionClass());
|
||||
jsonObject.put("qualitymanagementkind",repository.getQualityManagementKind());
|
||||
|
@ -374,4 +410,5 @@ public class Converter {
|
|||
return repositoryId.split("::")[0] + "::" + DigestUtils.md5Hex(repositoryId.split("::")[1]);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue