package com.silverforge.elasticsearchrawclient.queryDSL.generator;
import com.silverforge.elasticsearchrawclient.model.QueryTypeItem;
import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList;
import java.util.Map;
import static br.com.zbra.androidlinq.Linq.stream;
public final class QueryFactory {
public static QueryGenerator queryGenerator() {
return new QueryGenerator();
}
public static MatchQueryGenerator matchQueryGenerator() {
return new MatchQueryGenerator();
}
public static MultiMatchQueryGenerator multiMatchQueryGenerator() {
return new MultiMatchQueryGenerator();
}
public static BoolQueryGenerator boolQueryGenerator() {
return new BoolQueryGenerator();
}
public static BoostingQueryGenerator boostingQueryGenerator() {
return new BoostingQueryGenerator();
}
public static ConstantScoreQueryGenerator constantScoreQueryGenerator() {
return new ConstantScoreQueryGenerator();
}
public static DisMaxQueryGenerator disMaxQueryGenerator() {
return new DisMaxQueryGenerator();
}
public static FunctionScoreQueryGenerator functionScoreQueryGenerator() {
return new FunctionScoreQueryGenerator();
}
public static CommonTermsQueryGenerator commonTermsQueryGenerator() {
return new CommonTermsQueryGenerator();
}
public static HasChildQueryGenerator hasChildQueryGenerator() {
return new HasChildQueryGenerator();
}
public static HasParentQueryGenerator hasParentQueryGenerator() {
return new HasParentQueryGenerator();
}
public static IdsQueryGenerator idsQueryGenerator() {
return new IdsQueryGenerator();
}
public static ScriptGenerator scriptGenerator() {
return new ScriptGenerator();
}
public static FuzzyQueryGenerator fuzzyQueryGenerator() {
return new FuzzyQueryGenerator();
}
public static GeoShapeQueryGenerator geoShapeQueryGenerator() {
return new GeoShapeQueryGenerator();
}
public static GeoBoundingBoxQueryGenerator geoBoundingBoxQueryGenerator() {
return new GeoBoundingBoxQueryGenerator();
}
public static GeoDistanceQueryGenerator geoDistanceQueryGenerator() {
return new GeoDistanceQueryGenerator();
}
public static GeoDistanceRangeQueryGenerator geoDistanceRangeQueryGenerator() {
return new GeoDistanceRangeQueryGenerator();
}
public static GeoPolygonQueryGenerator geoPolygonQueryGenerator() {
return new GeoPolygonQueryGenerator();
}
public static GeohashCellQueryGenerator geohashCellQueryGenerator() {
return new GeohashCellQueryGenerator();
}
public static IndicesQueryGenerator indicesQueryGenerator() {
return new IndicesQueryGenerator();
}
public static MatchAllQueryGenerator matchAllQueryGenerator() {
return new MatchAllQueryGenerator();
}
public static MoreLikeThisQueryGenerator moreLikeThisQueryGenerator() {
return new MoreLikeThisQueryGenerator();
}
public static NestedQueryGenerator nestedQueryGenerator() {
return new NestedQueryGenerator();
}
public static PrefixQueryGenerator prefixQueryGenerator() {
return new PrefixQueryGenerator();
}
public static RangeQueryGenerator rangeQueryGenerator() {
return new RangeQueryGenerator();
}
public static RegexpQueryGenerator regexpQueryGenerator() {
return new RegexpQueryGenerator();
}
public static SimpleQueryStringQueryGenerator simpleQueryStringQueryGenerator() {
return new SimpleQueryStringQueryGenerator();
}
public static SpanFirstQueryGenerator spanFirstQueryGenerator() {
return new SpanFirstQueryGenerator();
}
public static QueryStringQueryGenerator queryStringQueryGenerator() {
return new QueryStringQueryGenerator();
}
public static WildCardQueryGenerator wildCardQueryGenerator() {
return new WildCardQueryGenerator();
}
public static ScriptQueryGenerator scriptQueryGenerator() {
return new ScriptQueryGenerator();
}
public static TemplateQueryGenerator templateQueryGenerator() {
return new TemplateQueryGenerator();
}
public static ExistsQueryGenerator existsQueryGenerator() {
return new ExistsQueryGenerator();
}
public static MissingQueryGenerator missingQueryGenerator() {
return new MissingQueryGenerator();
}
public static TypeQueryGenerator typeQueryGenerator() {
return new TypeQueryGenerator();
}
public static TermsQueryGenerator termsQueryGenerator() {
return new TermsQueryGenerator();
}
public static TermQueryGenerator termQueryGenerator() {
return new TermQueryGenerator();
}
public static NotQueryGenerator notQueryGenerator() {
return new NotQueryGenerator();
}
public static LimitQueryGenerator limitQueryGenerator() {
return new LimitQueryGenerator();
}
public static SpanTermQueryGenerator spanTermQueryGenerator() {
return new SpanTermQueryGenerator();
}
public static SpanNearQueryGenerator spanNearQueryGenerator() {
return new SpanNearQueryGenerator();
}
public static SpanOrQueryGenerator spanOrQueryGenerator() {
return new SpanOrQueryGenerator();
}
public static SpanNotQueryGenerator spanNotQueryGenerator() {
return new SpanNotQueryGenerator();
}
public static SpanContainingQueryGenerator spanContainingQueryGenerator() {
return new SpanContainingQueryGenerator();
}
public static SpanWithinQueryGenerator spanWithinQueryGenerator() {
return new SpanWithinQueryGenerator();
}
public static SpanMultiTermQueryGenerator spanMultiTermQueryGenerator() {
return new SpanMultiTermQueryGenerator();
}
public final static class MatchQueryGenerator
extends QueryGenerator {
private MatchQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateMatchChildren("match", parent, childItems);
}
}
public final static class MultiMatchQueryGenerator
extends QueryGenerator {
private MultiMatchQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("multi_match", childItems);
}
}
public final static class BoolQueryGenerator
extends QueryGenerator {
private BoolQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("bool", childItems);
}
}
public final static class BoostingQueryGenerator
extends QueryGenerator {
private BoostingQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("boosting", childItems);
}
}
public final static class ConstantScoreQueryGenerator
extends QueryGenerator {
private ConstantScoreQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("constant_score", childItems);
}
}
public final static class DisMaxQueryGenerator
extends QueryGenerator {
private DisMaxQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("dis_max", childItems);
}
}
public final static class FunctionScoreQueryGenerator
extends QueryGenerator {
private FunctionScoreQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("function_score", childItems);
}
}
public final static class CommonTermsQueryGenerator
extends QueryGenerator {
private CommonTermsQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateCommonChildren("common", parent, childItems);
}
}
public final static class HasChildQueryGenerator
extends QueryGenerator {
private HasChildQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateCommonChildren("has_child", parent, childItems);
}
}
public final static class HasParentQueryGenerator
extends QueryGenerator {
private HasParentQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateCommonChildren("has_parent", parent, childItems);
}
}
public final static class IdsQueryGenerator
extends QueryGenerator {
private IdsQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateCommonChildren("ids", parent, childItems);
}
}
public final static class ScriptGenerator
extends QueryGenerator {
private ScriptGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren(childItems);
}
}
public final static class FuzzyQueryGenerator
extends QueryGenerator {
private FuzzyQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("fuzzy", parent, childItems);
}
}
public final static class GeoShapeQueryGenerator
extends QueryGenerator {
private GeoShapeQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateGeoShapeChildren("geo_shape", parent, childItems);
}
}
public final static class GeoBoundingBoxQueryGenerator
extends QueryGenerator {
private GeoBoundingBoxQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateParentChildren("geo_bounding_box", parent, childItems);
}
}
public final static class GeoDistanceQueryGenerator
extends QueryGenerator {
private GeoDistanceQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateGeoDistance("geo_distance", parent, childItems);
}
}
public final static class GeoDistanceRangeQueryGenerator
extends QueryGenerator {
private GeoDistanceRangeQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateGeoDistance("geo_distance_range", parent, childItems);
}
}
public final static class GeoPolygonQueryGenerator
extends QueryGenerator {
private GeoPolygonQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateGeoPolygon("geo_polygon", parent, childItems);
}
}
public final static class GeohashCellQueryGenerator
extends QueryGenerator {
private GeohashCellQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateGeoDistance("geohash_cell", parent, childItems);
}
}
public final static class IndicesQueryGenerator
extends QueryGenerator {
private IndicesQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("indices", childItems);
}
}
public final static class MatchAllQueryGenerator
extends QueryGenerator {
private MatchAllQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("match_all", childItems);
}
}
public final static class MoreLikeThisQueryGenerator
extends QueryGenerator {
private MoreLikeThisQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("more_like_this", childItems);
}
}
public final static class NestedQueryGenerator
extends QueryGenerator {
private NestedQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("nested", childItems);
}
}
public final static class PrefixQueryGenerator
extends QueryGenerator {
private PrefixQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateCommonChildren("prefix", parent, childItems);
}
}
public final static class RangeQueryGenerator
extends QueryGenerator {
private RangeQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("range", parent, childItems);
}
}
public final static class RegexpQueryGenerator
extends QueryGenerator {
private RegexpQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("regexp", parent, childItems);
}
}
public final static class SimpleQueryStringQueryGenerator
extends QueryGenerator {
private SimpleQueryStringQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("simple_query_string", childItems);
}
}
public final static class QueryStringQueryGenerator
extends QueryGenerator {
private QueryStringQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("query_string", childItems);
}
}
public final static class WildCardQueryGenerator
extends QueryGenerator {
private WildCardQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("wildcard", parent, childItems);
}
}
public final static class SpanFirstQueryGenerator
extends QueryGenerator {
private SpanFirstQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateSpanFirst("span_first", childItems);
}
}
public final static class ScriptQueryGenerator
extends QueryGenerator {
private ScriptQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("script", childItems);
}
}
public final static class TemplateQueryGenerator
extends QueryGenerator {
private TemplateQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("template", childItems);
}
}
public final static class ExistsQueryGenerator
extends QueryGenerator {
private ExistsQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("exists", childItems);
}
}
public final static class MissingQueryGenerator
extends QueryGenerator {
private MissingQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("missing", childItems);
}
}
public final static class TypeQueryGenerator
extends QueryGenerator {
private TypeQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("type", childItems);
}
}
public final static class TermsQueryGenerator
extends QueryGenerator {
private TermsQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("terms", childItems);
}
}
public final static class TermQueryGenerator
extends QueryGenerator {
private TermQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("term", parent, childItems);
}
}
public final static class NotQueryGenerator
extends QueryGenerator {
private NotQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("not", childItems);
}
}
public final static class LimitQueryGenerator
extends QueryGenerator {
private LimitQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("limit", childItems);
}
}
public final static class SpanTermQueryGenerator
extends QueryGenerator {
private SpanTermQueryGenerator() {}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.where(q -> !q.isParent())
.toMap(q -> q.getName(), q -> q.getValue());
QueryTypeItem parent = stream(queryBag)
.firstOrNull(q -> q.isParent());
return generateFuzzyChildren("span_term", parent, childItems);
}
}
public final static class SpanNearQueryGenerator
extends QueryGenerator {
private SpanNearQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_near", childItems);
}
}
public final static class SpanOrQueryGenerator
extends QueryGenerator {
private SpanOrQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_or", childItems);
}
}
public final static class SpanNotQueryGenerator
extends QueryGenerator {
private SpanNotQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_not", childItems);
}
}
public final static class SpanContainingQueryGenerator
extends QueryGenerator {
private SpanContainingQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_containing", childItems);
}
}
public final static class SpanWithinQueryGenerator
extends QueryGenerator {
private SpanWithinQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_within", childItems);
}
}
public final static class SpanMultiTermQueryGenerator
extends QueryGenerator {
private SpanMultiTermQueryGenerator() {
}
@Override
public String generate(QueryTypeArrayList<QueryTypeItem> queryBag) {
Map<String, String> childItems = stream(queryBag)
.toMap(q -> q.getName(), q -> q.getValue());
return generateChildren("span_multi", childItems);
}
}
}