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
-
\ No newline at end of file
+
+