diff --git a/mica-core/src/main/java/org/obiba/mica/core/upgrade/Mica510upgrade.java b/mica-core/src/main/java/org/obiba/mica/core/upgrade/Mica510upgrade.java index ead2ffbccd..1c0c2ed354 100644 --- a/mica-core/src/main/java/org/obiba/mica/core/upgrade/Mica510upgrade.java +++ b/mica-core/src/main/java/org/obiba/mica/core/upgrade/Mica510upgrade.java @@ -2,11 +2,15 @@ import javax.inject.Inject; +import com.mongodb.client.MongoCollection; +import org.bson.Document; +import org.json.JSONException; import org.obiba.mica.micaConfig.service.CacheService; import org.obiba.runtime.Version; import org.obiba.runtime.upgrade.UpgradeStep; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Component; @Component @@ -16,14 +20,17 @@ public class Mica510upgrade implements UpgradeStep { private CacheService cacheService; + private final MongoTemplate mongoTemplate; + @Inject - public Mica510upgrade(CacheService cacheService) { + public Mica510upgrade(CacheService cacheService, MongoTemplate mongoTemplate) { this.cacheService = cacheService; + this.mongoTemplate = mongoTemplate; } @Override public String getDescription() { - return "Clear caches for 5.1.0"; + return "Clear caches and updating config for 5.1.0"; } @Override @@ -34,7 +41,36 @@ public Version getAppliesTo() { @Override public void execute(Version currentVersion) { logger.info("Executing Mica upgrade to version 5.1.0"); + + try { + logger.info("Updating 'Mica Config'..."); + updateMicaConfig(); + } catch (JSONException e) { + logger.error("Error occurred while Updating 'Mica Config'"); + } + + logger.info("Clearing all caches..."); cacheService.clearAllCaches(); + + // TODO get updated search plugin and rebuild search index + } + + private void updateMicaConfig() throws JSONException { + Document micaConfig = getDBObjectSafely("micaConfig"); + // delete field anonymousCanCreateCart to reset to default + if (null != micaConfig) { + micaConfig.remove("opal"); + mongoTemplate.save(micaConfig, "micaConfig"); + } } - + + private Document getDBObjectSafely(String collectionName) { + if (mongoTemplate.collectionExists(collectionName)) { + MongoCollection existingCollection = mongoTemplate.getCollection(collectionName); + return existingCollection.find().first(); + } + + return null; + } + } diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/domain/MicaConfig.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/domain/MicaConfig.java index 9127911355..6f12151580 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/domain/MicaConfig.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/domain/MicaConfig.java @@ -41,10 +41,6 @@ public class MicaConfig extends AbstractAuditableDocument { public static final String DEFAULT_CHARSET = Charsets.UTF_8.toString(); - public static final String DEFAULT_OPAL = "https://localhost:8443"; - - public static final String DEFAULT_PUBLIC_URL = "http://localhost:8082"; - public static final String[] LAYOUT_OPTIONS = {"layout1", "layout2"}; public static final long DEFAULT_MAX_ITEMS_PER_SET = 20000; @@ -64,7 +60,7 @@ public class MicaConfig extends AbstractAuditableDocument { @NotBlank private String defaultCharacterSet = DEFAULT_CHARSET; - private String opal = DEFAULT_OPAL; + private String opal; private List roles = Lists.newArrayList(Membership.CONTACT, Membership.INVESTIGATOR); @@ -221,8 +217,12 @@ public void setDefaultCharacterSet(String defaultCharacterSet) { this.defaultCharacterSet = defaultCharacterSet; } + public boolean hasOpal() { + return !Strings.isNullOrEmpty(opal); + } + public String getOpal() { - return opal == null ? "" : opal; + return opal; } public void setOpal(String opal) { diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/CacheService.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/CacheService.java index 4e38583b5a..2cbc639898 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/CacheService.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/CacheService.java @@ -43,18 +43,18 @@ public class CacheService { private EventBus eventBus; @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @CacheEvict(value = "opal-taxonomies", allEntries = true, beforeInvocation = true) public void clearOpalTaxonomiesCache() { log.info("Clearing opal taxonomies cache"); - taxonomyService.getOpalTaxonomies(); + taxonomiesService.getVariableTaxonomies(); } @CacheEvict(value = "micaConfig", allEntries = true) public void clearMicaConfigCache() { log.info("Clearing mica config cache"); - taxonomyService.refresh(); + taxonomiesService.refresh(); } @CacheEvict(value = "aggregations-metadata", allEntries = true) diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/MicaConfigurationProvider.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/MicaConfigurationProvider.java index 63efbb76c6..2a5807731a 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/MicaConfigurationProvider.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/MicaConfigurationProvider.java @@ -27,7 +27,7 @@ public class MicaConfigurationProvider implements ConfigurationProvider { @Inject @Lazy - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @Override public List getLocales() { @@ -46,26 +46,26 @@ public ObjectMapper getObjectMapper() { @Override public Taxonomy getNetworkTaxonomy() { - return taxonomyService.getNetworkTaxonomy(); + return taxonomiesService.getNetworkTaxonomy(); } @Override public Taxonomy getStudyTaxonomy() { - return taxonomyService.getStudyTaxonomy(); + return taxonomiesService.getStudyTaxonomy(); } @Override public Taxonomy getVariableTaxonomy() { - return taxonomyService.getVariableTaxonomy(); + return taxonomiesService.getVariableTaxonomy(); } @Override public Taxonomy getDatasetTaxonomy() { - return taxonomyService.getDatasetTaxonomy(); + return taxonomiesService.getDatasetTaxonomy(); } @Override public List getVariableTaxonomies() { - return taxonomyService.getVariableTaxonomies(); + return taxonomiesService.getAllVariableTaxonomies(); } } diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/OpalService.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/OpalService.java index cfb12a6a7a..20e36d3002 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/OpalService.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/OpalService.java @@ -11,7 +11,6 @@ package org.obiba.mica.micaConfig.service; import com.google.common.base.Strings; -import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.apache.commons.math3.util.Pair; import org.obiba.magma.support.Initialisables; @@ -19,18 +18,12 @@ import org.obiba.mica.micaConfig.AuthType; import org.obiba.mica.micaConfig.domain.OpalCredential; import org.obiba.mica.micaConfig.service.helper.OpalServiceHelper; -import org.obiba.opal.core.cfg.NoSuchTaxonomyException; -import org.obiba.opal.core.cfg.NoSuchVocabularyException; import org.obiba.opal.core.domain.taxonomy.Taxonomy; -import org.obiba.opal.core.domain.taxonomy.TaxonomyEntity; -import org.obiba.opal.core.domain.taxonomy.Vocabulary; import org.obiba.opal.rest.client.magma.OpalJavaClient; import org.obiba.opal.rest.client.magma.RestDatasource; import org.obiba.opal.rest.client.magma.RestDatasourceFactory; -import org.obiba.opal.web.model.Opal; import org.obiba.opal.web.model.Projects; import org.obiba.opal.web.model.Search; -import org.obiba.opal.web.taxonomy.Dtos; import org.obiba.security.KeyStoreManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +36,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.*; -import java.util.stream.Collectors; @Component public class OpalService implements EnvironmentAware { @@ -110,169 +102,21 @@ public synchronized RestDatasource getDatasource(@Nullable String opalUrl, Strin return datasource; } - private RestDatasource createRestDatasource(OpalCredential opalCredential, String projectUrl, String opalUrl, - String project) { - if (opalCredential.getAuthType() == AuthType.CERTIFICATE) { - KeyStoreManager kms = keyStoreService.getKeyStore(OPAL_KEYSTORE); - - if (!kms.aliasExists(opalCredential.getOpalUrl())) throw new IllegalStateException( - "Trying to use opal certificate credential but could not be found in keystore."); - - return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, kms.getKeyStore(), opalUrl, - micaConfigService.getConfig().getSecretKey(), project).create(); - } else if (opalCredential.getAuthType() == AuthType.TOKEN) - return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, opalCredential.getToken(), project).create(); - - return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, opalCredential.getUsername(), - opalCredential.getPassword(), project).create(); - } - - /** - * Get a {@link RestDatasource} from the default Opal server. - * - * @param project - * @return - */ - public RestDatasource getDatasource(String project) { - return getDatasource(getDefaultOpal(), project); - } - - private String getOpalProjectUrl(String opalUrl, String project) { - String baseUrl = opalUrl == null ? getDefaultOpal() : opalUrl; - - return String.format("%s/ws/datasource/%s", StringUtils.stripEnd(baseUrl, "/"), project); - } - /** * Get the url of the default Opal server as defined in the configuration. * * @return */ public String getDefaultOpal() { - return environment.getProperty("opal.url"); + String opalConf = micaConfigService.getConfig().getOpal(); + String opalDefault = environment.getProperty("opal.url"); + return Strings.isNullOrEmpty(opalConf) ? opalDefault : opalConf; } // - // Taxonomies + // Opal Project // - public List getTaxonomies() { - Map taxonomies = getTaxonomiesInternal(); - List taxonomyList = Lists.newArrayList(taxonomies.values()); - Collections.sort(taxonomyList, Comparator.comparing(TaxonomyEntity::getName)); - return taxonomyList; - } - - public List getTaxonomyDtos() { - return getTaxonomies().stream().map(Dtos::asDto).collect(Collectors.toList()); - } - - /** - * Get a summary of all the {@link Taxonomy}s available from Opal master. - * - * @return - */ - public Opal.TaxonomiesDto getTaxonomySummaryDtos() { - List summaries = getTaxonomies().stream().map(Dtos::asSummaryDto) - .collect(Collectors.toList()); - - return Opal.TaxonomiesDto.newBuilder().addAllSummaries(summaries).build(); - } - - /** - * Get a summary of the {@link Taxonomy} available from Opal master. - * - * @param name the taxonomy name - * @return - */ - public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomySummaryDto(String name) { - return Dtos.asSummaryDto(getTaxonomy(name)); - } - - /** - * Get a summary of all the {@link Taxonomy}s with their - * {@link Vocabulary}s from Opal master. - * - * @return - */ - public Opal.TaxonomiesDto getTaxonomyVocabularySummaryDtos() { - List summaries = getTaxonomies().stream().map(Dtos::asVocabularySummaryDto) - .collect(Collectors.toList()); - - return Opal.TaxonomiesDto.newBuilder().addAllSummaries(summaries).build(); - } - - /** - * Get a summary of the {@link Taxonomy} with its - * {@link Vocabulary}s from Opal master. - * - * @param name the taxonomy name - * @return - */ - public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomyVocabularySummaryDto(String name) { - return Dtos.asVocabularySummaryDto(getTaxonomy(name)); - } - - /** - * Get a summary of the {@link Vocabulary} from Opal master. - * - * @param name - * @param vocabularyName - * @return - */ - public Opal.TaxonomiesDto.TaxonomySummaryDto.VocabularySummaryDto getTaxonomyVocabularySummaryDto(String name, - String vocabularyName) { - for (Vocabulary voc : getTaxonomy(name).getVocabularies()) { - if (voc.getName().equals(vocabularyName)) return Dtos.asSummaryDto(voc); - } - throw new NoSuchVocabularyException(name, vocabularyName); - } - - /** - * Get the {@link Taxonomy} from Opal master. - * - * @param name - * @return - * @throws NoSuchTaxonomyException - */ - public Taxonomy getTaxonomy(String name) { - return Dtos.fromDto(getTaxonomyDto(name)); - } - - /** - * Get the {@link Taxonomy} as a Dto from Opal master. - * - * @param name - * @return - * @throws NoSuchTaxonomyException - */ - public Opal.TaxonomyDto getTaxonomyDto(String name) { - Map taxonomies = getTaxonomiesInternal(); - - if (!taxonomies.containsKey(name)) { - throw new NoSuchTaxonomyException(name); - } - - return Dtos.asDto(taxonomies.get(name)); - } - - /** - * Get the {@link Vocabulary} as a Dto from Opal master. - * - * @param name - * @param vocabularyName - * @return - */ - public Opal.VocabularyDto getTaxonomyVocabularyDto(String name, String vocabularyName) { - Map taxonomies = getTaxonomiesInternal(); - - if (!taxonomies.containsKey(name)) { - throw new NoSuchTaxonomyException(name); - } - - return Dtos.asDto(taxonomies.get(name).getVocabulary(vocabularyName)); - } - public List getProjectDtos(String opalUrl) throws URISyntaxException { if (Strings.isNullOrEmpty(opalUrl)) opalUrl = getDefaultOpal(); @@ -283,31 +127,54 @@ public List getProjectDtos(String opalUrl) throws URISyntax } // - // Private methods + // Entities count // - private synchronized Map getTaxonomiesInternal() { + public Search.EntitiesResultDto getEntitiesCount(String opalUrl, String query, String entityType) { try { - return opalServiceHelper.getTaxonomies(getOpalJavaClient()); + return opalServiceHelper.getEntitiesCount(getOpalJavaClient(opalUrl), query, entityType); } catch (URISyntaxException e) { log.error("Malformed opal URI", e); throw new NoSuchElementException(); } } - public Search.EntitiesResultDto getEntitiesCount(String query, String entityType) { - return getEntitiesCount(getDefaultOpal(), query, entityType); - } + // + // Private/package methods + // - public Search.EntitiesResultDto getEntitiesCount(String opalUrl, String query, String entityType) { + synchronized Map getTaxonomiesInternal() { try { - return opalServiceHelper.getEntitiesCount(getOpalJavaClient(opalUrl), query, entityType); + return opalServiceHelper.getTaxonomies(getOpalJavaClient()); } catch (URISyntaxException e) { log.error("Malformed opal URI", e); throw new NoSuchElementException(); } } + private RestDatasource createRestDatasource(OpalCredential opalCredential, String projectUrl, String opalUrl, + String project) { + if (opalCredential.getAuthType() == AuthType.CERTIFICATE) { + KeyStoreManager kms = keyStoreService.getKeyStore(OPAL_KEYSTORE); + + if (!kms.aliasExists(opalCredential.getOpalUrl())) throw new IllegalStateException( + "Trying to use opal certificate credential but could not be found in keystore."); + + return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, kms.getKeyStore(), opalUrl, + micaConfigService.getConfig().getSecretKey(), project).create(); + } else if (opalCredential.getAuthType() == AuthType.TOKEN) + return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, opalCredential.getToken(), project).create(); + + return (RestDatasource) new RestDatasourceFactory(projectUrl, opalUrl, opalCredential.getUsername(), + opalCredential.getPassword(), project).create(); + } + + private String getOpalProjectUrl(String opalUrl, String project) { + String baseUrl = opalUrl == null ? getDefaultOpal() : opalUrl; + + return String.format("%s/ws/datasource/%s", StringUtils.stripEnd(baseUrl, "/"), project); + } + private String getOpalUsername() { return environment.getProperty("opal.username"); } diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/PluginsService.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/PluginsService.java index c3b797f4f2..d5c0930b9f 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/PluginsService.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/PluginsService.java @@ -153,7 +153,7 @@ private void initPlugins() { private void initSearchEngineServicePlugin(PluginResources plugin) { SearchEngineService service = SearchEngineServiceLoader.get(plugin.getURLClassLoader(false)).iterator().next(); - Properties properties = plugin.getProperties(); + Properties properties = cleanProperties(plugin.getProperties()); for (String key : ES_CONFIGURATION) { if (environment.containsProperty(key)) properties.setProperty(key, environment.getProperty(key)); @@ -166,15 +166,19 @@ private void initSearchEngineServicePlugin(PluginResources plugin) { private void initStudyTableSourceServicePlugin(PluginResources plugin) { StudyTableSourceServiceLoader.get(plugin.getURLClassLoader(false)).forEach(service -> { - Properties properties = plugin.getProperties(); - properties.setProperty("MICA_HOME", properties.getProperty("OPAL_HOME")); - properties.remove("OPAL_HOME"); + Properties properties = cleanProperties(plugin.getProperties()); service.configure(properties); service.start(); servicePlugins.add(service); }); } + private Properties cleanProperties(Properties properties) { + properties.setProperty("MICA_HOME", properties.getProperty("OPAL_HOME")); + properties.remove("OPAL_HOME"); + return properties; + } + private synchronized Collection getPlugins(boolean extract) { Map pluginsMap = Maps.newLinkedHashMap(); // make sure plugins directory exists diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomyService.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomiesService.java similarity index 86% rename from mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomyService.java rename to mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomiesService.java index c2d105378a..66408aae1a 100644 --- a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomyService.java +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/TaxonomiesService.java @@ -10,7 +10,6 @@ package org.obiba.mica.micaConfig.service; -import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -37,9 +36,9 @@ import com.google.common.eventbus.Subscribe; @Service -public class TaxonomyService { +public class TaxonomiesService { - private final OpalService opalService; + private final VariableTaxonomiesService variableTaxonomiesService; private final MicaConfigService micaConfigService; @@ -70,8 +69,8 @@ public class TaxonomyService { private Taxonomy networkTaxonomy; @Inject - public TaxonomyService( - OpalService opalService, + public TaxonomiesService( + VariableTaxonomiesService variableTaxonomiesService, MicaConfigService micaConfigService, StudyIdAggregationMetaDataHelper studyHelper, DatasetIdAggregationMetaDataHelper datasetHelper, @@ -81,7 +80,7 @@ public TaxonomyService( NetworksSetsAggregationMetaDataHelper networksSetsAggregationMetaDataHelper, StudiesSetsAggregationMetaDataHelper studiesSetsHelper, VariablesSetsAggregationMetaDataHelper variablesSetsHelper) { - this.opalService = opalService; + this.variableTaxonomiesService = variableTaxonomiesService; this.micaConfigService = micaConfigService; this.studyHelper = studyHelper; this.datasetHelper = datasetHelper; @@ -106,48 +105,73 @@ public boolean metaTaxonomyContains(String taxonomy) { return false; } + /** + * Get the taxonomy that describes the {@link org.obiba.mica.network.domain.Network} properties. + * + * @return + */ @NotNull public Taxonomy getNetworkTaxonomy() { initialize(); return networkTaxonomy; } + /** + * Get the taxonomy that describes the {@link org.obiba.mica.study.domain.BaseStudy} properties. + * + * @return + */ @NotNull public Taxonomy getStudyTaxonomy() { initialize(); return studyTaxonomy; } + /** + * Get the taxonomy that describes the {@link org.obiba.mica.dataset.domain.Dataset} properties. + * + * @return + */ @NotNull public Taxonomy getDatasetTaxonomy() { initialize(); return datasetTaxonomy; } + /** + * Get the taxonomy that describes the {@link org.obiba.mica.dataset.domain.DatasetVariable} properties. + * + * @return + */ @NotNull public Taxonomy getVariableTaxonomy() { initialize(); return variableTaxonomy; } + /** + * Get all taxonomies that apply to the variables, including the one about the built-in properties of the {@link org.obiba.mica.dataset.domain.DatasetVariable}. + * + * @return + */ @NotNull - public List getVariableTaxonomies() { - return Stream.concat(getOpalTaxonomies().stream(), Stream.of(getVariableTaxonomy())).collect(Collectors.toList()); + public List getAllVariableTaxonomies() { + return Stream.concat(getVariableTaxonomies().stream(), Stream.of(getVariableTaxonomy())).collect(Collectors.toList()); } + /** + * Get the taxonomies that apply to the variables' annotations. + * + * @return + */ @NotNull - public synchronized List getOpalTaxonomies() { - List taxonomies = null; - - try { - taxonomies = opalService.getTaxonomies(); - } catch(Exception e) { - // ignore - } - - return taxonomies == null ? Collections.emptyList() : taxonomies; + public synchronized List getVariableTaxonomies() { + return variableTaxonomiesService.getSafeTaxonomies(); } + /** + * Prepare taxonomies for being re-initialized. + */ public synchronized void refresh() { taxonomyTaxonomy = null; networkTaxonomy = null; diff --git a/mica-core/src/main/java/org/obiba/mica/micaConfig/service/VariableTaxonomiesService.java b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/VariableTaxonomiesService.java new file mode 100644 index 0000000000..d6b1ed88b7 --- /dev/null +++ b/mica-core/src/main/java/org/obiba/mica/micaConfig/service/VariableTaxonomiesService.java @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2022 OBiBa. All rights reserved. + * + * This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.obiba.mica.micaConfig.service; + + +import com.google.common.collect.Lists; +import org.obiba.opal.core.cfg.NoSuchTaxonomyException; +import org.obiba.opal.core.cfg.NoSuchVocabularyException; +import org.obiba.opal.core.domain.taxonomy.Taxonomy; +import org.obiba.opal.core.domain.taxonomy.TaxonomyEntity; +import org.obiba.opal.core.domain.taxonomy.Vocabulary; +import org.obiba.opal.web.model.Opal; +import org.obiba.opal.web.taxonomy.Dtos; +import org.springframework.stereotype.Component; + +import javax.inject.Inject; +import javax.validation.constraints.NotNull; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Access to the variable taxonomies, from the different providers, including opal, local files and plugins. + */ +@Component +public class VariableTaxonomiesService { + + @Inject + private OpalService opalService; + + public List getTaxonomies() { + Map taxonomies = opalService.getTaxonomiesInternal(); + List taxonomyList = Lists.newArrayList(taxonomies.values()); + Collections.sort(taxonomyList, Comparator.comparing(TaxonomyEntity::getName)); + return taxonomyList; + } + + /** + * Get a not-null list of taxonomies. + * + * @return + */ + @NotNull + public List getSafeTaxonomies() { + List taxonomies = null; + + try { + taxonomies = getTaxonomies(); + } catch(Exception e) { + // ignore + } + + return taxonomies == null ? Collections.emptyList() : taxonomies; + } + + public List getTaxonomyDtos() { + return getTaxonomies().stream().map(Dtos::asDto).collect(Collectors.toList()); + } + + /** + * Get a summary of all the {@link Taxonomy}s available from Opal master. + * + * @return + */ + public Opal.TaxonomiesDto getTaxonomySummaryDtos() { + List summaries = getTaxonomies().stream().map(Dtos::asSummaryDto) + .collect(Collectors.toList()); + + return Opal.TaxonomiesDto.newBuilder().addAllSummaries(summaries).build(); + } + + /** + * Get a summary of the {@link Taxonomy} available from Opal master. + * + * @param name the taxonomy name + * @return + */ + public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomySummaryDto(String name) { + return Dtos.asSummaryDto(getTaxonomy(name)); + } + + /** + * Get a summary of all the {@link Taxonomy}s with their + * {@link Vocabulary}s from Opal master. + * + * @return + */ + public Opal.TaxonomiesDto getTaxonomyVocabularySummaryDtos() { + List summaries = getTaxonomies().stream().map(Dtos::asVocabularySummaryDto) + .collect(Collectors.toList()); + + return Opal.TaxonomiesDto.newBuilder().addAllSummaries(summaries).build(); + } + + /** + * Get a summary of the {@link Taxonomy} with its + * {@link Vocabulary}s from Opal master. + * + * @param name the taxonomy name + * @return + */ + public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomyVocabularySummaryDto(String name) { + return Dtos.asVocabularySummaryDto(getTaxonomy(name)); + } + + /** + * Get a summary of the {@link Vocabulary} from Opal master. + * + * @param name + * @param vocabularyName + * @return + */ + public Opal.TaxonomiesDto.TaxonomySummaryDto.VocabularySummaryDto getTaxonomyVocabularySummaryDto(String name, + String vocabularyName) { + for (Vocabulary voc : getTaxonomy(name).getVocabularies()) { + if (voc.getName().equals(vocabularyName)) return Dtos.asSummaryDto(voc); + } + throw new NoSuchVocabularyException(name, vocabularyName); + } + + /** + * Get the {@link Taxonomy} from Opal master. + * + * @param name + * @return + * @throws NoSuchTaxonomyException + */ + public Taxonomy getTaxonomy(String name) { + return Dtos.fromDto(getTaxonomyDto(name)); + } + + /** + * Get the {@link Taxonomy} as a Dto from Opal master. + * + * @param name + * @return + * @throws NoSuchTaxonomyException + */ + public Opal.TaxonomyDto getTaxonomyDto(String name) { + Map taxonomies = opalService.getTaxonomiesInternal(); + + if (!taxonomies.containsKey(name)) { + throw new NoSuchTaxonomyException(name); + } + + return Dtos.asDto(taxonomies.get(name)); + } + + /** + * Get the {@link Vocabulary} as a Dto from Opal master. + * + * @param name + * @param vocabularyName + * @return + */ + public Opal.VocabularyDto getTaxonomyVocabularyDto(String name, String vocabularyName) { + Map taxonomies = opalService.getTaxonomiesInternal(); + + if (!taxonomies.containsKey(name)) { + throw new NoSuchTaxonomyException(name); + } + + return Dtos.asDto(taxonomies.get(name).getVocabulary(vocabularyName)); + } + +} diff --git a/mica-core/src/main/java/org/obiba/mica/web/model/MicaConfigDtos.java b/mica-core/src/main/java/org/obiba/mica/web/model/MicaConfigDtos.java index 43611063c6..af8939af94 100644 --- a/mica-core/src/main/java/org/obiba/mica/web/model/MicaConfigDtos.java +++ b/mica-core/src/main/java/org/obiba/mica/web/model/MicaConfigDtos.java @@ -103,7 +103,8 @@ Mica.MicaConfigDto asDto(@NotNull MicaConfig config, String language) { } builder.setIsUsePublicUrlForSharedLink(config.isUsePublicUrlForSharedLink()); - builder.setOpal(config.getOpal()); + if (config.hasOpal()) + builder.setOpal(config.getOpal()); builder.setPrivacyThreshold(config.getPrivacyThreshold()); if(config.getMicaVersion() != null) { diff --git a/mica-rest/src/main/java/org/obiba/mica/micaConfig/rest/MicaConfigResource.java b/mica-rest/src/main/java/org/obiba/mica/micaConfig/rest/MicaConfigResource.java index 16bacf229e..8273ad7e0d 100644 --- a/mica-rest/src/main/java/org/obiba/mica/micaConfig/rest/MicaConfigResource.java +++ b/mica-rest/src/main/java/org/obiba/mica/micaConfig/rest/MicaConfigResource.java @@ -72,11 +72,13 @@ public class MicaConfigResource { private MicaConfigService micaConfigService; @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @Inject private OpalService opalService; + @Inject VariableTaxonomiesService variableTaxonomiesService; + @Inject private OpalCredentialService opalCredentialService; @@ -86,9 +88,6 @@ public class MicaConfigResource { @Inject private Dtos dtos; - @Inject - private CacheService cacheService; - @Inject private EventBus eventBus; @@ -119,7 +118,7 @@ public Mica.PublicMicaConfigDto getPublic() { @RequiresRoles(Roles.MICA_ADMIN) public Response create(@SuppressWarnings("TypeMayBeWeakened") Mica.MicaConfigDto dto) { MicaConfig micaConfig = dtos.fromDto(dto); - taxonomyService.refreshTaxonomyTaxonomyIfNeeded(micaConfigService.getConfig(), micaConfig); + taxonomiesService.refreshTaxonomyTaxonomyIfNeeded(micaConfigService.getConfig(), micaConfig); micaConfigService.save(micaConfig); return Response.noContent().build(); } @@ -678,7 +677,7 @@ public Map getAvailableLanguages(@QueryParam("locale") @DefaultV @RequiresAuthentication @Deprecated public List getTaxonomies() { - return opalService.getTaxonomyDtos(); + return variableTaxonomiesService.getTaxonomyDtos(); } /** @@ -690,7 +689,7 @@ public List getTaxonomies() { @RequiresAuthentication @Deprecated public Opal.TaxonomiesDto getTaxonomySummaries() { - return opalService.getTaxonomySummaryDtos(); + return variableTaxonomiesService.getTaxonomySummaryDtos(); } /** @@ -702,7 +701,7 @@ public Opal.TaxonomiesDto getTaxonomySummaries() { @RequiresAuthentication @Deprecated public Opal.TaxonomiesDto getTaxonomyVocabularySummaries() { - return opalService.getTaxonomyVocabularySummaryDtos(); + return variableTaxonomiesService.getTaxonomyVocabularySummaryDtos(); } /** @@ -714,6 +713,6 @@ public Opal.TaxonomiesDto getTaxonomyVocabularySummaries() { @RequiresAuthentication @Deprecated public Opal.TaxonomyDto getStudyTaxonomy() { - return org.obiba.opal.web.taxonomy.Dtos.asDto(taxonomyService.getStudyTaxonomy()); + return org.obiba.opal.web.taxonomy.Dtos.asDto(taxonomiesService.getStudyTaxonomy()); } } diff --git a/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesResource.java b/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesResource.java index f5d32b12c9..cf7aca5b62 100644 --- a/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesResource.java +++ b/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesResource.java @@ -10,28 +10,21 @@ package org.obiba.mica.taxonomy.rest; -import java.util.List; - -import javax.inject.Inject; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; - +import com.codahale.metrics.annotation.Timed; import com.google.common.eventbus.EventBus; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresRoles; import org.obiba.mica.micaConfig.event.TaxonomiesUpdatedEvent; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.security.Roles; import org.obiba.opal.web.model.Opal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import com.codahale.metrics.annotation.Timed; +import javax.inject.Inject; +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import java.util.List; @Component @Path("/taxonomies") @@ -40,7 +33,7 @@ public class TaxonomiesResource { private static final Logger logger = LoggerFactory.getLogger(TaxonomiesResource.class); @Inject - private OpalService opalService; + private VariableTaxonomiesService variableTaxonomiesService; @Inject private EventBus eventBus; @@ -48,7 +41,7 @@ public class TaxonomiesResource { @GET @Timed public List getTaxonomies() { - return opalService.getTaxonomyDtos(); + return variableTaxonomiesService.getTaxonomyDtos(); } @GET @@ -56,8 +49,8 @@ public List getTaxonomies() { @Timed public Opal.TaxonomiesDto getTaxonomySummaries( @QueryParam("vocabularies") @DefaultValue("false") boolean withVocabularies) { - if(withVocabularies) return opalService.getTaxonomyVocabularySummaryDtos(); - return opalService.getTaxonomySummaryDtos(); + if(withVocabularies) return variableTaxonomiesService.getTaxonomyVocabularySummaryDtos(); + return variableTaxonomiesService.getTaxonomySummaryDtos(); } @PUT diff --git a/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomyResource.java b/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomyResource.java index 924438856b..a537237c50 100644 --- a/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomyResource.java +++ b/mica-rest/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomyResource.java @@ -10,31 +10,25 @@ package org.obiba.mica.taxonomy.rest; -import javax.inject.Inject; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; - -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.obiba.mica.micaConfig.service.OpalService; +import com.codahale.metrics.annotation.Timed; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.opal.web.model.Opal; import org.springframework.stereotype.Component; -import com.codahale.metrics.annotation.Timed; +import javax.inject.Inject; +import javax.ws.rs.*; @Component @Path("/taxonomy/{name}") public class TaxonomyResource { @Inject - private OpalService opalService; + private VariableTaxonomiesService variableTaxonomiesService; @GET @Timed public Opal.TaxonomyDto getTaxonomy(@PathParam("name") String name) { - return opalService.getTaxonomyDto(name); + return variableTaxonomiesService.getTaxonomyDto(name); } @GET @@ -42,8 +36,8 @@ public Opal.TaxonomyDto getTaxonomy(@PathParam("name") String name) { @Timed public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomySummary(@PathParam("name") String name, @QueryParam("vocabularies") @DefaultValue("false") boolean withVocabularies) { - if(withVocabularies) return opalService.getTaxonomyVocabularySummaryDto(name); - return opalService.getTaxonomySummaryDto(name); + if(withVocabularies) return variableTaxonomiesService.getTaxonomyVocabularySummaryDto(name); + return variableTaxonomiesService.getTaxonomySummaryDto(name); } @GET @@ -51,7 +45,7 @@ public Opal.TaxonomiesDto.TaxonomySummaryDto getTaxonomySummary(@PathParam("name @Timed public Opal.VocabularyDto getVocabulary(@PathParam("name") String name, @PathParam("vocabulary") String vocabularyName) { - return opalService.getTaxonomyVocabularyDto(name, vocabularyName); + return variableTaxonomiesService.getTaxonomyVocabularyDto(name, vocabularyName); } @GET @@ -59,7 +53,7 @@ public Opal.VocabularyDto getVocabulary(@PathParam("name") String name, @Timed public Opal.TaxonomiesDto.TaxonomySummaryDto.VocabularySummaryDto getVocabularySummary(@PathParam("name") String name, @PathParam("vocabulary") String vocabularyName) { - return opalService.getTaxonomyVocabularySummaryDto(name, vocabularyName); + return variableTaxonomiesService.getTaxonomyVocabularySummaryDto(name, vocabularyName); } } diff --git a/mica-search/src/main/java/org/obiba/mica/dataset/search/rest/AbstractPublishedDatasetResource.java b/mica-search/src/main/java/org/obiba/mica/dataset/search/rest/AbstractPublishedDatasetResource.java index ce8c28ba2f..641a576408 100644 --- a/mica-search/src/main/java/org/obiba/mica/dataset/search/rest/AbstractPublishedDatasetResource.java +++ b/mica-search/src/main/java/org/obiba/mica/dataset/search/rest/AbstractPublishedDatasetResource.java @@ -21,7 +21,7 @@ import org.obiba.mica.dataset.domain.DatasetVariable; import org.obiba.mica.dataset.domain.HarmonizationDataset; import org.obiba.mica.micaConfig.service.MicaConfigService; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.security.service.SubjectAclService; import org.obiba.mica.spi.search.Indexer; import org.obiba.mica.spi.search.Searcher; @@ -66,7 +66,7 @@ public abstract class AbstractPublishedDatasetResource { protected ObjectMapper objectMapper; @Inject - protected OpalService opalService; + protected VariableTaxonomiesService variableTaxonomiesService; @Inject protected MicaConfigService micaConfigService; @@ -301,7 +301,7 @@ protected Mica.DatasetVariableSummaryDto getDatasetVariableSummaryDto(@NotNull S protected List getTaxonomies() { List taxonomies = null; try { - taxonomies = opalService.getTaxonomies(); + taxonomies = variableTaxonomiesService.getTaxonomies(); } catch (Exception e) { // ignore } diff --git a/mica-search/src/main/java/org/obiba/mica/search/CoverageQueryExecutor.java b/mica-search/src/main/java/org/obiba/mica/search/CoverageQueryExecutor.java index a4ea340c0c..64d5b0e76f 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/CoverageQueryExecutor.java +++ b/mica-search/src/main/java/org/obiba/mica/search/CoverageQueryExecutor.java @@ -12,7 +12,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.spi.search.Searcher; import org.obiba.mica.spi.search.support.AttributeKey; import org.obiba.mica.spi.search.support.JoinQuery; @@ -24,7 +24,6 @@ import org.obiba.opal.core.domain.taxonomy.Vocabulary; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import sun.util.locale.LanguageTag; import javax.annotation.Nullable; import javax.inject.Inject; @@ -43,7 +42,7 @@ public class CoverageQueryExecutor { private static final String LANGUAGE_TAG_UNDETERMINED = "und"; @Inject - private OpalService opalService; + private VariableTaxonomiesService variableTaxonomiesService; @Inject private JoinQueryExecutor joinQueryExecutor; @@ -332,7 +331,7 @@ private MicaSearch.BucketCoverageDto.Builder getBucketCoverageDtoBuilder(String private List getTaxonomies() { List taxonomies = null; try { - taxonomies = opalService.getTaxonomies(); + taxonomies = variableTaxonomiesService.getTaxonomies(); } catch (Exception e) { // ignore } diff --git a/mica-search/src/main/java/org/obiba/mica/search/JoinQueryExecutor.java b/mica-search/src/main/java/org/obiba/mica/search/JoinQueryExecutor.java index 2330389680..defe3889fd 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/JoinQueryExecutor.java +++ b/mica-search/src/main/java/org/obiba/mica/search/JoinQueryExecutor.java @@ -17,7 +17,7 @@ import com.google.common.collect.Lists; import com.google.common.util.concurrent.UncheckedTimeoutException; import org.obiba.mica.core.domain.LocalizedString; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.search.queries.DatasetQuery; import org.obiba.mica.search.queries.DocumentQueryInterface; import org.obiba.mica.search.queries.NetworkQuery; @@ -74,7 +74,7 @@ public class JoinQueryExecutor { private long concurrentJoinQueriesWaitTimeout; @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @Inject private VariableQuery variableQuery; @@ -182,22 +182,22 @@ private JoinQueryResultDto buildQueryResult(JoinQuery joinQueryDto) { builder.setVariableResultDto(joinQueryDto.isWithFacets() ? addAggregationTitles(variableQuery.getResultQuery(), - ImmutableList.builder().add(taxonomyService.getVariableTaxonomy()) - .addAll(taxonomyService.getOpalTaxonomies()).build(), aggregationPostProcessor()) + ImmutableList.builder().add(taxonomiesService.getVariableTaxonomy()) + .addAll(taxonomiesService.getVariableTaxonomies()).build(), aggregationPostProcessor()) : removeAggregations(variableQuery.getResultQuery())); builder.setDatasetResultDto(joinQueryDto.isWithFacets() - ? addAggregationTitles(datasetQuery.getResultQuery(), Lists.newArrayList(taxonomyService.getDatasetTaxonomy()), + ? addAggregationTitles(datasetQuery.getResultQuery(), Lists.newArrayList(taxonomiesService.getDatasetTaxonomy()), null) : removeAggregations(datasetQuery.getResultQuery())); builder.setStudyResultDto(joinQueryDto.isWithFacets() - ? addAggregationTitles(studyQuery.getResultQuery(), Lists.newArrayList(taxonomyService.getStudyTaxonomy()), + ? addAggregationTitles(studyQuery.getResultQuery(), Lists.newArrayList(taxonomiesService.getStudyTaxonomy()), null) : removeAggregations(studyQuery.getResultQuery())); builder.setNetworkResultDto(joinQueryDto.isWithFacets() - ? addAggregationTitles(networkQuery.getResultQuery(), Lists.newArrayList(taxonomyService.getNetworkTaxonomy()), + ? addAggregationTitles(networkQuery.getResultQuery(), Lists.newArrayList(taxonomiesService.getNetworkTaxonomy()), null) : removeAggregations(networkQuery.getResultQuery())); @@ -259,7 +259,7 @@ private String getVocabularyAggregationName(Vocabulary vocabulary) { protected Function, List> aggregationPostProcessor() { return (aggregationResultDtos) -> { - Map buildres = taxonomyService.getOpalTaxonomies().stream() + Map buildres = taxonomiesService.getVariableTaxonomies().stream() .collect(Collectors.toMap(Taxonomy::getName, t -> { MicaSearch.AggregationResultDto.Builder builder = MicaSearch.AggregationResultDto.newBuilder() .setAggregation(t.getName()); diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/ConfigurationTaxonomyMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/ConfigurationTaxonomyMetaDataProvider.java index d476908e16..1be9371a78 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/ConfigurationTaxonomyMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/ConfigurationTaxonomyMetaDataProvider.java @@ -18,7 +18,7 @@ import com.google.common.base.Strings; import org.obiba.mica.core.domain.LocalizedString; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.micaConfig.service.helper.AggregationMetaDataProvider; import org.obiba.opal.core.domain.taxonomy.Taxonomy; import org.obiba.opal.core.domain.taxonomy.Vocabulary; @@ -32,7 +32,7 @@ public abstract class ConfigurationTaxonomyMetaDataProvider implements Aggregati private static final Logger log = LoggerFactory.getLogger(ConfigurationTaxonomyMetaDataProvider.class); @Inject - protected TaxonomyService taxonomyService; + protected TaxonomiesService taxonomiesService; Map> cache; diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/DatasetTaxonomyMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/DatasetTaxonomyMetaDataProvider.java index 3bba075774..503b0f15d8 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/DatasetTaxonomyMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/DatasetTaxonomyMetaDataProvider.java @@ -18,6 +18,6 @@ public class DatasetTaxonomyMetaDataProvider extends ConfigurationTaxonomyMetaDa @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getDatasetTaxonomy(); + return taxonomiesService.getDatasetTaxonomy(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/NetworkTaxonomyMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/NetworkTaxonomyMetaDataProvider.java index 9dfefbe1e2..e160d53c6d 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/NetworkTaxonomyMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/NetworkTaxonomyMetaDataProvider.java @@ -18,6 +18,6 @@ public class NetworkTaxonomyMetaDataProvider extends ConfigurationTaxonomyMetaDa @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getNetworkTaxonomy(); + return taxonomiesService.getNetworkTaxonomy(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/StudyTaxonomyMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/StudyTaxonomyMetaDataProvider.java index 65714bac1e..c885a14183 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/StudyTaxonomyMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/StudyTaxonomyMetaDataProvider.java @@ -18,6 +18,6 @@ public class StudyTaxonomyMetaDataProvider extends ConfigurationTaxonomyMetaData @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getStudyTaxonomy(); + return taxonomiesService.getStudyTaxonomy(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/TaxonomyAggregationMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/TaxonomyAggregationMetaDataProvider.java index 0fbedae7e2..5509c51b6e 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/TaxonomyAggregationMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/TaxonomyAggregationMetaDataProvider.java @@ -10,31 +10,28 @@ package org.obiba.mica.search.aggregations; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import javax.inject.Inject; - -import org.obiba.mica.spi.search.support.AttributeKey; +import com.google.common.base.Strings; +import com.google.common.collect.Maps; import org.obiba.mica.core.domain.LocalizedString; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.micaConfig.service.helper.AggregationMetaDataProvider; +import org.obiba.mica.spi.search.support.AttributeKey; import org.obiba.opal.core.domain.taxonomy.Taxonomy; import org.obiba.opal.core.domain.taxonomy.Term; import org.obiba.opal.core.domain.taxonomy.Vocabulary; import org.springframework.stereotype.Component; -import com.google.common.base.Strings; -import com.google.common.collect.Maps; +import javax.inject.Inject; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Optional; @Component public class TaxonomyAggregationMetaDataProvider implements AggregationMetaDataProvider { @Inject - OpalService opalService; + VariableTaxonomiesService variableTaxonomiesService; Map> cache; @@ -105,7 +102,7 @@ private Optional getVocabulary(String aggregation) { String targetTaxonomy = attrKey.hasNamespace(null) ? "Default" : attrKey.getNamespace(); String targetVocabulary = attrKey.getName(); - return getTaxonomies().stream() // + return getVariableTaxonomies().stream() // .filter(taxonomy -> !Strings.isNullOrEmpty(targetTaxonomy) && taxonomy.getName().equals(targetTaxonomy)) // .map(Taxonomy::getVocabularies) // .flatMap(Collection::stream) // @@ -113,12 +110,7 @@ private Optional getVocabulary(String aggregation) { .findFirst(); } - protected List getTaxonomies() { - try { - return opalService.getTaxonomies(); - } catch(Exception e) { - // ignore - } - return Collections.emptyList(); + protected List getVariableTaxonomies() { + return variableTaxonomiesService.getSafeTaxonomies(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/search/aggregations/VariableTaxonomyMetaDataProvider.java b/mica-search/src/main/java/org/obiba/mica/search/aggregations/VariableTaxonomyMetaDataProvider.java index 1a8ba47814..7a102a116b 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/aggregations/VariableTaxonomyMetaDataProvider.java +++ b/mica-search/src/main/java/org/obiba/mica/search/aggregations/VariableTaxonomyMetaDataProvider.java @@ -18,6 +18,6 @@ public class VariableTaxonomyMetaDataProvider extends ConfigurationTaxonomyMetaD @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getVariableTaxonomy(); + return taxonomiesService.getVariableTaxonomy(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/search/queries/AbstractDocumentQuery.java b/mica-search/src/main/java/org/obiba/mica/search/queries/AbstractDocumentQuery.java index 7e0bfe45ad..350171a1bf 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/queries/AbstractDocumentQuery.java +++ b/mica-search/src/main/java/org/obiba/mica/search/queries/AbstractDocumentQuery.java @@ -16,7 +16,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.obiba.mica.micaConfig.service.MicaConfigService; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.micaConfig.service.helper.AggregationMetaDataProvider; import org.obiba.mica.search.DocumentQueryHelper; import org.obiba.mica.search.aggregations.AggregationMetaDataResolver; @@ -55,7 +55,7 @@ public abstract class AbstractDocumentQuery implements DocumentQueryInterface { protected MicaConfigService micaConfigService; @Inject - protected TaxonomyService taxonomyService; + protected TaxonomiesService taxonomiesService; @Inject protected SubjectAclService subjectAclService; diff --git a/mica-search/src/main/java/org/obiba/mica/search/queries/DatasetQuery.java b/mica-search/src/main/java/org/obiba/mica/search/queries/DatasetQuery.java index 05df358b7d..ad2af62a63 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/queries/DatasetQuery.java +++ b/mica-search/src/main/java/org/obiba/mica/search/queries/DatasetQuery.java @@ -99,7 +99,7 @@ public Collection getValues() { @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getDatasetTaxonomy(); + return taxonomiesService.getDatasetTaxonomy(); } public void setDatasetIdProvider(DocumentQueryIdProvider provider) { @@ -135,7 +135,7 @@ public void query(List studyIds, CountStatsData counts, QueryScope scope @Nullable @Override protected Properties getAggregationsProperties(List filter) { - Properties properties = getAggregationsProperties(filter, taxonomyService.getDatasetTaxonomy()); + Properties properties = getAggregationsProperties(filter, taxonomiesService.getDatasetTaxonomy()); if (!properties.containsKey(STUDY_JOIN_FIELD)) properties.put(STUDY_JOIN_FIELD, ""); if (!properties.containsKey(HARMONIZATION_STUDY_JOIN_FIELD)) properties.put(HARMONIZATION_STUDY_JOIN_FIELD, ""); if (!properties.containsKey(ID)) properties.put(ID, ""); diff --git a/mica-search/src/main/java/org/obiba/mica/search/queries/NetworkQuery.java b/mica-search/src/main/java/org/obiba/mica/search/queries/NetworkQuery.java index 4633d4e16c..2931149467 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/queries/NetworkQuery.java +++ b/mica-search/src/main/java/org/obiba/mica/search/queries/NetworkQuery.java @@ -103,13 +103,13 @@ public Collection getValues() { @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getNetworkTaxonomy(); + return taxonomiesService.getNetworkTaxonomy(); } @Nullable @Override protected Properties getAggregationsProperties(List filter) { - Properties properties = getAggregationsProperties(filter, taxonomyService.getNetworkTaxonomy()); + Properties properties = getAggregationsProperties(filter, taxonomiesService.getNetworkTaxonomy()); if (!properties.containsKey(JOIN_FIELD)) properties.put(JOIN_FIELD, ""); return properties; } diff --git a/mica-search/src/main/java/org/obiba/mica/search/queries/StudyQuery.java b/mica-search/src/main/java/org/obiba/mica/search/queries/StudyQuery.java index 8a7d83b887..b5aa2dc989 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/queries/StudyQuery.java +++ b/mica-search/src/main/java/org/obiba/mica/search/queries/StudyQuery.java @@ -91,7 +91,7 @@ protected Searcher.IdFilter getAccessibleIdFilter() { @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getStudyTaxonomy(); + return taxonomiesService.getStudyTaxonomy(); } @Override @@ -139,7 +139,7 @@ private Consumer getStudyConsumer(QueryScope scope, StudyResultDto.Bu @Nullable @Override protected Properties getAggregationsProperties(List filter) { - Properties properties = getAggregationsProperties(filter, taxonomyService.getStudyTaxonomy()); + Properties properties = getAggregationsProperties(filter, taxonomiesService.getStudyTaxonomy()); if (!properties.containsKey(JOIN_FIELD)) properties.put(JOIN_FIELD, ""); return properties; } diff --git a/mica-search/src/main/java/org/obiba/mica/search/queries/VariableQuery.java b/mica-search/src/main/java/org/obiba/mica/search/queries/VariableQuery.java index 6e9a448bf7..5262d0295a 100644 --- a/mica-search/src/main/java/org/obiba/mica/search/queries/VariableQuery.java +++ b/mica-search/src/main/java/org/obiba/mica/search/queries/VariableQuery.java @@ -14,11 +14,10 @@ import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import javax.inject.Inject; import org.obiba.mica.dataset.domain.DatasetVariable; import org.obiba.mica.dataset.service.CollectedDatasetService; import org.obiba.mica.dataset.service.HarmonizedDatasetService; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.micaConfig.service.helper.AggregationMetaDataProvider; import org.obiba.mica.network.domain.Network; import org.obiba.mica.search.DocumentQueryHelper; @@ -40,6 +39,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Nullable; +import javax.inject.Inject; import javax.validation.constraints.NotNull; import java.io.IOException; import java.util.*; @@ -63,7 +63,7 @@ public class VariableQuery extends AbstractDocumentQuery { private static final String LANGUAGE_TAG_UNDETERMINED = "und"; - private final OpalService opalService; + private final VariableTaxonomiesService variableTaxonomiesService; private final PublishedStudyService publishedStudyService; @@ -91,7 +91,7 @@ public class VariableQuery extends AbstractDocumentQuery { @Inject public VariableQuery( - OpalService opalService, + VariableTaxonomiesService variableTaxonomiesService, PublishedStudyService publishedStudyService, CollectedDatasetService collectedDatasetService, HarmonizedDatasetService harmonizedDatasetService, @@ -103,7 +103,7 @@ public VariableQuery( PopulationAggregationMetaDataProvider populationAggregationMetaDataProvider, StudyAggregationMetaDataProvider studyAggregationMetaDataProvider, VariablesSetsAggregationMetaDataProvider variablesSetsAggregationMetaDataProvider) { - this.opalService = opalService; + this.variableTaxonomiesService = variableTaxonomiesService; this.publishedStudyService = publishedStudyService; this.dtos = dtos; this.datasetAggregationMetaDataProvider = datasetAggregationMetaDataProvider; @@ -320,7 +320,7 @@ protected Properties getAggregationsProperties(List filter) { if (mode != QueryMode.LIST && filter != null && !filter.isEmpty()) { List patterns = filter.stream().map(Pattern::compile).collect(Collectors.toList()); - getOpalTaxonomies().stream().filter(Taxonomy::hasVocabularies) + getVariableTaxonomies().stream().filter(Taxonomy::hasVocabularies) .forEach(taxonomy -> taxonomy.getVocabularies().stream().filter(Vocabulary::hasTerms).forEach(vocabulary -> { String field = vocabulary.getAttributes().containsKey("field") ? vocabulary.getAttributeValue("field") @@ -330,7 +330,7 @@ protected Properties getAggregationsProperties(List filter) { properties.put(field, ""); })); - taxonomyService.getVariableTaxonomy().getVocabularies().forEach(vocabulary -> { + taxonomiesService.getVariableTaxonomy().getVocabularies().forEach(vocabulary -> { String field = vocabulary.getAttributes().containsKey("field") ? vocabulary.getAttributeValue("field") : vocabulary.getName().replace('-', '.'); @@ -357,19 +357,11 @@ protected List getAdditionalAggregationBuckets() { @Override protected Taxonomy getTaxonomy() { - return taxonomyService.getVariableTaxonomy(); + return taxonomiesService.getVariableTaxonomy(); } @NotNull - private List getOpalTaxonomies() { - List taxonomies = null; - - try { - taxonomies = opalService.getTaxonomies(); - } catch (Exception e) { - // ignore - } - - return taxonomies == null ? Collections.emptyList() : taxonomies; + private List getVariableTaxonomies() { + return variableTaxonomiesService.getSafeTaxonomies(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/taxonomy/TaxonomyIndexer.java b/mica-search/src/main/java/org/obiba/mica/taxonomy/TaxonomyIndexer.java index 6106a22d22..6b6d87b3a5 100644 --- a/mica-search/src/main/java/org/obiba/mica/taxonomy/TaxonomyIndexer.java +++ b/mica-search/src/main/java/org/obiba/mica/taxonomy/TaxonomyIndexer.java @@ -17,7 +17,7 @@ import org.obiba.mica.micaConfig.event.DeleteTaxonomiesEvent; import org.obiba.mica.micaConfig.event.OpalTaxonomiesUpdatedEvent; import org.obiba.mica.micaConfig.event.TaxonomiesUpdatedEvent; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.spi.search.Indexer; import org.obiba.mica.spi.search.TaxonomyTarget; import org.obiba.opal.core.domain.taxonomy.Taxonomy; @@ -38,7 +38,7 @@ public class TaxonomyIndexer { private static final Logger log = LoggerFactory.getLogger(TaxonomyIndexer.class); @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @Inject private Indexer indexer; @@ -51,7 +51,7 @@ public void opalTaxonomiesUpdatedEvent(OpalTaxonomiesUpdatedEvent event) { TaxonomyTarget.VARIABLE, event.extractOpalTaxonomies() .stream() - .filter(t -> taxonomyService.metaTaxonomyContains(t.getName())) + .filter(t -> taxonomiesService.metaTaxonomyContains(t.getName())) .collect(Collectors.toList())); } @@ -73,13 +73,13 @@ public void taxonomiesUpdated(TaxonomiesUpdatedEvent event) { if(indexer.hasIndex(Indexer.TERM_INDEX)) indexer.dropIndex(Indexer.TERM_INDEX); index(TaxonomyTarget.VARIABLE, - ImmutableList.builder().addAll(taxonomyService.getOpalTaxonomies().stream() // - .filter(t -> taxonomyService.metaTaxonomyContains(t.getName())).collect(Collectors.toList())) // - .add(taxonomyService.getVariableTaxonomy()) // + ImmutableList.builder().addAll(taxonomiesService.getVariableTaxonomies().stream() // + .filter(t -> taxonomiesService.metaTaxonomyContains(t.getName())).collect(Collectors.toList())) // + .add(taxonomiesService.getVariableTaxonomy()) // .build()); - index(TaxonomyTarget.STUDY, Lists.newArrayList(taxonomyService.getStudyTaxonomy())); - index(TaxonomyTarget.DATASET, Lists.newArrayList(taxonomyService.getDatasetTaxonomy())); - index(TaxonomyTarget.NETWORK, Lists.newArrayList(taxonomyService.getNetworkTaxonomy())); + index(TaxonomyTarget.STUDY, Lists.newArrayList(taxonomiesService.getStudyTaxonomy())); + index(TaxonomyTarget.DATASET, Lists.newArrayList(taxonomiesService.getDatasetTaxonomy())); + index(TaxonomyTarget.NETWORK, Lists.newArrayList(taxonomiesService.getNetworkTaxonomy())); } else { indexer.delete(Indexer.TAXONOMY_INDEX, new String[] {}, ImmutablePair.of("name", event.getTaxonomyName())); Map.Entry termQuery = ImmutablePair.of("taxonomyName", event.getTaxonomyName()); @@ -92,19 +92,19 @@ public void taxonomiesUpdated(TaxonomiesUpdatedEvent event) { switch (taxonomyTarget) { case STUDY: log.info("Study taxonomies were updated"); - taxonomy = taxonomyService.getStudyTaxonomy(); + taxonomy = taxonomiesService.getStudyTaxonomy(); break; case NETWORK: log.info("Network taxonomies were updated"); - taxonomy = taxonomyService.getNetworkTaxonomy(); + taxonomy = taxonomiesService.getNetworkTaxonomy(); break; case DATASET: log.info("Dataset taxonomies were updated"); - taxonomy = taxonomyService.getDatasetTaxonomy(); + taxonomy = taxonomiesService.getDatasetTaxonomy(); break; case VARIABLE: log.info("Variable taxonomies were updated"); - taxonomy = taxonomyService.getVariableTaxonomy(); + taxonomy = taxonomiesService.getVariableTaxonomy(); break; } diff --git a/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/AbstractTaxonomySearchResource.java b/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/AbstractTaxonomySearchResource.java index ce436b2a61..ffe63d81d4 100644 --- a/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/AbstractTaxonomySearchResource.java +++ b/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/AbstractTaxonomySearchResource.java @@ -17,7 +17,7 @@ import org.obiba.mica.dataset.service.VariableSetService; import org.obiba.mica.micaConfig.service.MicaConfigService; import org.obiba.mica.micaConfig.service.TaxonomyNotFoundException; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.spi.search.TaxonomyTarget; import org.obiba.mica.taxonomy.EsTaxonomyTermService; import org.obiba.mica.taxonomy.EsTaxonomyVocabularyService; @@ -52,7 +52,7 @@ public class AbstractTaxonomySearchResource { private EsTaxonomyVocabularyService esTaxonomyVocabularyService; @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @Inject private MicaConfigService micaConfigService; @@ -127,30 +127,30 @@ protected List filterTerms(TaxonomyTarget target, String query, String l protected List getTaxonomies(TaxonomyTarget target) { switch (target) { case NETWORK: - return Lists.newArrayList(taxonomyService.getNetworkTaxonomy()); + return Lists.newArrayList(taxonomiesService.getNetworkTaxonomy()); case STUDY: - return Lists.newArrayList(taxonomyService.getStudyTaxonomy()); + return Lists.newArrayList(taxonomiesService.getStudyTaxonomy()); case DATASET: - return Lists.newArrayList(taxonomyService.getDatasetTaxonomy()); + return Lists.newArrayList(taxonomiesService.getDatasetTaxonomy()); case TAXONOMY: - return Lists.newArrayList(taxonomyService.getTaxonomyTaxonomy()); + return Lists.newArrayList(taxonomiesService.getTaxonomyTaxonomy()); default: - return taxonomyService.getVariableTaxonomies(); + return taxonomiesService.getAllVariableTaxonomies(); } } protected Taxonomy getTaxonomy(TaxonomyTarget target, String name) { switch (target) { case NETWORK: - return taxonomyService.getNetworkTaxonomy(); + return taxonomiesService.getNetworkTaxonomy(); case STUDY: - return taxonomyService.getStudyTaxonomy(); + return taxonomiesService.getStudyTaxonomy(); case DATASET: - return taxonomyService.getDatasetTaxonomy(); + return taxonomiesService.getDatasetTaxonomy(); case TAXONOMY: - return taxonomyService.getTaxonomyTaxonomy(); + return taxonomiesService.getTaxonomyTaxonomy(); default: - Taxonomy foundTaxonomy = taxonomyService.getVariableTaxonomies().stream().filter(taxonomy -> taxonomy.getName().equals(name)) + Taxonomy foundTaxonomy = taxonomiesService.getAllVariableTaxonomies().stream().filter(taxonomy -> taxonomy.getName().equals(name)) .findFirst().orElse(null); if (foundTaxonomy == null) { @@ -193,6 +193,6 @@ private List getFields(String locale, String... fieldNames) { * Populate taxonomies cache and trigger taxonomies indexing. */ private void initTaxonomies() { - taxonomyService.getOpalTaxonomies(); + taxonomiesService.getVariableTaxonomies(); } } diff --git a/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesSearchResource.java b/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesSearchResource.java index f17a782b88..ec2c9d30e7 100644 --- a/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesSearchResource.java +++ b/mica-search/src/main/java/org/obiba/mica/taxonomy/rest/TaxonomiesSearchResource.java @@ -25,7 +25,7 @@ import org.obiba.mica.security.SubjectUtils; import org.obiba.mica.spi.search.TaxonomyTarget; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.taxonomy.TaxonomyResolver; import org.obiba.opal.web.model.Opal; import org.obiba.opal.web.taxonomy.Dtos; @@ -45,7 +45,7 @@ public class TaxonomiesSearchResource extends AbstractTaxonomySearchResource { private static final Logger logger = LoggerFactory.getLogger(TaxonomiesSearchResource.class); @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @GET @Path("/_filter") @@ -79,7 +79,7 @@ public List search(@Context HttpServletRequest request, List results = Lists.newArrayList(); List targets = target == null - ? taxonomyService.getTaxonomyTaxonomy().getVocabularies().stream() + ? taxonomiesService.getTaxonomyTaxonomy().getVocabularies().stream() .map(t -> TaxonomyTarget.valueOf(t.getName().toUpperCase())).collect(Collectors.toList()) : Lists.newArrayList(TaxonomyTarget.valueOf(target.toUpperCase())); diff --git a/mica-web-model/src/main/protobuf/Mica.proto b/mica-web-model/src/main/protobuf/Mica.proto index 5f1a4dc319..5bb2d5bed3 100644 --- a/mica-web-model/src/main/protobuf/Mica.proto +++ b/mica-web-model/src/main/protobuf/Mica.proto @@ -409,7 +409,7 @@ message MicaConfigDto { repeated string languages = 2; required string defaultCharSet = 3; optional string publicUrl = 4; - required string opal = 5; + optional string opal = 5; optional string version = 6; optional int32 privacyThreshold = 7; repeated string roles = 8; diff --git a/mica-webapp/src/main/java/org/obiba/mica/web/controller/DatasetAnalysisController.java b/mica-webapp/src/main/java/org/obiba/mica/web/controller/DatasetAnalysisController.java index 0e682deca0..b92c3d10a8 100644 --- a/mica-webapp/src/main/java/org/obiba/mica/web/controller/DatasetAnalysisController.java +++ b/mica-webapp/src/main/java/org/obiba/mica/web/controller/DatasetAnalysisController.java @@ -16,7 +16,7 @@ import org.obiba.mica.dataset.domain.DatasetVariable; import org.obiba.mica.dataset.domain.StudyDataset; import org.obiba.mica.dataset.service.PublishedDatasetService; -import org.obiba.mica.micaConfig.service.OpalService; +import org.obiba.mica.micaConfig.service.VariableTaxonomiesService; import org.obiba.mica.security.service.SubjectAclService; import org.obiba.mica.spi.search.Indexer; import org.obiba.mica.spi.search.Searcher; @@ -49,7 +49,7 @@ public class DatasetAnalysisController extends BaseController { private Dtos dtos; @Inject - private OpalService opalService; + private VariableTaxonomiesService variableTaxonomiesService; @Inject private PublishedDatasetService publishedDatasetService; @@ -133,17 +133,11 @@ private Dataset getDataset(String id) { return dataset; } - private List getTaxonomies() { - List taxonomies = null; - try { - taxonomies = opalService.getTaxonomies(); - } catch (Exception e) { - // ignore - } - return taxonomies == null ? Collections.emptyList() : taxonomies; + private List getVariableTaxonomies() { + return variableTaxonomiesService.getSafeTaxonomies(); } private String getDatasetVariableJSON(DatasetVariable variable) { - return JsonFormat.printToString(dtos.asDto(variable, getTaxonomies())); + return JsonFormat.printToString(dtos.asDto(variable, getVariableTaxonomies())); } } diff --git a/mica-webapp/src/main/java/org/obiba/mica/web/controller/VariableController.java b/mica-webapp/src/main/java/org/obiba/mica/web/controller/VariableController.java index 681e8a8c97..5fb0cc14f0 100644 --- a/mica-webapp/src/main/java/org/obiba/mica/web/controller/VariableController.java +++ b/mica-webapp/src/main/java/org/obiba/mica/web/controller/VariableController.java @@ -10,7 +10,7 @@ import org.obiba.mica.dataset.domain.HarmonizationDataset; import org.obiba.mica.dataset.service.CollectedDatasetService; import org.obiba.mica.dataset.service.HarmonizedDatasetService; -import org.obiba.mica.micaConfig.service.TaxonomyService; +import org.obiba.mica.micaConfig.service.TaxonomiesService; import org.obiba.mica.spi.search.Indexer; import org.obiba.mica.spi.search.Searcher; import org.obiba.mica.study.NoSuchStudyException; @@ -63,7 +63,7 @@ public class VariableController extends BaseController { private ObjectMapper objectMapper; @Inject - private TaxonomyService taxonomyService; + private TaxonomiesService taxonomiesService; @GetMapping("/variable/{id:.+}") public ModelAndView variable(@PathVariable String id) { @@ -99,7 +99,7 @@ public ModelAndView variable(@PathVariable String id) { addStudyTableParameters(params, variable); - Map taxonomies = taxonomyService.getVariableTaxonomies().stream() + Map taxonomies = taxonomiesService.getAllVariableTaxonomies().stream() .collect(Collectors.toMap(TaxonomyEntity::getName, e -> e)); // annotations are attributes described by some taxonomies