package com.silverforge.elasticsearchrawclient.queryDSL.functions;
import com.silverforge.elasticsearchrawclient.model.QueryTypeItem;
import com.silverforge.elasticsearchrawclient.queryDSL.Constants;
import com.silverforge.elasticsearchrawclient.queryDSL.operators.MultiValueModeOperator;
import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList;
abstract class DecayFunction {
public static abstract class Init<T extends Init<T>> {
protected final QueryTypeArrayList<QueryTypeItem> queryBag = new QueryTypeArrayList<>();
protected abstract T self();
public T fieldName(String fieldName) {
queryBag.addParentItem(Constants.FIELD_NAME, fieldName);
return self();
}
public T origin(String origin) {
queryBag.addItem(Constants.ORIGIN, origin);
return self();
}
public T scale(String scale) {
queryBag.addItem(Constants.SCALE, scale);
return self();
}
public T offset(String offset) {
queryBag.addItem(Constants.OFFSET, offset);
return self();
}
public T decay(float decay) {
queryBag.addItem(Constants.DECAY, decay);
return self();
}
public T multiValueMode(MultiValueModeOperator multiValueModeOperator) {
String value = multiValueModeOperator.toString();
queryBag.addItem(Constants.MULTI_VALUE_MODE, value);
return self();
}
}
}