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

55 lines
1.8 KiB
Java

package eu.dnetlib.openaire.community;
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 CommunityApiCore core;
@GetMapping("/community_importer/import")
public List<String> importProfiles() throws CommunityException {
final List<String> list = core.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 = core.getCommunity(id);
final List<CommunityContentprovider> datasources = core.getCommunityContentproviders(id);
final List<CommunityProject> projects = core.getCommunityProjects(id);
final List<CommunityOrganization> orgs = core.getCommunityOrganizations(id);
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);
}
}
}