Skip to content
Snippets Groups Projects

refactor[aou1816]: clean publication metadata in pivot format

Merged Homada.Boumedane requested to merge aou-1816_trim_space_from_values_in_pivot_format into master
All threads resolved!
Files
8
@@ -87,6 +87,7 @@ import ch.unige.aou.model.notification.EventType;
import ch.unige.aou.model.publication.Contributor;
import ch.unige.aou.model.publication.ContributorOtherName;
import ch.unige.aou.model.publication.DocumentFile;
import ch.unige.aou.model.publication.DocumentFile.AccessLevel;
import ch.unige.aou.model.publication.MetadataDifference;
import ch.unige.aou.model.publication.MetadataFile;
import ch.unige.aou.model.publication.Publication;
@@ -95,7 +96,6 @@ import ch.unige.aou.model.publication.PublicationStructure;
import ch.unige.aou.model.publication.PublicationSubSubtype;
import ch.unige.aou.model.publication.PublicationSubtype;
import ch.unige.aou.model.publication.PublicationUserRole;
import ch.unige.aou.model.publication.DocumentFile.AccessLevel;
import ch.unige.aou.model.rest.PersonDTO;
import ch.unige.aou.model.rest.PublicationImportDTO;
import ch.unige.aou.model.security.User;
@@ -172,26 +172,6 @@ public class PublicationService extends AouResourceService<Publication> {
this.generateAgreement = aouProperties.getParameters().isGenerateAgreement();
}
/**
* Return publicationId if another publication contains the same DOI
*
* @param doi
* @return
*/
public Optional<Publication> findByDoi(String doi) {
return ((PublicationRepository) this.itemRepository).findByDoi(doi);
}
/**
* Return String if another publication contains the same PMID
*
* @param pmid
* @return
*/
public Optional<Publication> findByPmid(String pmid) {
return ((PublicationRepository) this.itemRepository).findByPmid(pmid);
}
public Optional<Publication> findByArchiveId(String archiveId) {
return ((PublicationRepository) this.itemRepository).findByArchiveId(archiveId);
}
@@ -302,38 +282,21 @@ public class PublicationService extends AouResourceService<Publication> {
final PublicationStatus currentStatus = publication.getStatus();
switch (currentStatus) {
case IN_PROGRESS:
return newStatus == PublicationStatus.IN_VALIDATION;
case IN_VALIDATION:
return newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.SUBMITTED
|| newStatus == PublicationStatus.REJECTED || newStatus == PublicationStatus.FEEDBACK_REQUIRED;
case IN_ERROR:
case REJECTED:
case COMPLETED:
return newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.DELETED
|| newStatus == PublicationStatus.CANONICAL || newStatus == PublicationStatus.IN_EDITION;
case FEEDBACK_REQUIRED:
return newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.IN_VALIDATION
|| newStatus == PublicationStatus.IN_EDITION || newStatus == PublicationStatus.UPDATES_VALIDATION;
case CANONICAL:
return newStatus == PublicationStatus.COMPLETED;
case IN_EDITION:
return newStatus == PublicationStatus.COMPLETED || newStatus == PublicationStatus.UPDATES_VALIDATION
|| newStatus == PublicationStatus.CANCEL_EDITION;
case UPDATES_VALIDATION:
return newStatus == PublicationStatus.SUBMITTED || newStatus == PublicationStatus.FEEDBACK_REQUIRED
|| newStatus == PublicationStatus.CANCEL_EDITION;
case SUBMITTED:
default:
return false;
}
return switch (currentStatus) {
case IN_PROGRESS -> newStatus == PublicationStatus.IN_VALIDATION;
case IN_VALIDATION -> newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.SUBMITTED
|| newStatus == PublicationStatus.REJECTED || newStatus == PublicationStatus.FEEDBACK_REQUIRED;
case IN_ERROR, REJECTED, COMPLETED -> newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.DELETED
|| newStatus == PublicationStatus.CANONICAL || newStatus == PublicationStatus.IN_EDITION;
case FEEDBACK_REQUIRED -> newStatus == PublicationStatus.IN_PROGRESS || newStatus == PublicationStatus.IN_VALIDATION
|| newStatus == PublicationStatus.IN_EDITION || newStatus == PublicationStatus.UPDATES_VALIDATION;
case CANONICAL -> newStatus == PublicationStatus.COMPLETED;
case IN_EDITION -> newStatus == PublicationStatus.COMPLETED || newStatus == PublicationStatus.UPDATES_VALIDATION
|| newStatus == PublicationStatus.CANCEL_EDITION;
case UPDATES_VALIDATION -> newStatus == PublicationStatus.SUBMITTED || newStatus == PublicationStatus.FEEDBACK_REQUIRED
|| newStatus == PublicationStatus.CANCEL_EDITION;
default -> false;
};
}
/**
@@ -369,7 +332,7 @@ public class PublicationService extends AouResourceService<Publication> {
// Set email for publication creator
Person creator = publication.getCreator();
List<User> userList = this.userService.findByPersonResId(publication.getCreatorId());
User user = userList.stream().filter(User::isEnabled).findFirst().get();
User user = userList.stream().filter(User::isEnabled).findFirst().orElseThrow(() -> new NoSuchElementException("No user found: we should find at least a user"));
creator.setEmail(user.getEmail());
// Set email for publication editor
@@ -532,7 +495,7 @@ public class PublicationService extends AouResourceService<Publication> {
@Override
public Publication save(Publication publication) {
// list contributors before the publication is saved to check after saving if some of them are now orphan and can be deleted
List<String> currentContributorsIds = publication.getContributors().stream().map(Contributor::getResId).collect(Collectors.toList());
List<String> currentContributorsIds = publication.getContributors().stream().map(Contributor::getResId).toList();
final Publication result = super.save(publication);
@@ -541,8 +504,7 @@ public class PublicationService extends AouResourceService<Publication> {
if (publication.isStatusDirty()) {
switch (publication.getStatus()) {
case UPDATES_VALIDATION:
case IN_VALIDATION:
case IN_VALIDATION, UPDATES_VALIDATION:
this.eventService.createEvent(publication, EventType.PUBLICATION_TO_VALIDATE);
break;
case FEEDBACK_REQUIRED:
Loading