argos/dmp-backend/src/main/java/eu/eudat/managers/ExternalDatasetManager.java

60 lines
3.7 KiB
Java

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<ExternalDatasetListingModel> getPaged(ExternalDatasetDao externalDatasetDao, ExternalDatasetTableRequest externalDatasetTableRequest) throws InstantiationException, IllegalAccessException {
QueryableList<ExternalDataset> items = externalDatasetDao.getWithCriteria(externalDatasetTableRequest.getCriteria());
QueryableList<ExternalDataset> pagedItems = PaginationManager.applyPaging(items, externalDatasetTableRequest);
List<ExternalDatasetListingModel> externalDatasetListingmodels = new DomainModelConverter<ExternalDataset, ExternalDatasetListingModel>().fromDataModel(pagedItems.toList(), ExternalDatasetListingModel.class);
DataTableData<ExternalDatasetListingModel> externalDatasetDataTableData = new DataTableData<>();
externalDatasetDataTableData.setData(externalDatasetListingmodels);
externalDatasetDataTableData.setTotalCount(items.count());
return externalDatasetDataTableData;
}
public List<ExternalDatasetListingModel> getWithExternal(ExternalDatasetDao externalDatasetDao , ExternalDatasetCriteria criteria, RemoteFetcher remoteFetcher) throws HugeResultSet, NoURLFound, InstantiationException, IllegalAccessException {
QueryableList<eu.eudat.entities.ExternalDataset> items = externalDatasetDao.getWithCriteria(criteria);
List<ExternalDatasetListingModel> externalDatasets = new DomainModelConverter<eu.eudat.entities.ExternalDataset, ExternalDatasetListingModel>().fromDataModel(items.toList(), ExternalDatasetListingModel.class);
List<Map<String, String>> 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;
}
}