2017-12-15 13:25:21 +01:00
|
|
|
package eu.eudat.managers;
|
|
|
|
|
2017-12-21 11:38:18 +01:00
|
|
|
import eu.eudat.dao.entities.*;
|
|
|
|
import eu.eudat.models.criteria.DataRepositoryCriteria;
|
|
|
|
import eu.eudat.models.criteria.RegistryCriteria;
|
|
|
|
import eu.eudat.models.criteria.ServiceCriteria;
|
2017-12-15 13:25:21 +01:00
|
|
|
import eu.eudat.models.dataset.Dataset;
|
|
|
|
import eu.eudat.models.dataset.DatasetTableRequest;
|
2017-12-22 14:42:47 +01:00
|
|
|
import eu.eudat.models.datasetwizard.DatasetWizardModel;
|
2017-12-15 13:25:21 +01:00
|
|
|
import eu.eudat.models.helpers.DataTableData;
|
2017-12-19 17:22:30 +01:00
|
|
|
import eu.eudat.models.listingmodels.DatasetListingModel;
|
2017-12-15 13:25:21 +01:00
|
|
|
import eu.eudat.models.project.Project;
|
|
|
|
import eu.eudat.models.project.ProjectTableRequest;
|
2017-12-17 22:34:24 +01:00
|
|
|
import eu.eudat.queryable.QueryableList;
|
2017-12-15 13:25:21 +01:00
|
|
|
import eu.eudat.utilities.builders.DomainModelConverter;
|
2017-12-22 14:42:47 +01:00
|
|
|
import org.json.JSONObject;
|
2017-12-15 13:25:21 +01:00
|
|
|
|
|
|
|
import java.util.List;
|
2017-12-22 14:42:47 +01:00
|
|
|
import java.util.Map;
|
2017-12-15 13:25:21 +01:00
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by ikalyvas on 12/15/2017.
|
|
|
|
*/
|
|
|
|
public class DatasetManager {
|
|
|
|
|
2017-12-19 17:22:30 +01:00
|
|
|
public DataTableData<DatasetListingModel> getPaged(DatasetDao datatasetRepository, DatasetTableRequest datasetTableRequest) throws IllegalAccessException, InstantiationException{
|
2017-12-17 22:34:24 +01:00
|
|
|
QueryableList<eu.eudat.entities.Dataset> items = datatasetRepository.getWithCriteria(datasetTableRequest.getCriteria());
|
|
|
|
QueryableList<eu.eudat.entities.Dataset> pagedItems = PaginationManager.applyPaging( items ,datasetTableRequest);
|
2018-01-02 09:36:40 +01:00
|
|
|
if(datasetTableRequest.getWithHint())pagedItems.withHint("datasetFullyDetailed");
|
2017-12-19 17:22:30 +01:00
|
|
|
List<DatasetListingModel> datasets = new DomainModelConverter<eu.eudat.entities.Dataset, DatasetListingModel>().fromDataModel( pagedItems.toList(), DatasetListingModel.class);
|
|
|
|
DataTableData<DatasetListingModel> dataTable = new DataTableData<DatasetListingModel>();
|
2017-12-15 13:25:21 +01:00
|
|
|
dataTable.setData(datasets);
|
2017-12-19 15:09:49 +01:00
|
|
|
dataTable.setTotalCount(items.count());
|
2017-12-15 13:25:21 +01:00
|
|
|
return dataTable;
|
|
|
|
}
|
|
|
|
|
2017-12-22 14:42:47 +01:00
|
|
|
public DatasetWizardModel getSingle(DatasetDao datatasetRepository, String id) throws InstantiationException, IllegalAccessException{
|
|
|
|
DatasetWizardModel dataset = new DatasetWizardModel();
|
|
|
|
eu.eudat.entities.Dataset datasetEntity = datatasetRepository.find(UUID.fromString(id));
|
|
|
|
eu.eudat.models.user.composite.DatasetProfile datasetprofile = UserManager.generateDatasetProfileModel(datasetEntity.getProfile());
|
|
|
|
datasetprofile.setStatus(dataset.getStatus());
|
|
|
|
if(dataset.getProperties()!=null){
|
|
|
|
JSONObject jobject = new JSONObject(dataset.getProperties());
|
|
|
|
Map<String,Object> properties = (Map<String, Object>)jobject.toMap();
|
|
|
|
datasetprofile.fromJsonObject(properties);
|
|
|
|
}
|
|
|
|
dataset.setDatasetProfileDefinition(datasetprofile);
|
|
|
|
dataset.fromDataModel(datasetEntity);
|
2017-12-15 13:25:21 +01:00
|
|
|
return dataset;
|
|
|
|
}
|
2017-12-20 15:52:09 +01:00
|
|
|
|
2017-12-22 14:42:47 +01:00
|
|
|
public static eu.eudat.entities.Dataset createOrUpdate(DatasetDao datatasetRepository, DataRepositoryDao dataRepositoryDao, ServiceDao serviceDao, RegistryDao registryDao, DatasetWizardModel profile) throws InstantiationException, IllegalAccessException{
|
2017-12-21 11:38:18 +01:00
|
|
|
eu.eudat.entities.Dataset dataset = profile.toDataModel();
|
|
|
|
createRegistriesIfTheyDontExist(registryDao,dataset);
|
|
|
|
createDataRepositoriesIfTheyDontExist(dataRepositoryDao,dataset);
|
|
|
|
createServicesIfTheyDontExist(serviceDao,dataset);
|
2017-12-22 14:42:47 +01:00
|
|
|
return datatasetRepository.createOrUpdate(dataset);
|
2017-12-21 11:38:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void createRegistriesIfTheyDontExist(RegistryDao registryDao, eu.eudat.entities.Dataset dataset){
|
|
|
|
if(dataset.getRegistries()!=null&&!dataset.getRegistries().isEmpty()){
|
|
|
|
for(eu.eudat.entities.Registry registry : dataset.getRegistries()){
|
|
|
|
RegistryCriteria criteria = new RegistryCriteria();
|
|
|
|
criteria.setLike(registry.getReference());
|
|
|
|
List<eu.eudat.entities.Registry> entries = registryDao.listBy(criteria);
|
|
|
|
if(entries!=null&&!entries.isEmpty())registry.setId( entries.get(0).getId());
|
|
|
|
else registry = registryDao.create(registry);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void createServicesIfTheyDontExist(ServiceDao serviceDao,eu.eudat.entities.Dataset dataset){
|
|
|
|
if(dataset.getServices()!=null&&!dataset.getServices().isEmpty()){
|
|
|
|
for(eu.eudat.entities.Service service : dataset.getServices()){
|
|
|
|
ServiceCriteria criteria = new ServiceCriteria();
|
|
|
|
criteria.setLike(service.getReference());
|
|
|
|
List<eu.eudat.entities.Service> entries = serviceDao.listBy(criteria);
|
|
|
|
if(entries!=null&&!entries.isEmpty())service.setId(entries.get(0).getId());
|
|
|
|
else service = serviceDao.create(service);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void createDataRepositoriesIfTheyDontExist(DataRepositoryDao dataRepositoryDao,eu.eudat.entities.Dataset dataset){
|
|
|
|
if(dataset.getDataRepositories()!=null&&!dataset.getDataRepositories().isEmpty()){
|
|
|
|
for(eu.eudat.entities.DataRepository dataRepo : dataset.getDataRepositories()){
|
|
|
|
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
|
|
|
criteria.setLike(dataRepo.getReference());
|
|
|
|
List<eu.eudat.entities.DataRepository> entries = dataRepositoryDao.listBy(criteria);
|
|
|
|
if(entries!=null&&!entries.isEmpty())dataRepo.setId(entries.get(0).getId());
|
|
|
|
else dataRepo = dataRepositoryDao.createOrUpdate(dataRepo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-12-15 13:25:21 +01:00
|
|
|
}
|