Make dataset queries to return distinct results (avoid duplicate Id issues)
This commit is contained in:
parent
e546362f58
commit
fc71e95cf3
|
@ -54,6 +54,7 @@ public class DashBoardController extends BaseController {
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<RecentActivityModel>>().status(ApiMessageCode.NO_MESSAGE).payload(statistics));
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<RecentActivityModel>>().status(ApiMessageCode.NO_MESSAGE).payload(statistics));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
@RequestMapping(method = RequestMethod.GET, value = {"/user/recentActivity"}, produces = "application/json")
|
@RequestMapping(method = RequestMethod.GET, value = {"/user/recentActivity"}, produces = "application/json")
|
||||||
public ResponseEntity<ResponseItem<RecentActivity>> getRecentActivity(@RequestParam(name = "numOfActivities", required = false, defaultValue = "5") Integer numberOfActivities, Principal principal) {
|
public ResponseEntity<ResponseItem<RecentActivity>> getRecentActivity(@RequestParam(name = "numOfActivities", required = false, defaultValue = "5") Integer numberOfActivities, Principal principal) {
|
||||||
RecentActivity statistics = dashBoardManager.getRecentActivity(principal, numberOfActivities);
|
RecentActivity statistics = dashBoardManager.getRecentActivity(principal, numberOfActivities);
|
||||||
|
|
|
@ -152,7 +152,7 @@ public class DashBoardManager {
|
||||||
if ((dmps == null || dmps == 0L) && (datasets == null || datasets == 0L)) {
|
if ((dmps == null || dmps == 0L) && (datasets == null || datasets == 0L)) {
|
||||||
CompletableFuture dmpFuture = dataManagementPlanRepository.getAuthenticated(dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria), principal.getId(), roles).distinct().countAsync()
|
CompletableFuture dmpFuture = dataManagementPlanRepository.getAuthenticated(dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria), principal.getId(), roles).distinct().countAsync()
|
||||||
.whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats));
|
.whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats));
|
||||||
CompletableFuture datasetFuture = datasetRepository.getAuthenticated( datasetRepository.getWithCriteria(datasetCriteria), user, roles).countAsync()
|
CompletableFuture datasetFuture = datasetRepository.getAuthenticated( datasetRepository.getWithCriteria(datasetCriteria), user, roles).distinct().countAsync()
|
||||||
.whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats));
|
.whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats));
|
||||||
CompletableFuture.allOf(dmpFuture, datasetFuture).join();
|
CompletableFuture.allOf(dmpFuture, datasetFuture).join();
|
||||||
} else {
|
} else {
|
||||||
|
@ -168,6 +168,7 @@ public class DashBoardManager {
|
||||||
return statistics;
|
return statistics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public RecentActivity getRecentActivity(Principal principal, Integer numberofactivities) {
|
public RecentActivity getRecentActivity(Principal principal, Integer numberofactivities) {
|
||||||
RecentActivity activity = new RecentActivity();
|
RecentActivity activity = new RecentActivity();
|
||||||
DMPDao dataManagementPlanRepository = databaseRepository.getDmpDao();
|
DMPDao dataManagementPlanRepository = databaseRepository.getDmpDao();
|
||||||
|
@ -190,7 +191,7 @@ public class DashBoardManager {
|
||||||
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
|
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
|
||||||
.whenComplete((dmpActivities, throwable) -> activity.setRecentDmpActivities(dmpActivities));
|
.whenComplete((dmpActivities, throwable) -> activity.setRecentDmpActivities(dmpActivities));
|
||||||
|
|
||||||
CompletableFuture<List<RecentActivityData>> datasets = datasetRepository.getAuthenticated(datasetRepository.getWithCriteria(datasetCriteria), user, roles)
|
CompletableFuture<List<RecentActivityData>> datasets = datasetRepository.getAuthenticated(datasetRepository.getWithCriteria(datasetCriteria), user, roles).distinct()
|
||||||
.withHint("datasetRecentActivity")
|
.withHint("datasetRecentActivity")
|
||||||
.orderBy((builder, root) -> builder.desc(root.get("modified")))
|
.orderBy((builder, root) -> builder.desc(root.get("modified")))
|
||||||
.take(numberofactivities)
|
.take(numberofactivities)
|
||||||
|
@ -334,6 +335,7 @@ public class DashBoardManager {
|
||||||
|
|
||||||
List<RecentActivityModel> recentDatasetModels = datasetList
|
List<RecentActivityModel> recentDatasetModels = datasetList
|
||||||
.withHint(HintedModelFactory.getHint(DatasetListingModel.class))
|
.withHint(HintedModelFactory.getHint(DatasetListingModel.class))
|
||||||
|
.distinct()
|
||||||
.select(item -> new RecentDatasetModel().fromEntity(item));
|
.select(item -> new RecentDatasetModel().fromEntity(item));
|
||||||
recentActivityModels.addAll(recentDatasetModels);
|
recentActivityModels.addAll(recentDatasetModels);
|
||||||
}/*);*/
|
}/*);*/
|
||||||
|
|
|
@ -185,6 +185,7 @@ public class DataManagementPlanManager {
|
||||||
dataTable.setData(dmps1.stream().map(dmp -> {
|
dataTable.setData(dmps1.stream().map(dmp -> {
|
||||||
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
||||||
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
datasetCriteria.setDmpIds(Collections.singletonList(dmp.getId()));
|
||||||
|
datasetCriteria.setAllVersions(false);
|
||||||
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria, principalID));
|
dmp.setDataset(retrieveRelevantDatasets(datasetCriteria, principalID));
|
||||||
|
|
||||||
|
|
||||||
|
@ -250,14 +251,14 @@ public class DataManagementPlanManager {
|
||||||
roles.add(1);
|
roles.add(1);
|
||||||
datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getAuthenticated(datasetItems, userInfo, roles);
|
datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getAuthenticated(datasetItems, userInfo, roles);
|
||||||
}
|
}
|
||||||
Long maxDatasets = datasetItems.count();
|
Long maxDatasets = datasetItems.distinct().count();
|
||||||
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
|
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
|
||||||
datasetTableRequest.setOffset(0);
|
datasetTableRequest.setOffset(0);
|
||||||
datasetTableRequest.setLength(3);
|
datasetTableRequest.setLength(3);
|
||||||
Set<Dataset> datasetsSet = new LinkedHashSet<>();
|
Set<Dataset> datasetsSet = new LinkedHashSet<>();
|
||||||
try {
|
try {
|
||||||
datasetItems = PaginationManager.applyPaging(datasetItems, datasetTableRequest);
|
datasetItems = PaginationManager.applyPaging(datasetItems, datasetTableRequest);
|
||||||
List<Dataset> datasets = datasetItems.toList();
|
List<Dataset> datasets = datasetItems.distinct().toList();
|
||||||
datasetsSet.addAll(datasets);
|
datasetsSet.addAll(datasets);
|
||||||
for (int i = 0; i < maxDatasets - datasets.size(); i++) {
|
for (int i = 0; i < maxDatasets - datasets.size(); i++) {
|
||||||
Dataset fakedataset = new Dataset();
|
Dataset fakedataset = new Dataset();
|
||||||
|
|
|
@ -210,9 +210,9 @@ public class DatasetManager {
|
||||||
DataTableData<DatasetListingModel> dataTable = new DataTableData<>();
|
DataTableData<DatasetListingModel> dataTable = new DataTableData<>();
|
||||||
|
|
||||||
|
|
||||||
dataTable.setData(pagedItems.select(this::mapModel).stream().filter(Objects::nonNull).collect(Collectors.toList()));
|
dataTable.setData(pagedItems.distinct().select(this::mapModel).stream().filter(Objects::nonNull).collect(Collectors.toList()));
|
||||||
|
|
||||||
dataTable.setTotalCount(authItems.count());
|
dataTable.setTotalCount(authItems.distinct().count());
|
||||||
|
|
||||||
//CompletableFuture.allOf(itemsFuture, countFuture).join();
|
//CompletableFuture.allOf(itemsFuture, countFuture).join();
|
||||||
return dataTable;
|
return dataTable;
|
||||||
|
|
Loading…
Reference in New Issue