package com.silverforge.elasticsearchrawclient.queryDSL.functions; import com.silverforge.elasticsearchrawclient.model.QueryTypeItem; import com.silverforge.elasticsearchrawclient.queryDSL.Constants; import com.silverforge.elasticsearchrawclient.definition.Functionable; import com.silverforge.elasticsearchrawclient.definition.Queryable; import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList; class BaseFunction implements Functionable { protected QueryTypeArrayList<QueryTypeItem> queryBag; BaseFunction(QueryTypeArrayList<QueryTypeItem> queryBag) { this.queryBag = queryBag; } @Override public String getFunctionString() { return null; } public static abstract class Init<T extends Init<T>> { protected final QueryTypeArrayList<QueryTypeItem> queryBag = new QueryTypeArrayList<>(); protected abstract T self(); public T filter(Queryable query) { queryBag.addItem(Constants.FILTER, query); return self(); } } }