|
|
|
@ -13,6 +13,7 @@ import eu.eudat.data.enumeration.notification.ActiveStatus;
|
|
|
|
|
import eu.eudat.data.enumeration.notification.ContactType;
|
|
|
|
|
import eu.eudat.data.enumeration.notification.NotificationType;
|
|
|
|
|
import eu.eudat.data.enumeration.notification.NotifyState;
|
|
|
|
|
import eu.eudat.data.query.items.table.dataset.DatasetTableRequest;
|
|
|
|
|
import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem;
|
|
|
|
|
import eu.eudat.data.query.items.table.dmp.DataManagementPlanTableRequest;
|
|
|
|
|
import eu.eudat.elastic.criteria.DmpCriteria;
|
|
|
|
@ -129,13 +130,19 @@ public class DataManagementPlanManager {
|
|
|
|
|
List<Dmp> dmps = null;
|
|
|
|
|
QueryableList<DMP> items = null;
|
|
|
|
|
QueryableList<DMP> authItems = null;
|
|
|
|
|
Long totalData = 0L;
|
|
|
|
|
if (apiContext.getOperationsContext().getElasticRepository().getDmpRepository() != null) {
|
|
|
|
|
try {
|
|
|
|
|
DmpCriteria criteria = DmpCriteriaMapper.toElasticCriteria(dataManagementPlanTableRequest.getCriteria());
|
|
|
|
|
DmpCriteria criteria = DmpCriteriaMapper.toElasticCriteria(dataManagementPlanTableRequest.getCriteria(), principalID);
|
|
|
|
|
criteria.setOffset(dataManagementPlanTableRequest.getOffset());
|
|
|
|
|
criteria.setSize(dataManagementPlanTableRequest.getLength());
|
|
|
|
|
criteria.setSortCriteria(DmpCriteriaMapper.toElasticSorting(dataManagementPlanTableRequest.getOrderings()));
|
|
|
|
|
dmps = apiContext.getOperationsContext().getElasticRepository().getDmpRepository().query(criteria);
|
|
|
|
|
if (dmps != null && !dmps.isEmpty()) {
|
|
|
|
|
List<Dmp> finalDmps = dmps;
|
|
|
|
|
items = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().asQueryable().where((builder, root) -> root.get("id").in(finalDmps.stream().map(Dmp::getId).collect(Collectors.toList())));
|
|
|
|
|
PaginationManager.applyOrder(items, dataManagementPlanTableRequest);
|
|
|
|
|
totalData = apiContext.getOperationsContext().getElasticRepository().getDmpRepository().count(criteria);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
logger.warn(ex.getMessage(), ex);
|
|
|
|
@ -144,63 +151,116 @@ public class DataManagementPlanManager {
|
|
|
|
|
}
|
|
|
|
|
if (items == null) {
|
|
|
|
|
items = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dataManagementPlanTableRequest.getCriteria());
|
|
|
|
|
List<Integer> roles = new LinkedList<>();
|
|
|
|
|
if (!dataManagementPlanTableRequest.getCriteria().isOnlyPublic()) {
|
|
|
|
|
if (dataManagementPlanTableRequest.getCriteria().getRole() != null)
|
|
|
|
|
roles.add(dataManagementPlanTableRequest.getCriteria().getRole());
|
|
|
|
|
authItems = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getAuthenticated(items, principalID, roles);
|
|
|
|
|
} else {
|
|
|
|
|
authItems = items;
|
|
|
|
|
}
|
|
|
|
|
totalData = authItems.count();
|
|
|
|
|
items = PaginationManager.applyPaging(authItems, dataManagementPlanTableRequest);
|
|
|
|
|
}
|
|
|
|
|
List<Integer> roles = new LinkedList<>();
|
|
|
|
|
if (!dataManagementPlanTableRequest.getCriteria().isOnlyPublic()) {
|
|
|
|
|
if (dataManagementPlanTableRequest.getCriteria().getRole() != null)
|
|
|
|
|
roles.add(dataManagementPlanTableRequest.getCriteria().getRole());
|
|
|
|
|
authItems = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getAuthenticated(items, principalID, roles);
|
|
|
|
|
} else {
|
|
|
|
|
authItems = items;
|
|
|
|
|
}
|
|
|
|
|
QueryableList<DMP> pagedItems = PaginationManager.applyPaging(authItems, dataManagementPlanTableRequest);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<>();
|
|
|
|
|
|
|
|
|
|
CompletableFuture itemsFuture;
|
|
|
|
|
if (fieldsGroup.equals("listing")) {
|
|
|
|
|
if (!dataManagementPlanTableRequest.getCriteria().isOnlyPublic()) {
|
|
|
|
|
itemsFuture = pagedItems.withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class))
|
|
|
|
|
.distinct()
|
|
|
|
|
.selectAsync(item -> {
|
|
|
|
|
List<DMP> dmps1 = items.withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class))
|
|
|
|
|
.distinct().toList();
|
|
|
|
|
dataTable.setData(dmps1.stream().map(dmp -> {
|
|
|
|
|
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
|
|
|
|
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
|
|
|
|
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria, principalID));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new DataManagementPlanListingModel().fromDataModelDatasets(dmp);
|
|
|
|
|
}).collect(Collectors.toList()));
|
|
|
|
|
/*.selectAsync(item -> {
|
|
|
|
|
item.setDataset(
|
|
|
|
|
item.getDataset().stream()
|
|
|
|
|
.filter(dataset -> !dataset.getStatus().equals(Dataset.Status.DELETED.getValue()) && !dataset.getStatus().equals(Dataset.Status.CANCELED.getValue())).collect(Collectors.toList()).stream()
|
|
|
|
|
.filter(dataset -> dataset.getDmp().getUsers().stream()
|
|
|
|
|
*//*.filter(dataset -> dataset.getDmp().getUsers().stream()
|
|
|
|
|
.filter(x -> x.getUser().getId().equals(principalID))
|
|
|
|
|
.collect(Collectors.toList()).size() > 0)
|
|
|
|
|
.collect(Collectors.toList()).size() > 0)*//*
|
|
|
|
|
.collect(Collectors.toSet()));
|
|
|
|
|
return new DataManagementPlanListingModel().fromDataModelDatasets(item);
|
|
|
|
|
})
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));*/
|
|
|
|
|
} else {
|
|
|
|
|
itemsFuture = pagedItems.withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class))
|
|
|
|
|
.distinct()
|
|
|
|
|
.selectAsync(item -> {
|
|
|
|
|
List<DMP> dmps1 = items.withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class))
|
|
|
|
|
.distinct().toList();
|
|
|
|
|
dataTable.setData(dmps1.stream().map(dmp -> {
|
|
|
|
|
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
|
|
|
|
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
|
|
|
|
datasetCriteria.setIsPublic(true);
|
|
|
|
|
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new DataManagementPlanListingModel().fromDataModelDatasets(dmp);
|
|
|
|
|
}).collect(Collectors.toList()));
|
|
|
|
|
/*.selectAsync(item -> {
|
|
|
|
|
item.setDataset(
|
|
|
|
|
item.getDataset().stream()
|
|
|
|
|
.filter(dataset -> dataset.getStatus().equals(Dataset.Status.FINALISED.getValue())).collect(Collectors.toSet()));
|
|
|
|
|
return new DataManagementPlanListingModel().fromDataModelDatasets(item);
|
|
|
|
|
})
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));*/
|
|
|
|
|
}
|
|
|
|
|
} else if (fieldsGroup.equals("autocomplete")) {
|
|
|
|
|
itemsFuture = pagedItems
|
|
|
|
|
dataTable.setData(items
|
|
|
|
|
.distinct()
|
|
|
|
|
.selectAsync(item -> new DataManagementPlanListingModel().fromDataModelAutoComplete(item))
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));
|
|
|
|
|
.select(item -> new DataManagementPlanListingModel().fromDataModelAutoComplete(item)));
|
|
|
|
|
} else {
|
|
|
|
|
itemsFuture = pagedItems
|
|
|
|
|
dataTable.setData(items
|
|
|
|
|
.distinct()
|
|
|
|
|
.selectAsync(item -> new DataManagementPlanListingModel().fromDataModelAssociatedProfiles(item))
|
|
|
|
|
.whenComplete((resultList, throwable) -> dataTable.setData(resultList));
|
|
|
|
|
.select(item -> new DataManagementPlanListingModel().fromDataModelAssociatedProfiles(item)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CompletableFuture countFuture = authItems.distinct().countAsync().whenComplete((count, throwable) -> dataTable.setTotalCount(count));
|
|
|
|
|
CompletableFuture.allOf(itemsFuture, countFuture).join();
|
|
|
|
|
//CompletableFuture countFuture = authItems.distinct().countAsync().whenComplete((count, throwable) -> dataTable.setTotalCount(count));
|
|
|
|
|
dataTable.setTotalCount(totalData);
|
|
|
|
|
//CompletableFuture.allOf(itemsFuture).join();
|
|
|
|
|
return dataTable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Set<Dataset> retrieveRelevantDatasets(DatasetCriteria datasetCriteria) {
|
|
|
|
|
return retrieveRelevantDatasets(datasetCriteria, null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Set<Dataset> retrieveRelevantDatasets (DatasetCriteria datasetCriteria, UUID principal) {
|
|
|
|
|
QueryableList<Dataset> datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria);
|
|
|
|
|
if (principal != null) {
|
|
|
|
|
UserInfo userInfo = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal);
|
|
|
|
|
List<Integer> roles = new ArrayList<>();
|
|
|
|
|
roles.add(0);
|
|
|
|
|
roles.add(1);
|
|
|
|
|
datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getAuthenticated(datasetItems, userInfo, roles);
|
|
|
|
|
}
|
|
|
|
|
Long maxDatasets = datasetItems.count();
|
|
|
|
|
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
|
|
|
|
|
datasetTableRequest.setOffset(0);
|
|
|
|
|
datasetTableRequest.setLength(3);
|
|
|
|
|
Set<Dataset> datasetsSet = new LinkedHashSet<>();
|
|
|
|
|
try {
|
|
|
|
|
datasetItems = PaginationManager.applyPaging(datasetItems, datasetTableRequest);
|
|
|
|
|
List<Dataset> datasets = datasetItems.toList();
|
|
|
|
|
datasetsSet.addAll(datasets);
|
|
|
|
|
for (int i = 0; i < maxDatasets - datasets.size(); i++) {
|
|
|
|
|
Dataset fakedataset = new Dataset();
|
|
|
|
|
fakedataset.setId(UUID.randomUUID());
|
|
|
|
|
datasetsSet.add(fakedataset);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return datasetsSet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public eu.eudat.models.data.dmp.DataManagementPlan getSingle(String id, Principal principal, boolean isPublic) throws Exception {
|
|
|
|
|
eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan = new eu.eudat.models.data.dmp.DataManagementPlan();
|
|
|
|
|
DMP dataManagementPlanEntity = databaseRepository.getDmpDao().find(UUID.fromString(id));
|
|
|
|
@ -864,6 +924,7 @@ public class DataManagementPlanManager {
|
|
|
|
|
datasetElastic.setCollaborators(dataset1.getDmp().getUsers().stream().map(user -> {
|
|
|
|
|
Collaborator collaborator = new Collaborator();
|
|
|
|
|
collaborator.setId(user.getId().toString());
|
|
|
|
|
collaborator.setRole(user.getRole());
|
|
|
|
|
// collaborator.setName(user.getUser().getName());
|
|
|
|
|
return collaborator;
|
|
|
|
|
}).collect(Collectors.toList()));
|
|
|
|
|