61 lines
2.3 KiB
Java
61 lines
2.3 KiB
Java
package eu.dnetlib.openaire.community;
|
|
|
|
import static eu.dnetlib.openaire.community.CommunityCommon.CONTENTPROVIDERS_ID_SUFFIX;
|
|
import static eu.dnetlib.openaire.community.CommunityCommon.ORGANIZATION_ID_SUFFIX;
|
|
import static eu.dnetlib.openaire.community.CommunityCommon.PROJECTS_ID_SUFFIX;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import eu.dnetlib.openaire.community.db.CommunityService;
|
|
import eu.dnetlib.openaire.exporter.exceptions.CommunityException;
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityContentprovider;
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityDetails;
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization;
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityProject;
|
|
|
|
@RestController
|
|
public class CommunityImporterController {
|
|
|
|
@Autowired
|
|
private CommunityService service;
|
|
|
|
@Autowired
|
|
private CommunityCommon cc;
|
|
|
|
@GetMapping("/community_importer/import")
|
|
public List<String> importProfiles() throws CommunityException {
|
|
final List<String> list = cc.listCommunities()
|
|
.stream()
|
|
.map(c -> c.getId())
|
|
.collect(Collectors.toList());
|
|
|
|
list.forEach(this::importCommunity);
|
|
|
|
return list;
|
|
}
|
|
|
|
private void importCommunity(final String id) {
|
|
try {
|
|
|
|
final CommunityDetails community = cc.getCommunity(id);
|
|
final List<CommunityContentprovider> datasources =
|
|
cc.getCommunityInfo(id, CONTENTPROVIDERS_ID_SUFFIX, c -> CommunityMappingUtils.asCommunityDataprovider(id, c));
|
|
final List<CommunityProject> projects = cc.getCommunityInfo(id, PROJECTS_ID_SUFFIX, c -> CommunityMappingUtils.asCommunityProject(id, c));
|
|
final List<CommunityOrganization> orgs = cc.getCommunityInfo(id, ORGANIZATION_ID_SUFFIX, c -> CommunityMappingUtils.asCommunityOrganization(id, c));
|
|
|
|
service.saveCommunity(community);
|
|
service.addCommunityProjectList(id, projects);
|
|
service.addCommunityContentProvidersList(id, datasources);
|
|
service.addCommunityOrganizationList(id, orgs);
|
|
// TODO MANAGE new fields and tables
|
|
} catch (final Exception e) {
|
|
throw new RuntimeException("Error importing community: " + id, e);
|
|
}
|
|
}
|
|
}
|