dnet-applications/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityImporterController...

61 lines
2.3 KiB
Java
Raw Normal View History

2023-06-16 11:12:24 +02:00
package eu.dnetlib.openaire.community;
2023-06-26 10:28:29 +02:00
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;
2023-06-16 11:12:24 +02:00
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
2023-06-26 10:28:29 +02:00
private CommunityCommon cc;
2023-06-16 11:12:24 +02:00
@GetMapping("/community_importer/import")
public List<String> importProfiles() throws CommunityException {
2023-06-26 10:28:29 +02:00
final List<String> list = cc.listCommunities()
2023-06-16 11:12:24 +02:00
.stream()
.map(c -> c.getId())
.collect(Collectors.toList());
list.forEach(this::importCommunity);
return list;
}
private void importCommunity(final String id) {
try {
2023-06-26 10:28:29 +02:00
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));
2023-06-16 11:12:24 +02:00
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);
}
}
}