From 9dbf57be0390a7dfa893b473575d607e7f0b9e02 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Thu, 12 Dec 2019 14:02:52 +0200 Subject: [PATCH] Fixes bug at DMP Wizard on creating new Grant, Funder and Project. --- .../controllers/QuickWizardController.java | 20 ++++++++++-------- .../logic/managers/QuickWizardManager.java | 2 ++ .../eu/eudat/models/data/funder/Funder.java | 18 ++++++++++------ .../eu/eudat/models/data/grant/Grant.java | 17 +++++++++------ .../eu/eudat/models/data/project/Project.java | 18 ++++++++++------ .../quickwizard/FunderQuickWizardModel.java | 5 ++++- .../quickwizard/GrantQuickWizardModel.java | 21 +++++++++++-------- .../quickwizard/ProjectQuickWizardModel.java | 5 ++++- 8 files changed, 68 insertions(+), 38 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/QuickWizardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/QuickWizardController.java index adedfcb4f..727d4f0bf 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/QuickWizardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/QuickWizardController.java @@ -3,11 +3,13 @@ package eu.eudat.controllers; import eu.eudat.data.entities.Funder; import eu.eudat.data.entities.Project; -import eu.eudat.logic.managers.*; +import eu.eudat.logic.managers.DatasetManager; +import eu.eudat.logic.managers.QuickWizardManager; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.helpers.responses.ResponseItem; +import eu.eudat.models.data.quickwizard.DatasetCreateWizardModel; import eu.eudat.models.data.quickwizard.DatasetDescriptionQuickWizardModel; import eu.eudat.models.data.quickwizard.QuickWizardModel; import eu.eudat.models.data.security.Principal; @@ -16,7 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import eu.eudat.models.data.quickwizard.DatasetCreateWizardModel; import javax.transaction.Transactional; import javax.validation.Valid; @@ -47,7 +48,6 @@ public class QuickWizardController extends BaseController { if (quickWizard.getFunder() == null) { throw new Exception("Funder is a mandatory entity"); } else if (quickWizard.getFunder().getExistFunder() == null && quickWizard.getFunder().getLabel() == null) { - // funderEntity = null; throw new Exception("Funder is a mandatory entity"); } else if (quickWizard.getFunder().getExistFunder() == null && quickWizard.getFunder().getLabel() != null) { funderEntity = this.quickWizardManager.createOrUpdate(quickWizard.getFunder().toDataFunder(), principal); @@ -57,7 +57,11 @@ public class QuickWizardController extends BaseController { eu.eudat.data.entities.Grant grantEntity; //Create Grant - if (quickWizard.getGrant().getExistGrant() == null) { + if (quickWizard.getGrant() == null) { + throw new Exception("Grant is a mandatory entity"); + } else if (quickWizard.getGrant().getExistGrant() == null && quickWizard.getGrant().getLabel() == null) { + throw new Exception("Grant is a mandatory entity"); + } else if (quickWizard.getGrant().getExistGrant() == null) { grantEntity = this.quickWizardManager.createOrUpdate(quickWizard.getGrant().toDataGrant(), principal); } else { grantEntity = quickWizard.getGrant().getExistGrant().toDataModel(); @@ -68,17 +72,15 @@ public class QuickWizardController extends BaseController { if (quickWizard.getProject().getExistProject() == null && quickWizard.getProject().getLabel() == null) { projectEntity = null; - } else if (quickWizard.getProject().getExistProject() == null && quickWizard.getProject().getLabel() != null){ + } else if (quickWizard.getProject().getExistProject() == null && quickWizard.getProject().getLabel() != null) { projectEntity = this.quickWizardManager.createOrUpdate(quickWizard.getProject().toDataProject(), principal); } else { projectEntity = quickWizard.getProject().getExistProject().toDataModel(); } //Create Dmp - eu.eudat.data.entities.DMP dmpEntity = this.quickWizardManager.createOrUpdate( - quickWizard.getDmp().toDataDmp(grantEntity, projectEntity, principal), - funderEntity, - principal); + DataManagementPlan dataManagementPlan = quickWizard.getDmp().toDataDmp(grantEntity, projectEntity, principal); + eu.eudat.data.entities.DMP dmpEntity = this.quickWizardManager.createOrUpdate(dataManagementPlan, funderEntity, principal); //Create Datasets quickWizard.getDmp().setId(dmpEntity.getId()); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/QuickWizardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/QuickWizardManager.java index b0a424c3f..d75c07603 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/QuickWizardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/QuickWizardManager.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.text.ParseException; +import java.util.UUID; @Component public class QuickWizardManager { @@ -109,6 +110,7 @@ public class QuickWizardManager { eu.eudat.data.entities.Project projectEntity = databaseRepository.getProjectDao().getWithCritetia(criteria).getSingleOrDefault(); if (projectEntity != null) project.setId(projectEntity.getId()); else { + if (project.getId() == null) project.setId(UUID.randomUUID()); project.setType(Project.ProjectType.EXTERNAL.getValue()); databaseRepository.getProjectDao().createOrUpdate(project); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/funder/Funder.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/funder/Funder.java index 22fe5d6d6..1fdfcd5c5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/funder/Funder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/funder/Funder.java @@ -90,22 +90,28 @@ public class Funder implements DataModel this.status = entity.getStatus(); this.created = entity.getCreated(); this.modified = entity.getModified(); - String source = entity.getReference().substring(0, entity.getReference().indexOf(":")); - if (source.equals("dmp")) { - this.source = "Internal"; - } else { - this.source = source; + if (entity.getReference() != null) { + String source = entity.getReference().substring(0, entity.getReference().indexOf(":")); + if (source.equals("dmp")) { + this.source = "Internal"; + } else { + this.source = source; + } } + return this; } @Override public eu.eudat.data.entities.Funder toDataModel() { eu.eudat.data.entities.Funder entity = new eu.eudat.data.entities.Funder(); - entity.setId(this.id); + entity.setId(UUID.randomUUID()); entity.setLabel(this.label); entity.setType(this.type); if (this.source != null && this.source.equals("Internal")) this.source = "dmp"; + if (this.source == null && this.reference != null && this.reference.startsWith("dmp:")) { + entity.setReference(this.reference); + } if (this.reference != null && !this.reference.trim().isEmpty() && this.source != null && !this.source.trim().isEmpty()) { if (this.source.equals(this.reference.substring(0, this.source.length()))) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/grant/Grant.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/grant/Grant.java index 56884fe73..7d42a3964 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/grant/Grant.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/grant/Grant.java @@ -177,11 +177,13 @@ public class Grant implements DataModel { this.files = entity.getContent() != null ? Arrays.asList(new ContentFile(entity.getContent().getLabel(), UUID.fromString(entity.getContent().getUri().split(":")[1]), "final", entity.getContent().getExtension())) : Arrays.asList(new ContentFile("default.png", null, null, null)); if (entity.getFunder() != null) this.funderId = entity.getFunder().getId(); - String source = entity.getReference().substring(0, entity.getReference().indexOf(":")); - if (source.equals("dmp")) { - this.source = "Internal"; - } else { - this.source = source; + if (entity.getReference() != null) { + String source = entity.getReference().substring(0, entity.getReference().indexOf(":")); + if (source.equals("dmp")) { + this.source = "Internal"; + } else { + this.source = source; + } } return this; @@ -190,11 +192,14 @@ public class Grant implements DataModel { @Override public eu.eudat.data.entities.Grant toDataModel() { eu.eudat.data.entities.Grant entity = new eu.eudat.data.entities.Grant(); - entity.setId(this.id); + entity.setId(UUID.randomUUID()); entity.setAbbreviation(this.abbreviation); entity.setLabel(this.label); entity.setType(this.type); if (this.source != null && this.source.equals("Internal")) this.source = "dmp"; + if (this.source == null && this.reference != null && this.reference.startsWith("dmp:")) { + entity.setReference(this.reference); + } if (this.reference != null && !this.reference.trim().isEmpty() && this.source != null && !this.source.trim().isEmpty()) { if (this.source.equals(this.reference.substring(0, this.source.length()))) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/project/Project.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/project/Project.java index 8752e0bd6..45be84962 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/project/Project.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/project/Project.java @@ -165,23 +165,29 @@ public class Project implements DataModel