From 1ccb1c266fb9691ada7a75c4b86424a582fecbcf Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 26 Sep 2022 10:29:15 +0200 Subject: [PATCH] a control on the persistent orgs --- .../controller/AdminController.java | 19 ++++--------- .../organizations/utils/DatabaseUtils.java | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/AdminController.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/AdminController.java index 33635269..943ceadf 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/AdminController.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/AdminController.java @@ -20,15 +20,12 @@ import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.common.controller.AbstractDnetController; import eu.dnetlib.organizations.importer.ImportExecution; import eu.dnetlib.organizations.importer.ImportExecutor; -import eu.dnetlib.organizations.model.PersistentOrganization; import eu.dnetlib.organizations.model.SystemConfiguration; import eu.dnetlib.organizations.model.utils.VocabularyTerm; import eu.dnetlib.organizations.model.view.PersistentOrganizationView; import eu.dnetlib.organizations.model.view.UserView; -import eu.dnetlib.organizations.repository.PersistentOrganizationRepository; import eu.dnetlib.organizations.repository.SystemConfigurationRepository; import eu.dnetlib.organizations.repository.UserRepository; -import eu.dnetlib.organizations.repository.readonly.PersistentOrganizationViewRepository; import eu.dnetlib.organizations.repository.readonly.UserViewRepository; import eu.dnetlib.organizations.utils.DatabaseUtils; import eu.dnetlib.organizations.utils.MailDispatcher; @@ -42,12 +39,6 @@ public class AdminController extends AbstractDnetController { @Autowired private UserViewRepository userViewRepository; - @Autowired - private PersistentOrganizationRepository persistentOrganizationRepository; - - @Autowired - private PersistentOrganizationViewRepository persistentOrganizationViewRepository; - @Autowired private SystemConfigurationRepository systemConfigurationRepository; @@ -215,19 +206,19 @@ public class AdminController extends AbstractDnetController { @GetMapping("/api/persistentOrgs") public Iterable listPersistentOrgs() { - return persistentOrganizationViewRepository.findAll(); + return dbUtils.listPersistentOrgs(); } @PostMapping("/api/persistentOrgs") public Iterable addPersistentOrgs(@RequestBody final List ids) { - ids.forEach(id -> persistentOrganizationRepository.save(new PersistentOrganization(id))); - return persistentOrganizationViewRepository.findAll(); + ids.forEach(id -> dbUtils.addPersistentOrgs(id)); + return dbUtils.listPersistentOrgs(); } @DeleteMapping("/api/persistentOrgs") public Iterable deletePersistentOrgs(@RequestParam final String id) { - persistentOrganizationRepository.deleteById(id); - return persistentOrganizationViewRepository.findAll(); + dbUtils.deletePersistentOrgs(id); + return dbUtils.listPersistentOrgs(); } } 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 4e9c3c07..a5714847 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 @@ -37,6 +37,7 @@ import eu.dnetlib.organizations.model.OpenaireDuplicate; import eu.dnetlib.organizations.model.Organization; import eu.dnetlib.organizations.model.OtherIdentifier; import eu.dnetlib.organizations.model.OtherName; +import eu.dnetlib.organizations.model.PersistentOrganization; import eu.dnetlib.organizations.model.Relationship; import eu.dnetlib.organizations.model.Url; import eu.dnetlib.organizations.model.User; @@ -46,6 +47,7 @@ import eu.dnetlib.organizations.model.utils.OrganizationConflict; import eu.dnetlib.organizations.model.utils.TempBrowseEntry; import eu.dnetlib.organizations.model.utils.VocabularyTerm; import eu.dnetlib.organizations.model.view.OrganizationView; +import eu.dnetlib.organizations.model.view.PersistentOrganizationView; import eu.dnetlib.organizations.model.view.UserView; import eu.dnetlib.organizations.repository.AcronymRepository; import eu.dnetlib.organizations.repository.JournalEntryRepository; @@ -54,11 +56,13 @@ import eu.dnetlib.organizations.repository.OpenaireDuplicateRepository; import eu.dnetlib.organizations.repository.OrganizationRepository; import eu.dnetlib.organizations.repository.OtherIdentifierRepository; import eu.dnetlib.organizations.repository.OtherNameRepository; +import eu.dnetlib.organizations.repository.PersistentOrganizationRepository; import eu.dnetlib.organizations.repository.RelationshipRepository; import eu.dnetlib.organizations.repository.UrlRepository; import eu.dnetlib.organizations.repository.UserCountryRepository; import eu.dnetlib.organizations.repository.UserRepository; import eu.dnetlib.organizations.repository.readonly.OrganizationViewRepository; +import eu.dnetlib.organizations.repository.readonly.PersistentOrganizationViewRepository; @Component public class DatabaseUtils { @@ -87,6 +91,10 @@ public class DatabaseUtils { private OrganizationViewRepository organizationViewRepository; @Autowired private JournalEntryRepository journalEntryRepository; + @Autowired + private PersistentOrganizationRepository persistentOrganizationRepository; + @Autowired + private PersistentOrganizationViewRepository persistentOrganizationViewRepository; @Autowired private JdbcTemplate jdbcTemplate; @@ -585,4 +593,24 @@ public class DatabaseUtils { return jdbcTemplate.queryForList(sql, String.class); } + public Iterable listPersistentOrgs() { + 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(); + if (valid) { + persistentOrganizationRepository.save(new PersistentOrganization(id)); + } else { + throw new RuntimeException("The ID does not refer to an approved Organization"); + } + } + + public void deletePersistentOrgs(final String id) { + persistentOrganizationRepository.deleteById(id); + } + }