Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 0.0.3-maintenance
  • 1.0-maintenance
  • 2.0-maintenance
  • AOU-1412_Add_checksum_of_DataFile_when_importing_in_Fedora
  • HBO-test-jenkins-library
  • HCA-PortingSolidify-3.2
  • HCA-PortingSolidify-3.5
  • adf-1418-do-not-index-certain-files
  • adf-1464-job-clean-download-files
  • adf-1867-list-publications-stats
  • adf-763-1127-improve-license-mapping-during-imports
  • adf-907-notifications-mark-as-read
  • adf-956-add-imprimatur-and-mode-de-diffussion-for-thesis
  • adf-956-new-document-types-imprimatur-and-mode-de-diffusion
  • adf-979-add-depositor-in-notifications-email
  • adf-squash-commits-jb
  • adf-validator-name
  • aou-1512_fix_coherence_orders_for_indexed_structures
  • contributors-with-names
  • jbc-bibliography-tmpl
  • jbc-csl-correctionsDD
  • jbc-update-coverpage
  • master
  • remove-not-neccessary-ExtendWith-annotations
  • rod-refactor-fedora-storage-get-datastream-index
  • rodn-113-indexing-service
  • rodn-1136-author-can-send-in-validation
  • rodn-1253-fix-validator-comments-notifications
  • rodn-1634-bibliography-add-sort-by-validation-date
  • rodn-1829-scheduled-task-to-export-to-orcid
  • rodn-833-add-validation-rules-before-submit
  • rodn-access-contributor-by-orcid-old
  • rodn-finalize-swiss-library-exports-task
  • rodn-fix-IT
  • rodn-improve-access-it
  • rodn-index-contributors-without-director
  • rodn-index-fix-indexing-with-large-fulltext
  • rodn-index-subtype-code
  • rodn-merge-users-it
  • rodn-orcid-export-master-with-other-id
  • rodn-orcid-solidify-webhooks
  • rodn-prevent-hibernate-circular-exception
  • rodn-refactor-labels
  • rodn-search-accent-insensitive
  • rodn-shared-reference-to-collection-debug
  • rodn-solidify-3.5
  • rodn-solidify-es-8
  • rodn-use-index-to-find-validable-publications
  • rodn-use-solidify-global-banner
  • unit-test-bibtex-escaper
  • aou-0.0.1
  • aou-0.0.2
  • aou-0.0.3
  • aou-0.0.3-patch1
  • aou-0.0.4
  • aou-0.0.5
  • aou-1.0.0
  • aou-1.0.1
  • aou-1.0.10
  • aou-1.0.11
  • aou-1.0.12
  • aou-1.0.13
  • aou-1.0.14
  • aou-1.0.15
  • aou-1.0.16
  • aou-1.0.17
  • aou-1.0.18
  • aou-1.0.19
  • aou-1.0.2
  • aou-1.0.20
  • aou-1.0.21
  • aou-1.0.3
  • aou-1.0.4
  • aou-1.0.5
  • aou-1.0.6
  • aou-1.0.7
  • aou-1.0.8
  • aou-1.0.9
  • aou-1.1.0
  • aou-2.0.0
  • aou-2.0.0-RC1
  • aou-2.0.0-RC2
  • aou-2.0.0-RC3
  • aou-2.0.1
  • aou-2.0.10
  • aou-2.0.11
  • aou-2.0.12
  • aou-2.0.13
  • aou-2.0.14
  • aou-2.0.15
  • aou-2.0.16
  • aou-2.0.17
  • aou-2.0.18
  • aou-2.0.19
  • aou-2.0.2
  • aou-2.0.20
  • aou-2.0.21
  • aou-2.0.22
  • aou-2.0.23
  • aou-2.0.24
  • aou-2.0.25
  • aou-2.0.26
  • aou-2.0.27
  • aou-2.0.28
  • aou-2.0.29
  • aou-2.0.3
  • aou-2.0.30
  • aou-2.0.31
  • aou-2.0.32
  • aou-2.0.33
  • aou-2.0.34
  • aou-2.0.4
  • aou-2.0.5
  • aou-2.0.6
  • aou-2.0.7
  • aou-2.0.8
  • aou-2.0.9
  • aou-2.1.0
  • aou-2.1.1
  • aou-2.1.10
  • aou-2.1.11
  • aou-2.1.12
  • aou-2.1.13
  • aou-2.1.14
  • aou-2.1.15
  • aou-2.1.16
  • aou-2.1.17
  • aou-2.1.18
  • aou-2.1.19
  • aou-2.1.2
  • aou-2.1.20
  • aou-2.1.21
  • aou-2.1.22
  • aou-2.1.23
  • aou-2.1.24
  • aou-2.1.25
  • aou-2.1.26
  • aou-2.1.27
  • aou-2.1.28
  • aou-2.1.29
  • aou-2.1.3
  • aou-2.1.30
  • aou-2.1.31
  • aou-2.1.32
  • aou-2.1.33
  • aou-2.1.4
  • aou-2.1.5
  • aou-2.1.6
  • aou-2.1.7
  • aou-2.1.8
