2023-06-28 15:24:18 +02:00
|
|
|
package eu.dnetlib.openaire.community.importer;
|
2023-06-16 11:12:24 +02:00
|
|
|
|
2023-06-26 14:56:40 +02:00
|
|
|
import java.io.IOException;
|
2023-06-16 11:12:24 +02:00
|
|
|
import java.util.List;
|
2023-06-26 14:56:40 +02:00
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Set;
|
2023-06-16 11:12:24 +02:00
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
2023-06-28 14:23:56 +02:00
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
2023-06-16 11:12:24 +02:00
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
2023-06-26 14:56:40 +02:00
|
|
|
import com.google.common.collect.Sets;
|
|
|
|
|
|
|
|
import eu.dnetlib.openaire.common.ISClient;
|
2023-06-28 15:28:12 +02:00
|
|
|
import eu.dnetlib.openaire.community.model.DbOrganization;
|
2023-06-16 11:12:24 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.exceptions.CommunityException;
|
2023-06-26 14:56:40 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.context.Context;
|
2023-06-16 11:12:24 +02:00
|
|
|
|
|
|
|
@RestController
|
|
|
|
public class CommunityImporterController {
|
|
|
|
|
2023-06-26 14:56:40 +02:00
|
|
|
public final static Set<String> communityBlackList = Sets.newHashSet("fet-fp7", "fet-h2020");
|
|
|
|
|
2023-06-16 11:12:24 +02:00
|
|
|
@Autowired
|
2023-06-28 14:23:56 +02:00
|
|
|
private CommunityImporterService importer;
|
2023-06-16 11:12:24 +02:00
|
|
|
|
|
|
|
@Autowired
|
2023-06-26 14:56:40 +02:00
|
|
|
private ISClient isClient;
|
2023-06-16 11:12:24 +02:00
|
|
|
|
2023-06-28 14:23:56 +02:00
|
|
|
@GetMapping("/community_importer/communities")
|
2023-06-16 11:12:24 +02:00
|
|
|
public List<String> importProfiles() throws CommunityException {
|
2023-06-26 14:56:40 +02:00
|
|
|
final Map<String, Context> contextMap = getContextMap();
|
|
|
|
|
|
|
|
final List<String> list = contextMap.keySet()
|
2023-06-16 11:12:24 +02:00
|
|
|
.stream()
|
2023-06-26 14:56:40 +02:00
|
|
|
.filter(id -> !communityBlackList.contains(id))
|
2023-06-16 11:12:24 +02:00
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
2023-06-26 14:56:40 +02:00
|
|
|
list.forEach(id -> {
|
2023-06-28 14:23:56 +02:00
|
|
|
importer.importCommunity(contextMap.get(id));
|
2023-06-26 14:56:40 +02:00
|
|
|
});
|
2023-06-16 11:12:24 +02:00
|
|
|
|
|
|
|
return list;
|
|
|
|
}
|
|
|
|
|
2023-06-28 14:23:56 +02:00
|
|
|
@GetMapping("/community_importer/propagationOrgs")
|
|
|
|
public List<DbOrganization> importPropagationOrgs(@RequestParam final String profileId,
|
|
|
|
@RequestParam(required = false, defaultValue = "false") final boolean simulation) throws Exception {
|
|
|
|
final String xml = isClient.getProfile(profileId);
|
|
|
|
return importer.importPropagationOrganizationsFromProfile(xml, simulation);
|
|
|
|
}
|
|
|
|
|
2023-06-26 14:56:40 +02:00
|
|
|
private Map<String, Context> getContextMap() throws CommunityException {
|
|
|
|
try {
|
|
|
|
return isClient.getCommunityContextMap();
|
|
|
|
} catch (final IOException e) {
|
|
|
|
throw new CommunityException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-16 11:12:24 +02:00
|
|
|
}
|