
org.molgenis.data.elasticsearch.AbstractElasticsearchRepository Maven / Gradle / Ivy
The newest version!
package org.molgenis.data.elasticsearch;
import static org.molgenis.data.RepositoryCapability.AGGREGATEABLE;
import static org.molgenis.data.RepositoryCapability.INDEXABLE;
import static org.molgenis.data.RepositoryCapability.MANAGABLE;
import static org.molgenis.data.RepositoryCapability.QUERYABLE;
import static org.molgenis.data.RepositoryCapability.WRITABLE;
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Stream;
import org.elasticsearch.common.primitives.Ints;
import org.molgenis.data.AggregateQuery;
import org.molgenis.data.AggregateResult;
import org.molgenis.data.Entity;
import org.molgenis.data.EntityListener;
import org.molgenis.data.EntityMetaData;
import org.molgenis.data.Fetch;
import org.molgenis.data.Query;
import org.molgenis.data.Repository;
import org.molgenis.data.RepositoryCapability;
import org.molgenis.data.elasticsearch.ElasticsearchService.IndexingMode;
import org.molgenis.data.elasticsearch.util.ElasticsearchEntityUtils;
import org.molgenis.data.support.QueryImpl;
import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Sets;
public abstract class AbstractElasticsearchRepository implements Repository
{
protected final SearchService elasticSearchService;
public AbstractElasticsearchRepository(SearchService elasticSearchService)
{
if (elasticSearchService == null) throw new IllegalArgumentException("elasticSearchService is null");
this.elasticSearchService = elasticSearchService;
}
@Override
public Set getCapabilities()
{
return Sets.newHashSet(AGGREGATEABLE, QUERYABLE, WRITABLE, INDEXABLE, MANAGABLE);
}
@Override
public abstract EntityMetaData getEntityMetaData();
@Override
public long count()
{
return elasticSearchService.count(getEntityMetaData());
}
@Override
public Query query()
{
return new QueryImpl(this);
}
@Override
public long count(Query q)
{
return elasticSearchService.count(q, getEntityMetaData());
}
@Override
public Stream findAll(Query q)
{
return elasticSearchService.searchAsStream(q, getEntityMetaData());
}
@Override
public Entity findOne(Query q)
{
Iterable entities = elasticSearchService.search(q, getEntityMetaData());
Iterator it = entities.iterator();
return it.hasNext() ? it.next() : null;
}
@Override
public Entity findOne(Object id)
{
return elasticSearchService.get(id, getEntityMetaData());
}
@Override
public Entity findOne(Object id, Fetch fetch)
{
return elasticSearchService.get(id, getEntityMetaData(), fetch);
}
@Override
public Stream findAll(Stream
© 2015 - 2025 Weber Informatics LLC | Privacy Policy