150 results

Target

Select target project
  • aou/aou-backend
1 result
Select Git revision
  • 0.0.3-maintenance
  • 1.0-maintenance
  • 2.0-maintenance
  • AOU-1412_Add_checksum_of_DataFile_when_importing_in_Fedora
  • HBO-test-jenkins-library
  • HCA-PortingSolidify-3.2
  • HCA-PortingSolidify-3.5
  • adf-1418-do-not-index-certain-files
  • adf-1464-job-clean-download-files
  • adf-1867-list-publications-stats
  • adf-763-1127-improve-license-mapping-during-imports
  • adf-907-notifications-mark-as-read
  • adf-956-add-imprimatur-and-mode-de-diffussion-for-thesis
  • adf-956-new-document-types-imprimatur-and-mode-de-diffusion
  • adf-979-add-depositor-in-notifications-email
  • adf-squash-commits-jb
  • adf-validator-name
  • aou-1512_fix_coherence_orders_for_indexed_structures
  • contributors-with-names
  • jbc-bibliography-tmpl
  • jbc-csl-correctionsDD
  • jbc-update-coverpage
  • master
  • remove-not-neccessary-ExtendWith-annotations
  • rod-refactor-fedora-storage-get-datastream-index
  • rodn-113-indexing-service
  • rodn-1136-author-can-send-in-validation
  • rodn-1253-fix-validator-comments-notifications
  • rodn-1634-bibliography-add-sort-by-validation-date
  • rodn-1829-scheduled-task-to-export-to-orcid
  • rodn-833-add-validation-rules-before-submit
  • rodn-access-contributor-by-orcid-old
  • rodn-finalize-swiss-library-exports-task
  • rodn-fix-IT
  • rodn-improve-access-it
  • rodn-index-contributors-without-director
  • rodn-index-fix-indexing-with-large-fulltext
  • rodn-index-subtype-code
  • rodn-merge-users-it
  • rodn-orcid-export-master-with-other-id
  • rodn-orcid-solidify-webhooks
  • rodn-prevent-hibernate-circular-exception
  • rodn-refactor-labels
  • rodn-search-accent-insensitive
  • rodn-shared-reference-to-collection-debug
  • rodn-solidify-3.5
  • rodn-solidify-es-8
  • rodn-use-index-to-find-validable-publications
  • rodn-use-solidify-global-banner
  • unit-test-bibtex-escaper
  • aou-0.0.1
  • aou-0.0.2
  • aou-0.0.3
  • aou-0.0.3-patch1
  • aou-0.0.4
  • aou-0.0.5
  • aou-1.0.0
  • aou-1.0.1
  • aou-1.0.10
  • aou-1.0.11
  • aou-1.0.12
  • aou-1.0.13
  • aou-1.0.14
  • aou-1.0.15
  • aou-1.0.16
  • aou-1.0.17
  • aou-1.0.18
  • aou-1.0.19
  • aou-1.0.2
  • aou-1.0.20
  • aou-1.0.21
  • aou-1.0.3
  • aou-1.0.4
  • aou-1.0.5
  • aou-1.0.6
  • aou-1.0.7
  • aou-1.0.8
  • aou-1.0.9
  • aou-1.1.0
  • aou-2.0.0
  • aou-2.0.0-RC1
  • aou-2.0.0-RC2
  • aou-2.0.0-RC3
  • aou-2.0.1
  • aou-2.0.10
  • aou-2.0.11
  • aou-2.0.12
  • aou-2.0.13
  • aou-2.0.14
  • aou-2.0.15
  • aou-2.0.16
  • aou-2.0.17
  • aou-2.0.18
  • aou-2.0.19
  • aou-2.0.2
  • aou-2.0.20
  • aou-2.0.21
  • aou-2.0.22
  • aou-2.0.23
  • aou-2.0.24
  • aou-2.0.25
  • aou-2.0.26
  • aou-2.0.27
  • aou-2.0.28
  • aou-2.0.29
  • aou-2.0.3
  • aou-2.0.30
  • aou-2.0.31
  • aou-2.0.32
  • aou-2.0.33
  • aou-2.0.34
  • aou-2.0.4
  • aou-2.0.5
  • aou-2.0.6
  • aou-2.0.7
  • aou-2.0.8
  • aou-2.0.9
  • aou-2.1.0
  • aou-2.1.1
  • aou-2.1.10
  • aou-2.1.11
  • aou-2.1.12
  • aou-2.1.13
  • aou-2.1.14
  • aou-2.1.15
  • aou-2.1.16
  • aou-2.1.17
  • aou-2.1.18
  • aou-2.1.19
  • aou-2.1.2
  • aou-2.1.20
  • aou-2.1.21
  • aou-2.1.22
  • aou-2.1.23
  • aou-2.1.24
  • aou-2.1.25
  • aou-2.1.26
  • aou-2.1.27
  • aou-2.1.28
  • aou-2.1.29
  • aou-2.1.3
  • aou-2.1.30
  • aou-2.1.31
  • aou-2.1.32
  • aou-2.1.33
  • aou-2.1.4
  • aou-2.1.5
  • aou-2.1.6
  • aou-2.1.7
  • aou-2.1.8
