package eu.eudat.managers; import eu.eudat.dao.entities.ExternalDatasetDao; import eu.eudat.entities.ExternalDataset; import eu.eudat.models.criteria.ExternalDatasetCriteria; import eu.eudat.models.external.ExternalDatasetModel; import eu.eudat.models.external.ExternalSourcesItemModel; import eu.eudat.models.external.ProjectsExternalSourcesModel; import eu.eudat.models.externaldataset.ExternalDatasetTableRequest; import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.externaldataset.ExternalDatasetListingModel; import eu.eudat.models.project.Project; import eu.eudat.proxy.config.exceptions.HugeResultSet; import eu.eudat.proxy.config.exceptions.NoURLFound; import eu.eudat.proxy.fetching.RemoteFetcher; import eu.eudat.queryable.QueryableList; import eu.eudat.utilities.builders.DomainModelConverter; import java.util.List; import java.util.Map; import java.util.UUID; /** * Created by ikalyvas on 1/17/2018. */ public class ExternalDatasetManager { public DataTableData getPaged(ExternalDatasetDao externalDatasetDao, ExternalDatasetTableRequest externalDatasetTableRequest) throws InstantiationException, IllegalAccessException { QueryableList items = externalDatasetDao.getWithCriteria(externalDatasetTableRequest.getCriteria()); QueryableList pagedItems = PaginationManager.applyPaging(items, externalDatasetTableRequest); List externalDatasetListingmodels = new DomainModelConverter().fromDataModel(pagedItems.toList(), ExternalDatasetListingModel.class); DataTableData externalDatasetDataTableData = new DataTableData<>(); externalDatasetDataTableData.setData(externalDatasetListingmodels); externalDatasetDataTableData.setTotalCount(items.count()); return externalDatasetDataTableData; } public List getWithExternal(ExternalDatasetDao externalDatasetDao , ExternalDatasetCriteria criteria, RemoteFetcher remoteFetcher) throws HugeResultSet, NoURLFound, InstantiationException, IllegalAccessException { QueryableList items = externalDatasetDao.getWithCriteria(criteria); List externalDatasets = new DomainModelConverter().fromDataModel(items.toList(), ExternalDatasetListingModel.class); List> remoteRepos = remoteFetcher.getDatasets(criteria.getLike()); ExternalDatasetModel externalSourcesItemModels = new ExternalDatasetModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : externalSourcesItemModels) { ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel(); externalDatasetListingModel.setReference(externalListingItem.getRemoteId()); externalDatasetListingModel.setLabel(externalListingItem.getName()); externalDatasetListingModel.setAbbreviation(externalListingItem.getAbbreviation()); externalDatasets.add(externalDatasetListingModel); } return externalDatasets; } public ExternalDatasetListingModel getSingle(ExternalDatasetDao externalDatasetDao , UUID id) throws HugeResultSet, NoURLFound, InstantiationException, IllegalAccessException { ExternalDataset externalDataset = externalDatasetDao.find(id); ExternalDatasetListingModel externalDatasetModel = new ExternalDatasetListingModel(); externalDatasetModel.fromDataModel(externalDataset); return externalDatasetModel; } }