From 535ca2ed5ab96b00d6344fb151496bd370499fb2 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Mon, 26 Aug 2019 16:55:30 +0300 Subject: [PATCH] Adds "create if don't exist" for Funder entity and refactors the existing ones. --- .../managers/DataManagementPlanManager.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index cb6403921..c9890d1c0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -430,8 +430,9 @@ public class DataManagementPlanManager { createOrganisationsIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getOrganisationDao()); createResearchersIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao()); - createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao(), user); - if (newDmp.getProject().getLabel() == null) { + createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao()); + createFunderIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getFunderDao()); + if (newDmp.getProject().getLabel() == null || newDmp.getProject().getLabel().trim().isEmpty()) { newDmp.setProject(newDmp.getProject().projectFromGrant(newDmp.getGrant())); } createProjectIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getProjectDao()); @@ -525,7 +526,7 @@ public class DataManagementPlanManager { createOrganisationsIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getOrganisationDao()); createResearchersIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao()); UserInfo user = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(principal.getId()).build(); - createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao(), user); + createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao()); createProjectIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getProjectDao()); newDmp.setGroupId(oldDmp.getGroupId()); @@ -551,7 +552,7 @@ public class DataManagementPlanManager { createOrganisationsIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getOrganisationDao()); createResearchersIfTheyDontExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao()); UserInfo user = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(principal.getId()).build(); - createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao(), user); + createGrantIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getGrantDao()); createProjectIfItDoesntExist(newDmp, apiContext.getOperationsContext().getDatabaseRepository().getProjectDao()); newDmp.setGroupId(UUID.randomUUID()); @@ -586,7 +587,7 @@ public class DataManagementPlanManager { criteria.setLike(researcher.getReference()); List entries = researcherRepository.getWithCriteria(criteria).toList(); if (entries != null && !entries.isEmpty()) researcher.setId(entries.get(0).getId()); - else researcher = researcherRepository.createOrUpdate(researcher); + else researcherRepository.createOrUpdate(researcher); } } } @@ -598,12 +599,12 @@ public class DataManagementPlanManager { criteria.setLike(organisation.getReference()); List entries = organisationRepository.getWithCriteria(criteria).toList(); if (entries != null && !entries.isEmpty()) organisation.setId(entries.get(0).getId()); - else organisation = organisationRepository.createOrUpdate(organisation); + else organisationRepository.createOrUpdate(organisation); } } } - private void createGrantIfItDoesntExist(DMP newDmp, GrantDao grantDao, UserInfo userInfo) { + private void createGrantIfItDoesntExist(DMP newDmp, GrantDao grantDao) { if (newDmp.getGrant() != null) { Grant grant = newDmp.getGrant(); GrantCriteria criteria = new GrantCriteria(); @@ -617,6 +618,20 @@ public class DataManagementPlanManager { } } + private void createFunderIfItDoesntExist(DMP newDmp, FunderDao funderDao) { + if (newDmp.getGrant().getFunder() != null) { + Funder funder = newDmp.getGrant().getFunder(); + FunderCriteria criteria = new FunderCriteria(); + criteria.setReference(funder.getReference()); + eu.eudat.data.entities.Funder funderEntity = funderDao.getWithCritetia(criteria).getSingleOrDefault(); + if (funderEntity != null) funder.setId(funderEntity.getId()); + else { + funder.setType(Funder.FunderType.EXTERNAL.getValue()); + funderDao.createOrUpdate(funder); + } + } + } + private void createProjectIfItDoesntExist(DMP newDmp, ProjectDao projectDao) { if (newDmp.getProject() != null) { Project project = newDmp.getProject();