150 results
Show changes
Commits on Source (2)
......@@ -30,6 +30,7 @@ import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
......@@ -51,6 +52,7 @@ import ch.unige.solidify.model.xml.orcid.v3_0.work.WorkSummary;
import ch.unige.solidify.service.OrcidService;
import ch.unige.solidify.util.StringTool;
import ch.unige.aou.config.AouProperties;
import ch.unige.aou.controller.AdminController;
import ch.unige.aou.exception.AouRuntimeException;
import ch.unige.aou.model.ExistingPublicationInfo;
......@@ -60,6 +62,7 @@ import ch.unige.aou.model.notification.EventType;
import ch.unige.aou.model.orcid.ExternalIdentifiers;
import ch.unige.aou.model.orcid.ImportedIdentifiers;
import ch.unige.aou.model.orcid.OrcidSynchronization;
import ch.unige.aou.model.publication.ContributorDTO;
import ch.unige.aou.model.publication.Publication;
import ch.unige.aou.model.settings.Person;
import ch.unige.aou.repository.OrcidSynchronizationRepository;
......@@ -91,9 +94,11 @@ public class OrcidSynchronizationService extends AouResourceService<OrcidSynchro
private final OrcidWorkAdapter orcidWorkAdapter;
public OrcidSynchronizationService(PersonService personService, OrcidService orcidService, DuplicateService duplicateService,
PublicationService publicationService, MetadataImportWorkFlowService metadataImportWorkFlowService, EventService eventService,
MetadataService metadataService, OrcidWorkAdapter orcidWorkAdapter) {
private final List<String> rolesToSendToOrcidProfile;
public OrcidSynchronizationService(AouProperties properties, PersonService personService, OrcidService orcidService,
DuplicateService duplicateService, PublicationService publicationService, MetadataImportWorkFlowService metadataImportWorkFlowService,
EventService eventService, MetadataService metadataService, OrcidWorkAdapter orcidWorkAdapter) {
this.personService = personService;
this.orcidService = orcidService;
this.duplicateService = duplicateService;
......@@ -102,6 +107,7 @@ public class OrcidSynchronizationService extends AouResourceService<OrcidSynchro
this.eventService = eventService;
this.metadataService = metadataService;
this.orcidWorkAdapter = orcidWorkAdapter;
this.rolesToSendToOrcidProfile = List.of(properties.getOrcid().getRolesToSendToOrcidProfile());
}
@Override
......@@ -408,6 +414,7 @@ public class OrcidSynchronizationService extends AouResourceService<OrcidSynchro
List<OrcidSynchronization> orcidSynchronizationsToNotify = new ArrayList<>();
if (person.getOrcidToken() != null) {
Set<Publication> publications = this.publicationService.findCompletedPublicationsAsContributor(person, lastCheckDate);
publications = this.filterByContributorRole(person, publications);
for (Publication publication : publications) {
try {
OrcidSynchronization newOrcidSynchronization = this.sendToOrcidProfile(person, publication.getResId());
......@@ -428,9 +435,38 @@ public class OrcidSynchronizationService extends AouResourceService<OrcidSynchro
}
}
private Set<Publication> filterByContributorRole(Person person, Set<Publication> publications) {
Set<Publication> publicationsFilteredByRole = new HashSet<>();
for (Publication publication : publications) {
if (this.roleCanBeSendToOrcidProfile(person, publication)) {
publicationsFilteredByRole.add(publication);
}
}
return publicationsFilteredByRole;
}
public boolean roleCanBeSendToOrcidProfile(Person person, Publication publication) {
// A person may be linked to many users -> many cnIndividu
List<String> cnIndividus = this.personService.getUnigeCnIndividus(person);
final MetadataExtractor metadataExtractor = this.metadataService.getMetadataExtractor(publication.getMetadataVersion());
final Object depositDoc = metadataExtractor.createDepositDocObjectFromXml(publication.getMetadata());
return metadataExtractor.getContributors(depositDoc).stream().anyMatch(
abstractContributor -> abstractContributor instanceof ContributorDTO contributorDTO
&& cnIndividus.contains(contributorDTO.getCnIndividu())
&& this.rolesToSendToOrcidProfile.contains(contributorDTO.getRole()));
}
public OrcidSynchronization sendToOrcidProfile(Person person, String publicationId) {
if (person.getOrcidToken() != null) {
final Publication publication = this.publicationService.findOne(publicationId);
if (!this.roleCanBeSendToOrcidProfile(person, publication)) {
throw new SolidifyRuntimeException(
"The person " + person + " has no contributor role on publication " + publicationId + " that can be send to his ORCID profile");
}
// Check if the publication already exists in ORCID profile. If this is the case, we don't upload it again
boolean doUpload = true;
List<OrcidSynchronization> orcidSynchronizations = this.findByPersonResIdAndPublicationResId(person.getResId(), publicationId);
......@@ -448,8 +484,6 @@ public class OrcidSynchronizationService extends AouResourceService<OrcidSynchro
}
}
final Publication publication = this.publicationService.findOne(publicationId);
if (doUpload) {
final MetadataExtractor metadataExtractor = this.metadataService.getMetadataExtractor(publication.getMetadataVersion());
final Object depositDoc = metadataExtractor.createDepositDocObjectFromXml(publication.getMetadata());
......
......@@ -194,6 +194,11 @@ public class PersonService extends AouResourceService<Person> implements PersonW
return userUnige != null ? this.externalUidToUnigeCnIndividu(userUnige.getExternalUid()) : Optional.empty();
}
public List<String> getUnigeCnIndividus(Person person) {
return person.getUsers().stream().filter(user -> user.getExternalUid().endsWith(AouConstants.UNIGE_EXTERNAL_UID_SUFFIX))
.map(user -> StringTool.substringBefore(user.getExternalUid(), "@")).toList();
}
public Person getLinkedPerson(Authentication authentication) {
String resId = this.getLinkedPersonId(authentication);
return this.findOne(resId);
......
......@@ -71,6 +71,8 @@ public class SystemPropertyController implements ControllerWithHateoasHome {
private List<FacetProperties> searchFacets;
private List<StaticPage> staticPages;
private String[] orcidContributorRolesToSendToProfile;
public SystemProperties(AouProperties aouProperties, SolidifyProperties solidifyProperties) {
this.defaultChecksum = aouProperties.getParameters().getDefaultChecksum();
this.defaultLicense = aouProperties.getParameters().getDefaultLicense();
......@@ -78,6 +80,7 @@ public class SystemPropertyController implements ControllerWithHateoasHome {
this.limitMaxContributors = aouProperties.getMetadata().getImports().getLimitMaxContributors();
this.defaultContributorRoles = aouProperties.getMetadata().getDefault().getContributorRolesByDepositSubtype();
this.orcid = new OrcidConfigDTO(solidifyProperties.getOrcid());
this.orcidContributorRolesToSendToProfile = aouProperties.getOrcid().getRolesToSendToOrcidProfile();
}
public String getDefaultChecksum() {
......@@ -100,6 +103,10 @@ public class SystemPropertyController implements ControllerWithHateoasHome {
return this.orcid;
}
public String[] getOrcidContributorRolesToSendToProfile() {
return this.orcidContributorRolesToSendToProfile;
}
public Map<String, String> getDefaultContributorRoles() {
return this.defaultContributorRoles;
}
......
......@@ -171,6 +171,8 @@ public class AouProperties {
private List<ScheduledTaskConfig> scheduledTaskConfigs = new ArrayList<>();
private BatchCorrections batchCorrections = new BatchCorrections();
private Orcid orcid = new Orcid();
private int delaySinceLastCheck = 3;
private String thesisNfsSharePath = "";
private String adminEmail = "archive-ouverte@unige.ch";
......@@ -278,7 +280,6 @@ public class AouProperties {
this.daysSinceLastCheckForNewResearchGroups = daysSinceLastCheckForNewResearchGroups;
}
public void setChecksumList(String[] checksumList) {
this.checksumList = checksumList;
}
......@@ -2062,7 +2063,7 @@ public class AouProperties {
private int numberOfErrorToSendForEmail = 10;
public int getNumberOfErrorToSendForEmail() {
return numberOfErrorToSendForEmail;
return this.numberOfErrorToSendForEmail;
}
public void setNumberOfErrorToSendForEmail(int numberOfErrorToSendForEmail) {
......@@ -2070,7 +2071,7 @@ public class AouProperties {
}
public String[] getEmailsToSendNotifications() {
return emailsToSendNotifications;
return this.emailsToSendNotifications;
}
public void setEmailsToSendNotifications(String[] emailsToSendNotifications) {
......@@ -2078,6 +2079,19 @@ public class AouProperties {
}
}
public static class Orcid {
private String[] rolesToSendToOrcidProfile = { AouConstants.CONTRIBUTOR_ROLE_AUTHOR, AouConstants.CONTRIBUTOR_ROLE_COLLABORATOR,
AouConstants.CONTRIBUTOR_ROLE_EDITOR, AouConstants.CONTRIBUTOR_ROLE_GUEST_EDITOR, AouConstants.CONTRIBUTOR_ROLE_PHOTOGRAPHER };
public String[] getRolesToSendToOrcidProfile() {
return this.rolesToSendToOrcidProfile;
}
public void setRolesToSendToOrcidProfile(String[] rolesToSendToOrcidProfile) {
this.rolesToSendToOrcidProfile = rolesToSendToOrcidProfile;
}
}
public Data getData() {
return this.data;
}
......@@ -2266,6 +2280,14 @@ public class AouProperties {
this.scheduledTaskConfigs = scheduledTaskConfigs;
}
public Orcid getOrcid() {
return this.orcid;
}
public void setOrcid(Orcid orcid) {
this.orcid = orcid;
}
private void needsToBeSet(String value, String propertyName) {
if (StringTool.isNullOrEmpty(value)) {
throw new IllegalStateException("Property '" + propertyName + "' must be set in config");
......
@Library('solidify-pipelinelibrary') _
argocdDeploymentPipeline {
argoCdAppName = 'eresearch-argocd/aou-dev'
backEndValues = ['archive-ouverte.aou-administration.image.tag', 'archive-ouverte.aou-accession.image.tag']
frontEndValues = ['archive-ouverte.aou-portal.image.tag']
backEndMap = [url: 'git@gitlab.unige.ch:aou/aou-backend.git', branch: 'master', repository: 'eresearch-staging/aou-solution']
frontEndMap = [url:'git@gitlab.unige.ch:aou/aou-portal.git', branch: 'master', repository: 'eresearch-staging/aou-portal']
}