All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.vertexium.elasticsearch.ElasticsearchGraphQueryIdIterable Maven / Gradle / Ivy

There is a newer version: 3.0.4
Show newest version
package org.vertexium.elasticsearch;

import org.elasticsearch.search.SearchHit;
import org.vertexium.elasticsearch.utils.ElasticsearchExtendedDataIdUtils;
import org.vertexium.query.AggregationResult;
import org.vertexium.query.QueryResultsIterable;
import org.vertexium.util.CloseableUtils;
import org.vertexium.util.ConvertingIterable;
import org.vertexium.util.VertexiumLogger;
import org.vertexium.util.VertexiumLoggerFactory;

import java.io.IOException;

public class ElasticsearchGraphQueryIdIterable extends ConvertingIterable implements QueryResultsIterable {
    private static final VertexiumLogger LOGGER = VertexiumLoggerFactory.getLogger(ElasticsearchGraphQueryIdIterable.class);

    private final QueryResultsIterable iterable;

    public ElasticsearchGraphQueryIdIterable(QueryResultsIterable iterable) {
        super(iterable);
        this.iterable = iterable;
    }

    @Override
    public void close() throws IOException {
        CloseableUtils.closeQuietly(iterable);
    }

    @Override
    public long getTotalHits() {
        return iterable.getTotalHits();
    }

    @SuppressWarnings("unchecked")
    @Override
    protected T convert(SearchHit hit) {
        ElasticsearchDocumentType dt = ElasticsearchDocumentType.fromSearchHit(hit);
        T convertedId = null;
        if (dt != null) {
            String id = hit.getId();
            switch (dt) {
                case VERTEX:
                case EDGE:
                    convertedId = (T) id;
                    break;
                case VERTEX_EXTENDED_DATA:
                case EDGE_EXTENDED_DATA:
                    convertedId = (T) ElasticsearchExtendedDataIdUtils.fromSearchHit(hit);
                    break;
                default:
                    LOGGER.warn("Unhandled document type: %s", dt);
                    break;
            }
        }
        return convertedId;
    }

    @Override
    public  TResult getAggregationResult(String name, Class resultType) {
        return iterable.getAggregationResult(name, resultType);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy