package org.molgenis.ontology.core.service.impl;
import org.elasticsearch.common.collect.Lists;
import org.molgenis.ontology.core.model.Ontology;
import org.molgenis.ontology.core.model.OntologyTerm;
import org.molgenis.ontology.core.repository.OntologyRepository;
import org.molgenis.ontology.core.repository.OntologyTermRepository;
import org.molgenis.ontology.core.service.OntologyService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.toList;
public class OntologyServiceImpl implements OntologyService
{
private OntologyRepository ontologyRepository;
private OntologyTermRepository ontologyTermRepository;
@Autowired
public OntologyServiceImpl(OntologyRepository ontologyRepository, OntologyTermRepository ontologyTermRepository)
{
this.ontologyRepository = requireNonNull(ontologyRepository);
this.ontologyTermRepository = requireNonNull(ontologyTermRepository);
}
@Override
public List<Ontology> getOntologies()
{
return ontologyRepository.getOntologies().collect(toList());
}
@Override
public List<String> getAllOntologiesIds()
{
final List<String> allOntologiesIds = new ArrayList<String>();
ontologyRepository.getOntologies().forEach(e -> allOntologiesIds.add(e.getId()));
return allOntologiesIds;
}
@Override
public Ontology getOntology(String name)
{
return ontologyRepository.getOntology(name);
}
@Override
public OntologyTerm getOntologyTerm(String iri)
{
return ontologyTermRepository.getOntologyTerm(iri.split(","));
}
@Override
public List<OntologyTerm> getAllOntologyTerms(String ontologyIri)
{
return ontologyTermRepository.getAllOntologyTerms(ontologyIri);
}
@Override
public List<OntologyTerm> findExcatOntologyTerms(List<String> ontologyIds, Set<String> terms, int pageSize)
{
if (null == terms || terms.size() == 0)
{
return Lists.<OntologyTerm>newArrayList();
}
return ontologyTermRepository.findExcatOntologyTerms(ontologyIds, terms, pageSize);
}
@Override
public List<OntologyTerm> findOntologyTerms(List<String> ontologyIds, Set<String> terms, int pageSize)
{
if (null == terms || terms.size() == 0)
{
return Lists.<OntologyTerm>newArrayList();
}
return ontologyTermRepository.findOntologyTerms(ontologyIds, terms, pageSize);
}
@Override
public List<OntologyTerm> getChildren(OntologyTerm ontologyTerm)
{
return ontologyTermRepository.getChildren(ontologyTerm);
}
@Override
public Integer getOntologyTermDistance(OntologyTerm ontologyTerm1, OntologyTerm ontologyTerm2)
{
return ontologyTermRepository.getOntologyTermDistance(ontologyTerm1, ontologyTerm2);
}
}