diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDao.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDao.java deleted file mode 100644 index 038b4b4b2..000000000 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDao.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.eudat.data.dao.entities; - -import eu.eudat.data.dao.DatabaseAccessLayer; -import eu.eudat.data.entities.DoiFunder; - -import java.util.UUID; - -public interface DoiFunderDao extends DatabaseAccessLayer { - - DoiFunder findFunderByName(String name); -} diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDaoImpl.java deleted file mode 100644 index 3e775b952..000000000 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DoiFunderDaoImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package eu.eudat.data.dao.entities; - -import eu.eudat.data.dao.DatabaseAccess; -import eu.eudat.data.dao.databaselayer.service.DatabaseService; -import eu.eudat.data.entities.DoiFunder; -import eu.eudat.queryable.QueryableList; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -@Component("DoiFunderDao") -public class DoiFunderDaoImpl extends DatabaseAccess implements DoiFunderDao { - - @Autowired - public DoiFunderDaoImpl(DatabaseService databaseService) { - super(databaseService); - } - - @Override - public DoiFunder findFunderByName(String name) { - return this.asQueryable().toList().stream().filter(doiFunder -> name.contains(doiFunder.getName()) || doiFunder.getName().contains(name)).findFirst().orElse(null); - } - - @Override - public DoiFunder createOrUpdate(DoiFunder item) { - return this.getDatabaseService().createOrUpdate(item, DoiFunder.class); - } - - @Override - public CompletableFuture createOrUpdateAsync(DoiFunder item) { - return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item)); - } - - @Override - public DoiFunder find(UUID id) { - return this.getDatabaseService().getQueryable(DoiFunder.class).where(((builder, root) -> builder.equal(root.get("id"), id))).getSingle(); - } - - @Override - public DoiFunder find(UUID id, String hint) { - throw new UnsupportedOperationException(); - } - - @Override - public void delete(DoiFunder item) { - this.getDatabaseService().delete(item); - } - - @Override - public QueryableList asQueryable() { - return this.getDatabaseService().getQueryable(DoiFunder.class); - } -} diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/DoiFunder.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/DoiFunder.java deleted file mode 100644 index 6ee816210..000000000 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/DoiFunder.java +++ /dev/null @@ -1,61 +0,0 @@ -package eu.eudat.data.entities; - -import eu.eudat.queryable.queryableentity.DataEntity; - -import javax.persistence.*; -import java.util.List; -import java.util.UUID; - -@Entity -@Table(name = "\"DoiFunder\"") -public class DoiFunder implements DataEntity { - - @Id - private UUID id; - - @Column(name = "name") - private String name; - - @Column(name = "doi") - private String doi; - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDoi() { - return doi; - } - - public void setDoi(String doi) { - this.doi = doi; - } - - @Override - public void update(DoiFunder entity) { - this.name = entity.name; - this.doi = entity.doi; - } - - @Override - public UUID getKeys() { - return id; - } - - @Override - public DoiFunder buildFromTuple(List tuple, List fields, String base) { - return null; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index f3360b2c4..ec49822c5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -28,6 +28,7 @@ import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.logic.builders.entity.UserInfoBuilder; import eu.eudat.logic.mapper.elastic.DmpMapper; import eu.eudat.logic.mapper.elastic.criteria.DmpCriteriaMapper; +import eu.eudat.logic.proxy.config.DOIFunder; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.forms.VisibilityRuleService; @@ -2094,9 +2095,11 @@ public class DataManagementPlanManager { String grantReferenceHead = dmp.getGrant().getReference().split(":")[0]; if (grantReferenceHead.equals("openaire")) { String grantReferenceTail = dmp.getGrant().getReference().split(":")[3]; - DoiFunder doiFunder = this.apiContext.getOperationsContext().getDatabaseRepository().getDoiFunderDao().findFunderByName(dmp.getGrant().getFunder().getLabel()); + DOIFunder doiFunder = configLoader.getDOIFunders().stream() + .filter(doiFunder1 -> dmp.getGrant().getFunder().getLabel().contains(doiFunder1.getFunder()) || doiFunder1.getFunder().contains(dmp.getGrant().getFunder().getLabel())) + .findFirst().orElse(null); if (doiFunder != null) { - String finalId = doiFunder.getDoi() + "::" + grantReferenceTail; + String finalId = doiFunder.getDOI() + "::" + grantReferenceTail; dataBuilder.append(" \"grants\": [{\n"); dataBuilder.append(" \t\t\"id\": \"").append(finalId).append("\"\n}],\n"); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DOIFunder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DOIFunder.java new file mode 100644 index 000000000..68803e021 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DOIFunder.java @@ -0,0 +1,27 @@ +package eu.eudat.logic.proxy.config; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class DOIFunder { + + @JsonProperty("Funder") + private String funder; + @JsonProperty("DOI") + private String DOI; + + public String getFunder() { + return funder; + } + + public void setFunder(String funder) { + this.funder = funder; + } + + public String getDOI() { + return DOI; + } + + public void setDOI(String DOI) { + this.DOI = DOI; + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java index 37a166027..4f8f3fe44 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java @@ -1,5 +1,6 @@ package eu.eudat.logic.proxy.config.configloaders; +import eu.eudat.logic.proxy.config.DOIFunder; import eu.eudat.logic.proxy.config.ExternalUrls; import eu.eudat.logic.security.customproviders.ConfigurableProvider.entities.ConfigurableProviders; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -13,4 +14,5 @@ public interface ConfigLoader { XWPFDocument getDocument(); ConfigurableProviders getConfigurableProviders(); Map getKeyToSourceMap(); + List getDOIFunders(); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java index 50ec81046..29dcb2f66 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java @@ -2,6 +2,7 @@ package eu.eudat.logic.proxy.config.configloaders; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.logic.proxy.config.DOIFunder; import eu.eudat.logic.proxy.config.ExternalUrls; import eu.eudat.logic.security.customproviders.ConfigurableProvider.entities.ConfigurableProviders; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -32,12 +33,14 @@ import java.util.stream.Collectors; //@Profile("devel") public class DefaultConfigLoader implements ConfigLoader { private static final Logger logger = LoggerFactory.getLogger(DefaultConfigLoader.class); + private static final ObjectMapper mapper = new ObjectMapper(); private ExternalUrls externalUrls; private List rdaProperties; private XWPFDocument document; private ConfigurableProviders configurableProviders; private Map keyToSourceMap; + private List doiFunders = new ArrayList<>(); @Autowired private Environment environment; @@ -212,6 +215,19 @@ public class DefaultConfigLoader implements ConfigLoader { return keyToSourceMap; } + @Override + public List getDOIFunders() { + if (doiFunders == null || doiFunders.isEmpty()) { + try { + List> tempdoiFunders = mapper.readValue(getStreamFromPath(environment.getProperty("configuration.doi_funder")), List.class); + doiFunders = tempdoiFunders.stream().map(map -> mapper.convertValue(map, DOIFunder.class) ).collect(Collectors.toList()); + } catch (IOException e) { + logger.error(e.getLocalizedMessage(), e); + } + } + return doiFunders; + } + private Document getXmlDocumentFromFilePath(String filePath) { InputStream is = null; Document doc; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepository.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepository.java index 3866291ad..a5bdf73fa 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepository.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepository.java @@ -58,7 +58,5 @@ public interface DatabaseRepository { NotificationDao getNotificationDao(); - DoiFunderDao getDoiFunderDao(); - void detachEntity(T entity); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepositoryImpl.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepositoryImpl.java index addeabe7c..0c737937c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepositoryImpl.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/DatabaseRepositoryImpl.java @@ -38,7 +38,6 @@ public class DatabaseRepositoryImpl implements DatabaseRepository { private FunderDao funderDao; private LockDao lockDao; private NotificationDao notificationDao; - private DoiFunderDao doiFunderDao; private EntityManager entityManager; @@ -292,16 +291,6 @@ public class DatabaseRepositoryImpl implements DatabaseRepository { return notificationDao; } - @Override - public DoiFunderDao getDoiFunderDao() { - return doiFunderDao; - } - - @Autowired - public void setDoiFunderDao(DoiFunderDao doiFunderDao) { - this.doiFunderDao = doiFunderDao; - } - @Autowired public void setNotificationDao(NotificationDao notificationDao) { this.notificationDao = notificationDao; diff --git a/dmp-backend/web/src/main/resources/DOI_Funder.json b/dmp-backend/web/src/main/resources/DOI_Funder.json new file mode 100644 index 000000000..9f1c4856d --- /dev/null +++ b/dmp-backend/web/src/main/resources/DOI_Funder.json @@ -0,0 +1,70 @@ +[ + { + "Funder": "Australian Research Council", + "DOI": "10.13039/501100000923" + }, + { + "Funder": "Austrian Science Fund", + "DOI": "10.13039/501100002428" + }, + { + "Funder": "European Commission", + "DOI": "10.13039/501100000780" + }, + { + "Funder": "European Environment Agency", + "DOI": "10.13039/501100000806" + }, + { + "Funder": "Academy of Finland", + "DOI": "10.13039/501100002341" + }, + { + "Funder": "Hrvatska Zaklada za Znanost", + "DOI": "10.13039/501100004488" + }, + { + "Funder": "Fundação para a Ciência e a Tecnologia", + "DOI": "10.13039/501100001871" + }, + { + "Funder": "Ministarstvo Prosvete, Nauke i Tehnološkog Razvoja", + "DOI": "10.13039/501100004564" + }, + { + "Funder": "Ministarstvo Znanosti, Obrazovanja i Sporta", + "DOI": "10.13039/501100006588" + }, + { + "Funder": "National Health and Medical Research Council", + "DOI": "10.13039/501100000925" + }, + { + "Funder": "National Institutes of Health", + "DOI": "10.13039/100000002" + }, + { + "Funder": "National Science Foundation", + "DOI": "10.13039/100000001" + }, + { + "Funder": "Nederlandse Organisatie voor Wetenschappelijk Onderzoek", + "DOI": "10.13039/501100003246" + }, + { + "Funder": "Research Councils", + "DOI": "10.13039/501100000690" + }, + { + "Funder": "Schweizerischer Nationalfonds zur Förderung der wissenschaftlichen Forschung", + "DOI": "10.13039/501100001711" + }, + { + "Funder": "Science Foundation Ireland", + "DOI": "10.13039/501100001602" + }, + { + "Funder": "Wellcome Trust", + "DOI": "10.13039/100004440" + } +] \ No newline at end of file diff --git a/dmp-backend/web/src/main/resources/config/application-devel.properties b/dmp-backend/web/src/main/resources/config/application-devel.properties index d7df68f89..396776273 100644 --- a/dmp-backend/web/src/main/resources/config/application-devel.properties +++ b/dmp-backend/web/src/main/resources/config/application-devel.properties @@ -26,6 +26,7 @@ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx configuration.configurable_login_providers=configurableLoginProviders.json +configuration.doi_funder=DOI_Funder.json ####################EMAIL FILE TEMPLATES OVERRIDES CONFIGURATIONS########## email.invite=classpath:templates/email/email.html diff --git a/dmp-backend/web/src/main/resources/config/application-production.properties b/dmp-backend/web/src/main/resources/config/application-production.properties index 08440f886..971e6be43 100644 --- a/dmp-backend/web/src/main/resources/config/application-production.properties +++ b/dmp-backend/web/src/main/resources/config/application-production.properties @@ -20,6 +20,7 @@ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json +configuration.doi_funder=DOI_Funder.json ####################SPRING MAIL CONFIGURATIONS################# spring.mail.default-encoding=UTF-8 diff --git a/dmp-backend/web/src/main/resources/config/application-staging.properties b/dmp-backend/web/src/main/resources/config/application-staging.properties index afadeb087..8bafc9971 100644 --- a/dmp-backend/web/src/main/resources/config/application-staging.properties +++ b/dmp-backend/web/src/main/resources/config/application-staging.properties @@ -20,6 +20,7 @@ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json +configuration.doi_funder=DOI_Funder.json ####################INVITATION MAIL CONFIGURATIONS############## ####################GENERIC MAIL CONFIGURATIONS################# diff --git a/dmp-backend/web/src/main/resources/config/application.properties b/dmp-backend/web/src/main/resources/config/application.properties index 9ae11ab94..a22106f97 100644 --- a/dmp-backend/web/src/main/resources/config/application.properties +++ b/dmp-backend/web/src/main/resources/config/application.properties @@ -41,6 +41,7 @@ configuration.externalUrls=externalUrls/ExternalUrls.xml configuration.rda=RDACommonStandards.txt configuration.h2020template=documents/h2020.docx configuration.configurable_login_providers=ConfigurableLoginProviders.json +configuration.doi_funder=DOI_Funder.json ####################EMAIL FILE TEMPLATES OVERRIDES CONFIGURATIONS########## email.invite=file:templates/email/email.html