package org.molgenis.data.semanticsearch.config; import org.molgenis.data.DataService; import org.molgenis.data.populate.IdGenerator; import org.molgenis.data.elasticsearch.factory.EmbeddedElasticSearchServiceFactory; import org.molgenis.data.meta.MetaDataService; import org.molgenis.data.meta.model.TagFactory; import org.molgenis.data.meta.model.TagMetadata; import org.molgenis.data.semantic.LabeledResource; import org.molgenis.data.semanticsearch.explain.service.ElasticSearchExplainService; import org.molgenis.data.semanticsearch.explain.service.ElasticSearchExplainServiceImpl; import org.molgenis.data.semanticsearch.explain.service.ExplainServiceHelper; import org.molgenis.data.semanticsearch.repository.TagRepository; import org.molgenis.data.semanticsearch.service.OntologyTagService; import org.molgenis.data.semanticsearch.service.SemanticSearchService; import org.molgenis.data.semanticsearch.service.TagService; import org.molgenis.data.semanticsearch.service.impl.OntologyTagServiceImpl; import org.molgenis.data.semanticsearch.service.impl.SemanticSearchServiceHelper; import org.molgenis.data.semanticsearch.service.impl.SemanticSearchServiceImpl; import org.molgenis.data.semanticsearch.service.impl.UntypedTagService; import org.molgenis.ontology.core.service.OntologyService; import org.molgenis.ontology.ic.TermFrequencyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SemanticSearchConfig { @Autowired DataService dataService; @Autowired MetaDataService metaDataService; @Autowired OntologyService ontologyService; @Autowired IdGenerator idGenerator; @Autowired TermFrequencyService termFrequencyService; @Autowired EmbeddedElasticSearchServiceFactory embeddedElasticSearchServiceFactory; @Autowired TagMetadata tagMetadata; @Autowired TagFactory tagFactory; @Bean public SemanticSearchServiceHelper semanticSearchServiceHelper() { return new SemanticSearchServiceHelper(dataService, ontologyService, termFrequencyService); } @Bean public OntologyTagService ontologyTagService() { return new OntologyTagServiceImpl(dataService, ontologyService, tagRepository(), idGenerator, tagMetadata); } @Bean public SemanticSearchService semanticSearchService() { return new SemanticSearchServiceImpl(dataService, ontologyService, metaDataService, semanticSearchServiceHelper(), elasticSearchExplainService()); } @Bean public TagService<LabeledResource, LabeledResource> tagService() { return new UntypedTagService(dataService, tagRepository()); } @Bean public ExplainServiceHelper explainServiceHelper() { return new ExplainServiceHelper(); } @Bean TagRepository tagRepository() { return new TagRepository(dataService, idGenerator, tagFactory); } @Bean ElasticSearchExplainService elasticSearchExplainService() { return new ElasticSearchExplainServiceImpl(embeddedElasticSearchServiceFactory.getClient(), explainServiceHelper()); } }