package com.silverforge.elasticsearchrawclient.queryDSL.functions;
import com.silverforge.elasticsearchrawclient.model.QueryTypeItem;
import com.silverforge.elasticsearchrawclient.queryDSL.Constants;
import com.silverforge.elasticsearchrawclient.queryDSL.generator.FunctionFactory;
import com.silverforge.elasticsearchrawclient.queryDSL.operators.ModifierOperator;
import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList;
public class FieldValueFactor
extends BaseFunction {
FieldValueFactor(QueryTypeArrayList<QueryTypeItem> queryBag) {
super(queryBag);
}
@Override
public String getFunctionString() {
return FunctionFactory
.fieldValueFactorGenerator()
.generate(queryBag);
}
public static FieldValueFactorBuilder builder() {
return new FieldValueFactorBuilder();
}
public static class FieldValueFactorBuilder
extends Init<FieldValueFactorBuilder> {
@Override
protected FieldValueFactorBuilder self() {
return this;
}
}
public static abstract class Init<T extends Init<T>>
extends BaseFunction.Init<T> {
public T field(String field) {
queryBag.addItem(Constants.FIELD, field);
return self();
}
public T factor(int factor) {
queryBag.addItem(Constants.FACTOR, factor);
return self();
}
public T factor(float factor) {
queryBag.addItem(Constants.FACTOR, factor);
return self();
}
public T modifier(ModifierOperator modifier) {
String value = modifier.toString();
queryBag.addItem(Constants.MODIFIER, value);
return self();
}
public T missing(int missing) {
queryBag.addItem(Constants.MISSING, missing);
return self();
}
public T missing(float missing) {
queryBag.addItem(Constants.MISSING, missing);
return self();
}
public FieldValueFactor build() {
return new FieldValueFactor(queryBag);
}
}
}