package com.silverforge.elasticsearchrawclient.queryDSL.queries.innerQueries.common; import com.silverforge.elasticsearchrawclient.model.GeoPoint; import com.silverforge.elasticsearchrawclient.model.QueryTypeItem; import com.silverforge.elasticsearchrawclient.queryDSL.Constants; import com.silverforge.elasticsearchrawclient.definition.Queryable; import com.silverforge.elasticsearchrawclient.queryDSL.operators.DistanceTypeOperator; import com.silverforge.elasticsearchrawclient.queryDSL.operators.OptimizeBboxOperator; import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList; public abstract class GeoDistanceBaseQuery implements Queryable { @Override public String getQueryString() { return null; } public static abstract class GeoInit<T extends GeoInit<T>> { protected QueryTypeArrayList<QueryTypeItem> queryBag = new QueryTypeArrayList<>(); protected abstract T self(); public T fieldName(String fieldName) { queryBag.addParentItem(Constants.FIELD_NAME, fieldName); return self(); } public T location(GeoPoint geoPoint) { queryBag.addItem(Constants.VALUE, geoPoint); return self(); } public T locationGeohash(String geohash) { queryBag.addItem(Constants.VALUE, geohash); return self(); } public T distanceType(DistanceTypeOperator distanceTypeOperator) { String value = distanceTypeOperator.toString(); queryBag.addItem(Constants.DISTANCE_TYPE, value); return self(); } public T optimizeBbox(OptimizeBboxOperator optimizeBboxOperator) { String value = optimizeBboxOperator.toString(); queryBag.addItem(Constants.OPTIMIZE_BBOX, value); return self(); } public T queryName(String name) { queryBag.addItem(Constants._NAME, name); return self(); } public T coerce(boolean coerce) { queryBag.addItem(Constants.COERCE, coerce); return self(); } public T ignoreMalformed(boolean ignore) { queryBag.addItem(Constants.IGNORE_MALFORMED, ignore); return self(); } } }