package eu.eudat.logic.managers; import eu.eudat.depositinterface.repository.RepositoryDeposit; import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; import eu.eudat.models.data.doi.DepositRequest; import eu.eudat.models.data.doi.Doi; import eu.eudat.models.data.doi.RepositoryConfig; import eu.eudat.models.data.security.Principal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Optional; @Component public class DepositManager { private static final Logger logger = LoggerFactory.getLogger(DepositManager.class); private List repositories; private DataManagementPlanManager dataManagementPlanManager; @Autowired public DepositManager(List repositories, DataManagementPlanManager dataManagementPlanManager){ this.repositories = repositories; this.dataManagementPlanManager = dataManagementPlanManager; } public List getAvailableRepos() { List reposConfigModel = new ArrayList<>(); for (RepositoryDeposit r: this.repositories) { RepositoryConfig repoModel = new RepositoryConfig(); RepositoryDepositConfiguration repoConf = r.getConfiguration(); if(repoConf != null) { reposConfigModel.add(repoModel.toModel(repoConf)); } } return reposConfigModel; } public String authenticate(String id, String code) { Optional repo = repositories.stream().filter(x -> x.getConfiguration().getRepositoryId().equals(id)).findFirst(); return repo.map(repositoryDeposit -> repositoryDeposit.authenticate(code)).orElse(null); } public Doi deposit(DepositRequest depositRequest, Principal principal) throws Exception { return this.dataManagementPlanManager.createDoi(depositRequest, principal); } public String getRepositoryLogo(String repositoryId){ Optional repo = repositories.stream().filter(x -> x.getConfiguration().getRepositoryId().equals(repositoryId)).findFirst(); return repo.map(repositoryDeposit -> (repositoryDeposit.getConfiguration().isHasLogo()) ? repositoryDeposit.getLogo() : null ).orElse(null); } }