package org.molgenis.data.elasticsearch.util; import com.google.common.base.Function; import com.google.common.collect.Iterables; import org.molgenis.data.Entity; import org.molgenis.data.meta.model.EntityType; import java.util.stream.Stream; public class ElasticsearchEntityUtils { private ElasticsearchEntityUtils() { } public static String toElasticsearchId(Object entityId) { return entityId.toString(); } public static Stream<String> toElasticsearchIds(Stream<Object> entityIds) { return entityIds.map(ElasticsearchEntityUtils::toElasticsearchId); } public static Object toEntityId(String elasticsearchId) { // TODO we do not know which type to return (e.g. String, Integer) return elasticsearchId; } public static Iterable<Object> toEntityIds(Iterable<String> elasticsearchIds) { return Iterables.transform(elasticsearchIds, new Function<String, Object>() { @Override public Object apply(String elasticsearchId) { return toEntityId(elasticsearchId); } }); } public static String toElasticsearchId(Entity entity, EntityType entityType) { String idAttributeName = entityType.getIdAttribute().getName(); Object entityId = entity.get(idAttributeName); return toElasticsearchId(entityId); } }