diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/DMP.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/DMP.java index 6a44d9339..2d1201680 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/DMP.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/entities/DMP.java @@ -29,7 +29,16 @@ import java.util.stream.Collectors; @NamedEntityGraph( name = "dmpRecentActivity", attributeNodes = { - @NamedAttributeNode("users"), @NamedAttributeNode("creator")}) + @NamedAttributeNode("users"), @NamedAttributeNode("creator")}), + @NamedEntityGraph( + name = "recentDmpModel", + attributeNodes = {@NamedAttributeNode("organisations"), @NamedAttributeNode("researchers"), @NamedAttributeNode("associatedDmps"), + @NamedAttributeNode("grant"), @NamedAttributeNode(value = "users", subgraph = "users"), @NamedAttributeNode("creator"), @NamedAttributeNode("profile"), @NamedAttributeNode(value = "dataset", subgraph = "dataset")}, + subgraphs = { + @NamedSubgraph(name = "users", attributeNodes = {@NamedAttributeNode("user")}), + @NamedSubgraph(name = "dataset", attributeNodes = {@NamedAttributeNode("id"), @NamedAttributeNode("label")}) + } + ) }) public class DMP implements DataEntity { diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java index 521dfb45f..66c917cb0 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java @@ -36,7 +36,17 @@ import java.util.stream.Collectors; @NamedEntityGraph( name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("creator")}, - subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users")})) + subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users")})), + @NamedEntityGraph( + name = "recentDatasetModel", + attributeNodes = {@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"), + @NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"), + @NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("profile"), @NamedAttributeNode("creator")}, + subgraphs = { + @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users"), @NamedAttributeNode("grant"), @NamedAttributeNode("organisations")}), + @NamedSubgraph(name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode("dataRepository")}), + @NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")}) + }) }) public class Dataset implements DataEntity { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index 04bddbd5d..2796406fb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -43,8 +43,8 @@ public class DashBoardManager { private static final Logger logger = LoggerFactory.getLogger(DashBoardManager.class); private final Map> comparators = Stream.of(new Object[][] { - { "modified", Comparator.comparing(o -> ((RecentActivityModel)o).getModified())}, - { "created", Comparator.comparing(o -> ((RecentActivityModel)o).getCreated())}, + { "modified", Comparator.comparing(o -> ((RecentActivityModel)o).getModified()).reversed()}, + { "created", Comparator.comparing(o -> ((RecentActivityModel)o).getCreated()).reversed()}, { "label", Comparator.comparing(o -> ((RecentActivityModel)o).getTitle())}, { "status", Comparator.comparing(o -> ((RecentActivityModel)o).getStatus())} }).collect(Collectors.toMap(data -> (String) data[0], data -> (Comparator)data[1])); @@ -220,35 +220,29 @@ public class DashBoardManager { datasetList = datasetRepository.getWithCriteria(datasetCriteria); } - CompletableFuture> dmps = dmpList - .withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class)) - .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) - .skip(tableRequest.getOffset()) - .take(tableRequest.getLength()) - .selectAsync(item -> { - return new RecentDmpModel().fromEntity(item); - }) - .whenComplete((dmpActivities, throwable) -> { - if (dmpActivities != null) { - recentActivityModels.addAll(dmpActivities); - } - }); + CompletableFuture future = CompletableFuture.runAsync(() -> { + recentActivityModels.addAll(dmpList + .withHint(HintedModelFactory.getHint(RecentDmpModel.class)) + .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) + .skip(tableRequest.getOffset()) + .take(tableRequest.getLength()) + .select(item -> { + return new RecentDmpModel().fromEntity(item); + })); - CompletableFuture> datasets = datasetList - .withHint(HintedModelFactory.getHint(DatasetListingModel.class)) - .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) - .skip(tableRequest.getOffset()) - .take(tableRequest.getLength()) - .selectAsync(item -> { - return new RecentDatasetModel().fromEntity(item); - }) - .whenComplete((datasetActivities, throwable) -> { - if (datasetActivities != null) { - recentActivityModels.addAll(datasetActivities); - } - }); + recentActivityModels.addAll(datasetList + .withHint(HintedModelFactory.getHint(RecentDatasetModel.class)) + .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) + .skip(tableRequest.getOffset()) + .take(tableRequest.getLength()) + .select(item -> { + return new RecentDatasetModel().fromEntity(item); + })); + }); - CompletableFuture.allOf(dmps, datasets).join(); + + CompletableFuture.allOf(future).join(); + // CompletableFuture.allOf(dmps, datasets).join(); return recentActivityModels.stream().sorted(this.comparators.get(tableRequest.getCriteria().getOrder())).limit(tableRequest.getLength()).collect(Collectors.toList()); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentActivityModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentActivityModel.java index f1a23f776..f726561ad 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentActivityModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentActivityModel.java @@ -1,11 +1,13 @@ package eu.eudat.models.data.dashboard.recent.model; +import eu.eudat.models.DataModel; import eu.eudat.models.data.listingmodels.UserInfoListingModel; +import eu.eudat.queryable.queryableentity.DataEntity; import java.util.Date; import java.util.List; -public abstract class RecentActivityModel { +public abstract class RecentActivityModel implements DataModel { private String id; private String title; private String description; diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDatasetModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDatasetModel.java index baae02ebd..4cdaf2361 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDatasetModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDatasetModel.java @@ -9,7 +9,7 @@ import eu.eudat.models.data.listingmodels.UserInfoListingModel; import java.util.Date; import java.util.stream.Collectors; -public class RecentDatasetModel extends RecentActivityModel { +public class RecentDatasetModel extends RecentActivityModel { private String dmp; private String dmpId; private String dataRepositories; @@ -101,4 +101,20 @@ public class RecentDatasetModel extends RecentActivityModel { this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : ""); return this; } + + + @Override + public RecentDatasetModel fromDataModel(Dataset entity) { + return (RecentDatasetModel) this.fromEntity(entity); + } + + @Override + public Dataset toDataModel() throws Exception { + return null; + } + + @Override + public String getHint() { + return "recentDatasetModel"; + } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDmpModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDmpModel.java index d6a879819..15170e1e9 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDmpModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/model/RecentDmpModel.java @@ -4,7 +4,9 @@ import eu.eudat.data.entities.DMP; import eu.eudat.logic.utilities.helpers.LabelBuilder; import eu.eudat.models.data.dmp.AssociatedProfile; import eu.eudat.models.data.dmp.Organisation; +import eu.eudat.models.data.listingmodels.DatasetListingModel; import eu.eudat.models.data.listingmodels.UserInfoListingModel; +import eu.eudat.models.data.urls.DatasetUrlListing; import javax.transaction.Transactional; import java.util.List; @@ -12,10 +14,10 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; -public class RecentDmpModel extends RecentActivityModel { +public class RecentDmpModel extends RecentActivityModel { private String doi; private Map extraProperties; - private List datasets; + private List datasets; private List associatedProfiles; private String organisations; private UUID groupId; @@ -37,11 +39,11 @@ public class RecentDmpModel extends RecentActivityModel { this.extraProperties = extraProperties; } - public List getDatasets() { + public List getDatasets() { return datasets; } - public void setDatasets(List datasets) { + public void setDatasets(List datasets) { this.datasets = datasets; } @@ -80,7 +82,8 @@ public class RecentDmpModel extends RecentActivityModel { this.setModified(entity.getModified()); this.setStatus(entity.getStatus()); this.setVersion(entity.getVersion()); - this.datasets = entity.getDataset().stream().map(dataset -> new RecentDatasetModel().fromDmpEntity(dataset)).collect(Collectors.toList()); + //this.datasets = entity.getDataset().stream().map(dataset -> new RecentDatasetModel().fromDmpEntity(dataset)).collect(Collectors.toList()); + this.datasets = entity.getDataset().stream().map(dataset -> new DatasetUrlListing().fromDataModel(dataset)).collect(Collectors.toList()); this.associatedProfiles = entity.getAssociatedDmps().stream().map(item -> new AssociatedProfile().fromData(item)).collect(Collectors.toList()); this.setFinalizedAt(entity.getFinalizedAt()); this.setGrant(entity.getGrant().getLabel()); @@ -94,4 +97,19 @@ public class RecentDmpModel extends RecentActivityModel { this.setUsers(entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList())); return this; } + + @Override + public RecentDmpModel fromDataModel(DMP entity) { + return (RecentDmpModel) this.fromEntity(entity); + } + + @Override + public DMP toDataModel() throws Exception { + return null; + } + + @Override + public String getHint() { + return "recentDmpModel"; + } } diff --git a/dmp-frontend/src/app/core/model/recent-activity/recent-dmp-activity.model.ts b/dmp-frontend/src/app/core/model/recent-activity/recent-dmp-activity.model.ts index a1ab59124..a74d0bd79 100644 --- a/dmp-frontend/src/app/core/model/recent-activity/recent-dmp-activity.model.ts +++ b/dmp-frontend/src/app/core/model/recent-activity/recent-dmp-activity.model.ts @@ -6,7 +6,7 @@ import { UserInfoListingModel } from '../user/user-info-listing'; export class RecentDmpModel extends RecentActivityModel { doi: String; extraProperties: Map; - datasets: RecentDatasetModel[]; + datasets: any[]; associatedProfiles: DmpAssociatedProfileModel[]; organisations: String; groupId: string; diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html index d4bb29370..8a3949ae5 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html @@ -23,8 +23,8 @@
-
{{dataset.title}},
-
{{dataset.title}}
+
{{dataset.label}},
+
{{dataset.label}}
{{'GENERAL.ACTIONS.SHOW-MORE' | translate}} diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts index aeaa2088e..91355e1fe 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts @@ -70,7 +70,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn .getRecentAcitvity(allDataTableRequest) .subscribe(response => { this.allRecentActivities = response; - this.totalCountRecentEdited.emit(this.pageSize); + this.totalCountRecentEdited.emit(this.allRecentActivities.length); }); } }