From 39d335439fa7ef7f30bc50c615341be4722a2d88 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 14 Nov 2022 11:59:31 +0100 Subject: [PATCH] persistent orgs filter and creation using OpenaireIDs --- .../readonly/OrganizationViewRepository.java | 3 + .../organizations/utils/DatabaseUtils.java | 27 ++++-- .../html/pages/admin/persistentOrgs.html | 91 ++++++++++--------- 3 files changed, 74 insertions(+), 47 deletions(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationViewRepository.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationViewRepository.java index 2ea10b64..5af6cdb9 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationViewRepository.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationViewRepository.java @@ -1,5 +1,7 @@ package eu.dnetlib.organizations.repository.readonly; +import java.util.Optional; + import org.springframework.stereotype.Repository; import eu.dnetlib.organizations.model.view.OrganizationView; @@ -7,4 +9,5 @@ import eu.dnetlib.organizations.model.view.OrganizationView; @Repository public interface OrganizationViewRepository extends ReadOnlyRepository { + Optional findByOpenaireId(String openaireId); } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java index 6b62494c..e58add34 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java @@ -657,13 +657,28 @@ public class DatabaseUtils { return persistentOrganizationViewRepository.findAll(); } - public void addPersistentOrgs(final String id) { - final boolean valid = organizationRepository.findById(id) - .map(Organization::getStatus) - .filter(s -> s.equals(OrganizationStatus.approved.toString())) - .isPresent(); + public String addPersistentOrgs(final String id) { + + final boolean valid; + final String ooid; + + if (id.length() == 46) { + final Optional orgView = organizationViewRepository.findByOpenaireId(id); + valid = orgView.map(OrganizationView::getStatus) + .filter(s -> s.equals(OrganizationStatus.approved.toString())) + .isPresent(); + ooid = orgView.get().getId(); + } else { + valid = organizationRepository.findById(id) + .map(Organization::getStatus) + .filter(s -> s.equals(OrganizationStatus.approved.toString())) + .isPresent(); + ooid = id; + } + if (valid) { - persistentOrganizationRepository.save(new PersistentOrganization(id)); + persistentOrganizationRepository.save(new PersistentOrganization(ooid)); + return ooid; } else { throw new RuntimeException("The ID does not refer to an approved Organization"); } diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/admin/persistentOrgs.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/admin/persistentOrgs.html index 406d155a..28ef2fa4 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/admin/persistentOrgs.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/admin/persistentOrgs.html @@ -4,44 +4,53 @@ It is necessary to persist the identifiers of the organizations associated to an Institutional Dashboard

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDOA Graph Node IDNamePlace
{{o.id}}{{o.openaireId}}{{o.name}} {{o.city || '-'}}, {{o.country}} - -
No persistent organizazions
- - - -
\ No newline at end of file + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDOA Graph Node IDNamePlace
{{o.id}}{{o.openaireId}}{{o.name}} {{o.city || '-'}}, {{o.country}} + +
No persistent organizazions
+ + + +
+
+
+