From 5e1ff4eba36fd0a7f409205fd70479f9febd1292 Mon Sep 17 00:00:00 2001 From: jnizet <jb@ninja-squad.com> Date: Fri, 5 Nov 2021 10:43:49 +0100 Subject: [PATCH] feat: externalize the faidare search URL --- .../urgi/faidare/config/FaidareProperties.java | 14 +++++++++++++- .../urgi/faidare/web/thymeleaf/FaidareDialect.java | 8 +++++--- .../web/thymeleaf/FaidareExpressionFactory.java | 8 +++++++- .../faidare/web/thymeleaf/FaidareExpressions.java | 6 ++++-- backend/src/main/resources/application.yml | 2 ++ 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/fr/inra/urgi/faidare/config/FaidareProperties.java b/backend/src/main/java/fr/inra/urgi/faidare/config/FaidareProperties.java index c4cba985..ea790cf2 100644 --- a/backend/src/main/java/fr/inra/urgi/faidare/config/FaidareProperties.java +++ b/backend/src/main/java/fr/inra/urgi/faidare/config/FaidareProperties.java @@ -31,6 +31,13 @@ public class FaidareProperties { private String securityUserGroupWsUrl; private String securityUserGroupWsToken; + /** + * The URL used by the germplasm card to generate links to the faidare search application + * (i.e. the faidare flavor of data-discovery). + */ + @NotBlank + private String searchUrl; + private List<DataSourceImpl> dataSources = new ArrayList<>(); public String getElasticsearchIndexingTemplate() { @@ -118,6 +125,11 @@ public class FaidareProperties { .replace("{documentType}", documentType.toLowerCase()); } + public String getSearchUrl() { + return searchUrl; + } - + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } } diff --git a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareDialect.java b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareDialect.java index 2a02a842..26bfc561 100644 --- a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareDialect.java +++ b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareDialect.java @@ -1,5 +1,6 @@ package fr.inra.urgi.faidare.web.thymeleaf; +import fr.inra.urgi.faidare.config.FaidareProperties; import org.springframework.stereotype.Component; import org.thymeleaf.dialect.AbstractDialect; import org.thymeleaf.dialect.IExpressionObjectDialect; @@ -12,14 +13,15 @@ import org.thymeleaf.expression.IExpressionObjectFactory; @Component public class FaidareDialect extends AbstractDialect implements IExpressionObjectDialect { - private final IExpressionObjectFactory FAIDARE_EXPRESSION_OBJECTS_FACTORY = new FaidareExpressionFactory(); + private final IExpressionObjectFactory faidareExpressionFactory; - protected FaidareDialect() { + public FaidareDialect(FaidareProperties faidareProperties) { super("faidare"); + faidareExpressionFactory = new FaidareExpressionFactory(faidareProperties.getSearchUrl()); } @Override public IExpressionObjectFactory getExpressionObjectFactory() { - return FAIDARE_EXPRESSION_OBJECTS_FACTORY; + return faidareExpressionFactory; } } diff --git a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressionFactory.java b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressionFactory.java index e873375c..8ccd5fe9 100644 --- a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressionFactory.java +++ b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressionFactory.java @@ -16,6 +16,12 @@ public class FaidareExpressionFactory implements IExpressionObjectFactory { private static final Set<String> ALL_EXPRESSION_OBJECT_NAMES = Collections.singleton(FAIDARE_EVALUATION_VARIABLE_NAME); + private final String searchUrl; + + public FaidareExpressionFactory(String searchUrl) { + this.searchUrl = searchUrl; + } + @Override public Set<String> getAllExpressionObjectNames() { return ALL_EXPRESSION_OBJECT_NAMES; @@ -23,7 +29,7 @@ public class FaidareExpressionFactory implements IExpressionObjectFactory { @Override public Object buildObject(IExpressionContext context, String expressionObjectName) { - return new FaidareExpressions(context.getLocale()); + return new FaidareExpressions(context.getLocale(), searchUrl); } @Override diff --git a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressions.java b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressions.java index e5da6215..a8828383 100644 --- a/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressions.java +++ b/backend/src/main/java/fr/inra/urgi/faidare/web/thymeleaf/FaidareExpressions.java @@ -57,9 +57,11 @@ public class FaidareExpressions { } private final Locale locale; + private final String searchUrl; - public FaidareExpressions(Locale locale) { + public FaidareExpressions(Locale locale, String searchUrl) { this.locale = locale; + this.searchUrl = searchUrl; } public String toSiteParam(String siteId) { @@ -85,7 +87,7 @@ public class FaidareExpressions { } public String searchUrl() { - return "https://urgi.versailles.inrae.fr/faidare/search"; + return searchUrl; } private String collPopTitle(CollPopVO collPopVO, Function<String, String> nameTransformer) { diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 8a14dabc..c9141304 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -43,6 +43,8 @@ faidare: security-user-group-ws-url: security-user-group-ws-token: + search-url: https://urgi.versailles.inrae.fr/faidare/search + # TODO: Update URIs to match URL (update in generated JSON document too) # Warning! URIs should match with FAIDARE datadiscovery 'schema:includedInDataCatalog' field value data-sources: -- GitLab