From 33539788f9e9d414e70f5a4c9c2046980617b71d Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Fri, 13 Mar 2020 18:33:58 +0200 Subject: [PATCH] Fixed and Improved Dataset indexing --- .../eudat/elastic/entities/Collaborator.java | 6 ++++-- .../eu/eudat/elastic/entities/Dataset.java | 19 +++++++++++-------- .../eudat/elastic/entities/Organization.java | 6 ++++-- .../java/eu/eudat/elastic/entities/Tag.java | 6 ++++-- .../eudat/logic/managers/DatasetManager.java | 2 ++ .../logic/managers/DatasetWizardManager.java | 8 ++++++-- 6 files changed, 31 insertions(+), 16 deletions(-) diff --git a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Collaborator.java b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Collaborator.java index 0bae37a7e..4a9a06d26 100644 --- a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Collaborator.java +++ b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Collaborator.java @@ -36,7 +36,9 @@ public class Collaborator implements ElasticEntity { } @Override - public Collaborator fromElasticEntity(Map fields) { - return null; + public Collaborator fromElasticEntity(Map fields) { + this.id = (String) fields.get("id"); + this.name = (String) fields.get("name"); + return this; } } 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 7e59abe41..645e5afc2 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 @@ -5,10 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -202,16 +199,22 @@ public class Dataset implements ElasticEntity { public Dataset fromElasticEntity(Map fields) { if (fields != null) { this.id = (String) fields.get("id"); - this.tags = ((List) fields.get("tags")); + if (fields.get("tags") != null) { + this.tags = ((List) fields.get("tags")).stream().map(hashMap -> new Tag().fromElasticEntity(hashMap)).collect(Collectors.toList()); + } this.label = (String) fields.get("label"); this.template = UUID.fromString((String) fields.get("template")); this.status = Short.valueOf((String) fields.get("status")); this.dmp = UUID.fromString((String) fields.get("dmp")); - this.group = UUID.fromString((String) fields.get("goup")); + this.group = UUID.fromString((String) fields.get("group")); this.grant = UUID.fromString((String) fields.get("grant")); - this.collaborators = ((List) fields.get("collaborators")); + if (fields.get("collaborators") != null) { + 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.organizations = (List) fields.get("organiztions"); + if (fields.get("organizations") != null) { + this.organizations = ((List) fields.get("organizations")).stream().map(hashMap -> new Organization().fromElasticEntity(hashMap)).collect(Collectors.toList()); + } } return this; } diff --git a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Organization.java b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Organization.java index 4400d4528..4ddd55854 100644 --- a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Organization.java +++ b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Organization.java @@ -35,7 +35,9 @@ public class Organization implements ElasticEntity { } @Override - public Organization fromElasticEntity(Map fields) { - return null; + public Organization fromElasticEntity(Map fields) { + this.id = (String) fields.get("id"); + this.name = (String) fields.get("name"); + return this; } } diff --git a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Tag.java b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Tag.java index 27e27a86f..eb382a81e 100644 --- a/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Tag.java +++ b/dmp-backend/elastic/src/main/java/eu/eudat/elastic/entities/Tag.java @@ -39,7 +39,9 @@ public class Tag implements ElasticEntity { } @Override - public Object fromElasticEntity(Map fields) { - return null; + public Tag fromElasticEntity(Map fields) { + this.id = (String) fields.get("id"); + this.name = (String) fields.get("name"); + return this; } } 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 5afeb5070..5ef5742d4 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 @@ -33,6 +33,7 @@ import eu.eudat.models.data.datasetImport.DatasetImportPagedDatasetProfile; import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.dmp.AssociatedProfile; +import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.listingmodels.DatasetListingModel; import eu.eudat.models.data.security.Principal; @@ -489,6 +490,7 @@ public class DatasetManager { Dataset dataset1 = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset); datasetWizardModel.setId(dataset1.getId()); + datasetWizardModel.setDmp(new DataManagementPlan().fromDataModel(dataset1.getDmp())); updateTags(apiContext.getOperationsContext().getDatasetRepository(), datasetWizardModel); if (sendNotification) { if (dataset1.getStatus() != Dataset.Status.FINALISED.getValue()) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java index ef3a4cc95..7cc73ca96 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java @@ -15,6 +15,7 @@ import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.security.Principal; import eu.eudat.queryable.QueryableList; +import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.UUID; @@ -47,9 +48,12 @@ public class DatasetWizardManager { return; } - public void delete(ApiContext apiContext, UUID uuid) { + public void delete(ApiContext apiContext, UUID uuid) throws IOException { Dataset oldDataset = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid); - oldDataset.setStatus(DMP.DMPStatus.DELETED.getValue()); + eu.eudat.elastic.entities.Dataset oldDatasetElasitc = apiContext.getOperationsContext().getDatasetRepository().findDocument(uuid.toString()); + oldDataset.setStatus(Dataset.Status.DELETED.getValue()); + oldDatasetElasitc.setStatus(oldDataset.getStatus()); apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(oldDataset); + apiContext.getOperationsContext().getDatasetRepository().createOrUpdate(oldDatasetElasitc); } }