diff --git a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dataset.java b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dataset.java index 9cec9f0ba..d4a205f94 100644 --- a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dataset.java +++ b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Dataset.java @@ -54,6 +54,7 @@ public class Dataset implements ElasticEntity { private UUID grant; private List collaborators; private Boolean lastVersion; + private Boolean lastPublicVersion; private List organizations; private Boolean isPublic; private Short grantStatus; @@ -146,6 +147,14 @@ public class Dataset implements ElasticEntity { this.lastVersion = lastVersion; } + public Boolean getLastPublicVersion() { + return lastPublicVersion; + } + + public void setLastPublicVersion(Boolean lastPublicVersion) { + this.lastPublicVersion = lastPublicVersion; + } + public List getOrganizations() { return organizations; } @@ -196,6 +205,7 @@ public class Dataset implements ElasticEntity { builder.endArray(); } builder.field("lastVersion", this.lastVersion.toString()); + builder.field("lastPublicVersion", this.lastPublicVersion.toString()); if (organizations != null) { builder.startArray("organizations"); this.organizations.forEach(x -> { @@ -247,6 +257,7 @@ public class Dataset implements ElasticEntity { this.collaborators = ((List) fields.get("collaborators")).stream().map(hashMap -> new Collaborator().fromElasticEntity(hashMap)).collect(Collectors.toList()); } this.lastVersion = Boolean.parseBoolean((String) fields.get("lastVersion")); + this.lastPublicVersion = Boolean.parseBoolean((String) fields.get("lastPublicVersion")); if (fields.get("organizations") != null) { this.organizations = ((List) fields.get("organizations")).stream().map(hashMap -> new Organization().fromElasticEntity(hashMap)).collect(Collectors.toList()); } diff --git a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DatasetRepository.java b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DatasetRepository.java index c7483514e..fe06427a9 100644 --- a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DatasetRepository.java +++ b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/repository/DatasetRepository.java @@ -67,6 +67,8 @@ public class DatasetRepository extends ElasticRepository { Organization organization = new Organization(); @@ -1316,12 +1317,17 @@ public class DataManagementPlanManager { throw new Exception("DMP is not finalized"); dmp.setPublic(true); apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(dmp); - dmp.getDataset().forEach(dataset -> { - try { - datasetManager.updateTags(apiContext.getOperationsContext().getDatasetRepository(), new DatasetWizardModel().fromDataModel(dataset)); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } + DataManagementPlanCriteria criteria = new DataManagementPlanCriteria(); + criteria.setGroupIds(Collections.singletonList(dmp.getGroupId())); + criteria.setAllVersions(true); + apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria).toList().stream().forEach(dmp1 -> { + dmp1.getDataset().forEach(dataset -> { + try { + datasetManager.updateTags(apiContext.getOperationsContext().getDatasetRepository(), new DatasetWizardModel().fromDataModel(dataset)); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + }); }); UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); sendNotification(dmp, user, NotificationType.DMP_PUBLISH); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 0608a940c..64d91d344 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -609,9 +609,14 @@ public class DatasetManager { dmpCriteria.setGroupIds(Collections.singletonList(datasetWizardModel.getDmp().getGroupId())); apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dmpCriteria).toList().stream() .max(Comparator.comparing(DMP::getVersion)).ifPresent(dmp -> dataset.setLastVersion(dmp.getId().equals(datasetWizardModel.getDmp().getId()))); + apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dmpCriteria).toList().stream().filter(DMP::isPublic) + .max(Comparator.comparing(DMP::getVersion)).ifPresent(dmp -> dataset.setLastPublicVersion(dmp.getId().equals(datasetWizardModel.getDmp().getId()))); if (dataset.getLastVersion() == null) { dataset.setLastVersion(true); } + if (dataset.getLastPublicVersion() == null) { + dataset.setLastPublicVersion(false); + } if (datasetWizardModel.getDmp().getOrganisations() != null) { dataset.setOrganizations(datasetWizardModel.getDmp().getOrganisations().stream().map(org -> { Organization organization = new Organization(); diff --git a/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts b/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts index 393d5ab2a..8ec8a8edb 100644 --- a/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts +++ b/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts @@ -6,7 +6,7 @@ export class DatasetCriteria extends BaseCriteria { public status?: Number; public dmpIds?: string[] = []; public tags?: ExternalSourceItemModel[] = []; - public allVersions?: boolean = true; + public allVersions?: boolean = false; public role?: number; public organisations?: string[] = []; public collaborators?: string[] = [];