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 importProfiles() throws CommunityException { final List 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 datasources = cc.getCommunityInfo(id, CONTENTPROVIDERS_ID_SUFFIX, c -> CommunityMappingUtils.asCommunityDataprovider(id, c)); final List projects = cc.getCommunityInfo(id, PROJECTS_ID_SUFFIX, c -> CommunityMappingUtils.asCommunityProject(id, c)); final List 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); } } }