From 4e7c5c78c1ddc37c61be736e708ecf91e5f330a4 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 7 Oct 2020 17:04:29 +0200 Subject: [PATCH] fixed triggers --- .../controller/OrganizationController.java | 4 +- .../repository/OrganizationRepository.java | 4 ++ .../organizations/utils/DatabaseUtils.java | 47 +++++++++++-------- .../utils/OrganizationStatus.java | 3 +- .../src/main/resources/sql/schema.sql | 4 +- .../templates/authorizationRequest.html | 4 +- .../src/main/resources/templates/login.html | 4 +- 7 files changed, 40 insertions(+), 30 deletions(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java index 0f0ecd10..2fe7fa02 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java @@ -43,7 +43,6 @@ import eu.dnetlib.organizations.repository.readonly.OrganizationSimpleViewReposi import eu.dnetlib.organizations.repository.readonly.OrganizationViewRepository; import eu.dnetlib.organizations.repository.readonly.SuggestionInfoViewByCountryRepository; import eu.dnetlib.organizations.utils.DatabaseUtils; -import eu.dnetlib.organizations.utils.RelationType; @RestController @RequestMapping("/api/organizations") @@ -270,10 +269,9 @@ public class OrganizationController { return otherIds.stream() .filter(id -> UserInfo.isSuperAdmin(authentication) || userCountryRepository.verifyAuthorizationForId(id, authentication.getName())) - .map(id -> databaseUtils.makeRelation(masterId, id, RelationType.Merges)) + .map(id -> databaseUtils.fixDuplicate(masterId, id)) .flatMap(List::stream) .collect(Collectors.toList()); - } else { return new ArrayList<>(); } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java index 33ada54a..593e60c2 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java @@ -18,4 +18,8 @@ public interface OrganizationRepository extends JpaRepository acronymRepository.save(new Acronym(orgId, s))); orgView.getOtherNames().forEach(n -> otherNameRepository.save(new OtherName(orgId, n.getName(), n.getLang()))); orgView.getOtherIdentifiers().forEach(id -> otherIdentifierRepository.save(new OtherIdentifier(orgId, id.getId(), id.getType()))); @@ -268,12 +270,6 @@ public class DatabaseUtils { final Relationship r2 = new Relationship(id2, id1, type.getInverse().toString()); relationshipRepository.save(r1); relationshipRepository.save(r2); - - if (type == RelationType.Merged_In || type == RelationType.Merges) { - openaireConflictRepository.findById(new OpenaireConflictPK(id1, id2)).ifPresent(openaireConflictRepository::delete); - openaireConflictRepository.findById(new OpenaireConflictPK(id2, id1)).ifPresent(openaireConflictRepository::delete); - } - return Arrays.asList(r1, r2); } @@ -330,4 +326,15 @@ public class DatabaseUtils { } } + @Transactional + public List fixDuplicate(final String masterId, final String otherId) { + organizationRepository.updateStatus(otherId, OrganizationStatus.hidden.toString()); + openaireConflictRepository.findById(new OpenaireConflictPK(masterId, otherId)).ifPresent(openaireConflictRepository::delete); + openaireConflictRepository.findById(new OpenaireConflictPK(otherId, masterId)).ifPresent(openaireConflictRepository::delete); + + // TODO Merge the organizations ??? + + return makeRelation(masterId, otherId, RelationType.Merges); + } + } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/OrganizationStatus.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/OrganizationStatus.java index 7a23d44c..d97b922b 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/OrganizationStatus.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/OrganizationStatus.java @@ -4,5 +4,6 @@ public enum OrganizationStatus { pending, approved, discarded, - hidden + hidden, + deleted } diff --git a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql index 5cf127e0..2ef5cf08 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql +++ b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql @@ -289,7 +289,7 @@ GROUP BY o.id, o.name; CREATE OR REPLACE FUNCTION delete_index_search() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN DELETE FROM org_index_search WHERE id = old.id; - RETURN NULL; + RETURN OLD; END; $$; @@ -304,7 +304,7 @@ BEGIN WHERE o.id = new.id GROUP BY o.id, o.name) ON CONFLICT (id) DO UPDATE SET txt = EXCLUDED.txt; - RETURN NULL; + RETURN NEW; END; $$; diff --git a/apps/dnet-orgs-database-application/src/main/resources/templates/authorizationRequest.html b/apps/dnet-orgs-database-application/src/main/resources/templates/authorizationRequest.html index 8282493d..f12edabc 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/templates/authorizationRequest.html +++ b/apps/dnet-orgs-database-application/src/main/resources/templates/authorizationRequest.html @@ -34,8 +34,8 @@
Authorization request

- Hello '[[${#httpServletRequest.remoteUser}]]', you do not have permission to ...
- If you want to contribute to ... compile the form, an administrator will authorize you as soon as possible. + Hello '[[${#httpServletRequest.remoteUser}]]', you don't have a role yet
+ To apply as data curator compile the form below, an administrator will authorize you as soon as possible.

diff --git a/apps/dnet-orgs-database-application/src/main/resources/templates/login.html b/apps/dnet-orgs-database-application/src/main/resources/templates/login.html index cfa4b8eb..31338963 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/templates/login.html +++ b/apps/dnet-orgs-database-application/src/main/resources/templates/login.html @@ -69,8 +69,8 @@

To use this service you have to perform the following steps:

    -
  1. Register yourself on the OpenAIRE portal.
  2. -
  3. Perform login using the OpenAIRE credentials
  4. +
  5. Register on the OpenAIRE portal.
  6. +
  7. Login using the OpenAIRE credentials
  8. Compile the Authorization Request Form
  9. An administrator will authorize you as soon as possible