package eu.eudat.logic.managers; import eu.eudat.data.query.items.item.funder.FunderCriteriaRequest; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.proxy.fetching.RemoteFetcher; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.models.data.external.ProjectsExternalSourcesModel; import eu.eudat.models.data.funder.Funder; import eu.eudat.models.data.project.Project; import eu.eudat.models.data.security.Principal; import eu.eudat.queryable.QueryableList; import org.springframework.stereotype.Component; import java.util.Comparator; import java.util.List; import java.util.Map; @Component public class FunderManager { private ApiContext apiContext; private RemoteFetcher remoteFetcher; public FunderManager(ApiContext apiContext, RemoteFetcher remoteFetcher) { this.apiContext = apiContext; this.remoteFetcher = remoteFetcher; } public List getCriteriaWithExternal(FunderCriteriaRequest funderCriteria, Principal principal) throws HugeResultSet, NoURLFound { // eu.eudat.data.entities.UserInfo userInfo = new eu.eudat.data.entities.UserInfo(); // userInfo.setId(principal.getId()); // QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().getWithCritetia(projectCriteria.getCriteria()); // QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().getAuthenticated(items, userInfo); // List projects = authItems.select(item -> new eu.eudat.models.data.project.Project().fromDataModel(item)); // List> remoteRepos = remoteFetcher.getProjects(projectCriteria.getCriteria().getLike()); // ProjectsExternalSourcesModel projectsExternalSourcesModel = new ProjectsExternalSourcesModel().fromExternalItem(remoteRepos); // for (ExternalSourcesItemModel externalListingItem : projectsExternalSourcesModel) { // eu.eudat.models.data.project.Project project = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ProjectBuilder.class) // .reference(externalListingItem.getRemoteId()).label(externalListingItem.getName()) // .description(externalListingItem.getDescription()).uri(externalListingItem.getUri()) // .abbreviation(externalListingItem.getAbbreviation()).status(eu.eudat.data.entities.Project.Status.fromInteger(0)) // .build(); // // projects.add(project); // } // projects.sort(Comparator.comparing(x -> x.getLabel())); // return projects; return null; } }