From c946b6b935f7b329d8c147e28c749de286a4456a Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Tue, 6 Dec 2022 13:28:08 +0200 Subject: [PATCH] initial commit --- depositinterface/pom.xml | 24 ++++ .../models/DMPDepositModel.java | 130 ++++++++++++++++++ .../models/FunderDepositModel.java | 12 ++ .../models/GrantDepositModel.java | 30 ++++ .../models/OrganisationDepositModel.java | 12 ++ .../models/ResearcherDepositModel.java | 20 +++ .../models/UserDMPDepositModel.java | 47 +++++++ .../models/UserInfoDepositModel.java | 20 +++ .../repository/RepositoryDeposit.java | 13 ++ .../RepositoryDepositConfiguration.java | 112 +++++++++++++++ 10 files changed, 420 insertions(+) create mode 100644 depositinterface/pom.xml create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java create mode 100644 depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java diff --git a/depositinterface/pom.xml b/depositinterface/pom.xml new file mode 100644 index 0000000..601d755 --- /dev/null +++ b/depositinterface/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.4 + + + + eu.eudat + depositinterface + 1.0-SNAPSHOT + jar + + + + org.springframework.boot + spring-boot-starter-web + + + + diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java new file mode 100644 index 0000000..620f7b9 --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java @@ -0,0 +1,130 @@ +package eu.eudat.depositinterface.models; + +import org.springframework.http.ResponseEntity; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class DMPDepositModel { + private UUID id; + private int version; + private String label; + private String description; + private boolean isPublic; + private Set users; + private Set organisations; + private Set researchers; + private GrantDepositModel grant; + private File pdfFile; + private String pdfFileName; + private ResponseEntity rdaJson; + private File supportingFilesZip; + private String previousDOI; + private String extraProperties; + + public UUID getId() { + return id; + } + public void setId(UUID id) { + this.id = id; + } + + public int getVersion() { + return version; + } + public void setVersion(int version) { + this.version = version; + } + + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public boolean isPublic() { + return isPublic; + } + public void setPublic(boolean aPublic) { + isPublic = aPublic; + } + + public Set getUsers() { + return users; + } + public void setUsers(Set users) { + this.users = users; + } + + public Set getOrganisations() { + return organisations; + } + public void setOrganisations(Set organisations) { + this.organisations = organisations; + } + + public Set getResearchers() { + return researchers; + } + public void setResearchers(Set researchers) { + this.researchers = researchers; + } + + public GrantDepositModel getGrant() { + return grant; + } + public void setGrant(GrantDepositModel grant) { + this.grant = grant; + } + + public File getPdfFile() { + return pdfFile; + } + public void setPdfFile(File pdfFile) { + this.pdfFile = pdfFile; + } + + public String getPdfFileName() { + return pdfFileName; + } + public void setPdfFileName(String pdfFileName) { + this.pdfFileName = pdfFileName; + } + + public ResponseEntity getRdaJson() { + return rdaJson; + } + public void setRdaJson(ResponseEntity rdaJson) { + this.rdaJson = rdaJson; + } + + public File getSupportingFilesZip() { + return supportingFilesZip; + } + public void setSupportingFilesZip(File supportingFilesZip) { + this.supportingFilesZip = supportingFilesZip; + } + + public String getPreviousDOI() { + return previousDOI; + } + public void setPreviousDOI(String previousDOI) { + this.previousDOI = previousDOI; + } + + public String getExtraProperties() { + return extraProperties; + } + public void setExtraProperties(String extraProperties) { + this.extraProperties = extraProperties; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java new file mode 100644 index 0000000..a7b505c --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java @@ -0,0 +1,12 @@ +package eu.eudat.depositinterface.models; + +public class FunderDepositModel { + private String label; + + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java new file mode 100644 index 0000000..fc7cffd --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java @@ -0,0 +1,30 @@ +package eu.eudat.depositinterface.models; + +import java.util.UUID; + +public class GrantDepositModel { + private UUID id; + private String reference; + private FunderDepositModel funder; + + public UUID getId() { + return id; + } + public void setId(UUID id) { + this.id = id; + } + + public String getReference() { + return reference; + } + public void setReference(String reference) { + this.reference = reference; + } + + public FunderDepositModel getFunder() { + return funder; + } + public void setFunder(FunderDepositModel funder) { + this.funder = funder; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java new file mode 100644 index 0000000..86ea84c --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java @@ -0,0 +1,12 @@ +package eu.eudat.depositinterface.models; + +public class OrganisationDepositModel { + private String label; + + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java new file mode 100644 index 0000000..f6aa037 --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java @@ -0,0 +1,20 @@ +package eu.eudat.depositinterface.models; + +public class ResearcherDepositModel { + private String label; + private String reference; + + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + + public String getReference() { + return reference; + } + public void setReference(String reference) { + this.reference = reference; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java new file mode 100644 index 0000000..e7dae22 --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java @@ -0,0 +1,47 @@ +package eu.eudat.depositinterface.models; + +public class UserDMPDepositModel { + + public enum UserDMPRoles { + OWNER(0), USER(1); + + private int value; + + UserDMPRoles(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + + public static UserDMPRoles fromInteger(int value) { + switch (value) { + case 0: + return OWNER; + case 1: + return USER; + default: + throw new RuntimeException("Unsupported User Dmp Role Message Code"); + } + } + } + + private UserInfoDepositModel user; + private Integer role; + + public UserInfoDepositModel getUser() { + return user; + } + public void setUser(UserInfoDepositModel user) { + this.user = user; + } + + public Integer getRole() { + return role; + } + public void setRole(Integer role) { + this.role = role; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java b/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java new file mode 100644 index 0000000..aeb6d5f --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java @@ -0,0 +1,20 @@ +package eu.eudat.depositinterface.models; + +public class UserInfoDepositModel { + private String name; + private String email; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java b/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java new file mode 100644 index 0000000..80b5bac --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java @@ -0,0 +1,13 @@ +package eu.eudat.depositinterface.repository; + +import eu.eudat.depositinterface.models.DMPDepositModel; + +public interface RepositoryDeposit { + + String deposit(DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception; + + String authenticate(String code); + + RepositoryDepositConfiguration getConfiguration(); + +} diff --git a/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java b/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java new file mode 100644 index 0000000..883f95d --- /dev/null +++ b/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java @@ -0,0 +1,112 @@ +package eu.eudat.depositinterface.repository; + +public class RepositoryDepositConfiguration { + + public enum DepositType { + SystemDeposit(0), UserDeposit(1), BothWaysDeposit(2); + + private int value; + + DepositType(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static DepositType fromInteger(int value) { + switch (value) { + case 0: + return SystemDeposit; + case 1: + return UserDeposit; + case 2: + return BothWaysDeposit; + default: + throw new RuntimeException("Unsupported Deposit Account Type"); + } + } + } + + private int depositType; + private String repositoryId; + private String accessToken; + private String repositoryUrl; + private String repositoryAuthorizationUrl; + private String repositoryRecordUrl; + private String repositoryAccessTokenUrl; + private String repositoryClientId; + private String repositoryClientSecret; + private String redirectUri; + + public int getDepositType() { + return depositType; + } + public void setDepositType(int depositType) { + this.depositType = depositType; + } + + public String getRepositoryId() { + return repositoryId; + } + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } + + public String getAccessToken() { + return accessToken; + } + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public String getRepositoryUrl() { + return repositoryUrl; + } + public void setRepositoryUrl(String repositoryUrl) { + this.repositoryUrl = repositoryUrl; + } + + public String getRepositoryAuthorizationUrl() { + return repositoryAuthorizationUrl; + } + public void setRepositoryAuthorizationUrl(String repositoryAuthorizationUrl) { + this.repositoryAuthorizationUrl = repositoryAuthorizationUrl; + } + + public String getRepositoryRecordUrl() { + return repositoryRecordUrl; + } + public void setRepositoryRecordUrl(String repositoryRecordUrl) { + this.repositoryRecordUrl = repositoryRecordUrl; + } + + public String getRepositoryAccessTokenUrl() { + return repositoryAccessTokenUrl; + } + public void setRepositoryAccessTokenUrl(String repositoryAccessTokenUrl) { + this.repositoryAccessTokenUrl = repositoryAccessTokenUrl; + } + + public String getRepositoryClientId() { + return repositoryClientId; + } + public void setRepositoryClientId(String repositoryClientId) { + this.repositoryClientId = repositoryClientId; + } + + public String getRepositoryClientSecret() { + return repositoryClientSecret; + } + public void setRepositoryClientSecret(String repositoryClientSecret) { + this.repositoryClientSecret = repositoryClientSecret; + } + + public String getRedirectUri() { + return redirectUri; + } + public void setRedirectUri(String redirectUri) { + this.redirectUri = redirectUri; + } +}