package eu.dnetlib.repo.manager.service; import eu.dnetlib.repo.manager.service.customHystrixCommands.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; @Service("statsService") public class StatsServiceImpl implements StatsService { @Autowired RestTemplate restTemplate; @Value("${search.api.baseAddress}") private String baseAddress; @Value("${search.api.usagestats}") private String usagestatsBaseAddress; @Value("${search.api.usageEvents}") private String usagestatsEvents; @Override public Map getStatistics() { UsageStatsTotalHystrixCommand usageStatsTotalHystrixCommand = new UsageStatsTotalHystrixCommand(usagestatsEvents,restTemplate); DataRepositoriesHystrixCommand dataRepositoriesHystrixCommand = new DataRepositoriesHystrixCommand(baseAddress,restTemplate); AggregatorsHystrixCommand aggregatorsHystrixCommand = new AggregatorsHystrixCommand(baseAddress,restTemplate); LiteratureHystrixCommand literatureHystrixCommand = new LiteratureHystrixCommand(baseAddress,restTemplate); JournalHystrixCommand journalHystrixCommand = new JournalHystrixCommand(baseAddress,restTemplate); PublicationHystrixCommand publicationHystrixCommand = new PublicationHystrixCommand(baseAddress,restTemplate); DatasetsHystrixCommand datasetsHystrixCommand = new DatasetsHystrixCommand(baseAddress,restTemplate); SoftwareHystrixCommand softwareHystrixCommand = new SoftwareHystrixCommand(baseAddress,restTemplate); LastYearUsageStatsHystrixCommand lastYearUsageStatsHystrixCommand = new LastYearUsageStatsHystrixCommand(usagestatsBaseAddress,restTemplate); Map stats = new HashMap<>(); stats.put("aggregators",aggregatorsHystrixCommand.execute()); stats.put("dataRepositories",dataRepositoriesHystrixCommand.execute()); stats.put("literature",literatureHystrixCommand.execute()); stats.put("journal",journalHystrixCommand.execute()); stats.put("publications",publicationHystrixCommand.execute()); stats.put("datasets",datasetsHystrixCommand.execute()); stats.put("software",softwareHystrixCommand.execute()); stats.put("lastYearUsagestats", lastYearUsageStatsHystrixCommand.execute()); stats.put("usagestats",usageStatsTotalHystrixCommand.execute()); return stats; } }