package eu.dnetlib.irishmonitorservice.controllers; import eu.dnetlib.irishmonitorservice.entities.StakeholderPublications; import eu.dnetlib.irishmonitorservice.services.CacheService; import eu.dnetlib.irishmonitorservice.services.StatsToolService; import eu.dnetlib.uoamonitorservice.entities.Stakeholder; import eu.dnetlib.uoamonitorservice.service.StakeholderService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; @RestController @CrossOrigin(origins = "*") @RequestMapping("publications") public class StakeholderPublicationsController { private final StakeholderService service; private final CacheService cacheService; @Autowired public StakeholderPublicationsController(StakeholderService service, CacheService cacheService) { this.service = service; this.cacheService = cacheService; } @RequestMapping(value = "/{type}", method = RequestMethod.GET) public List getStakeholders(@PathVariable String type) throws UnsupportedEncodingException, InterruptedException { List stakeholders = this.service.getStakeholdersByTypeAndRole(type, null, false); List stakeholderPublications = new ArrayList<>(); List> data = this.cacheService.getResponse(type); List remain = new ArrayList<>(stakeholders); if (data != null) { data.forEach(entity -> { String id = entity.get(1); stakeholders.stream().filter(stakeholder -> stakeholder.getIndex_id().equals(id)).findFirst().ifPresent(stakeholder -> { remain.remove(stakeholder); stakeholderPublications.add(new StakeholderPublications(stakeholder, Integer.parseInt(entity.get(0)))); }); }); } remain.forEach(stakeholder -> stakeholderPublications.add(new StakeholderPublications(stakeholder, 0))); return stakeholderPublications; } }