use of de.metas.ui.web.document.filter.DocumentFilterParam in project metasfresh-webui-api by metasfresh.
the class HuTraceQueryCreator method getUpdateMethodForParameterOrThrowException.
private static BiFunction<HUTraceEventQuery, DocumentFilterParam, HUTraceEventQuery> getUpdateMethodForParameterOrThrowException(@NonNull final DocumentFilterParam parameter) {
final String paramName = parameter.getFieldName();
final //
BiFunction<HUTraceEventQuery, DocumentFilterParam, HUTraceEventQuery> queryUpdateFunction = FIELD_NAME_2_UPDATE_METHOD.get(paramName);
if (queryUpdateFunction == null) {
final String message = StringUtils.formatMessage("The given filterparam has an unexpected fieldName={}", paramName);
throw new AdempiereException(message).setParameter("documentFilterParam", parameter);
}
return queryUpdateFunction;
}
use of de.metas.ui.web.document.filter.DocumentFilterParam in project metasfresh-webui-api by metasfresh.
the class JSONDocumentFilter method unwrapUsingDescriptor.
private static DocumentFilter unwrapUsingDescriptor(final JSONDocumentFilter jsonFilter, final DocumentFilterDescriptor filterDescriptor) {
final DocumentFilter.Builder filter = DocumentFilter.builder().setFilterId(jsonFilter.getFilterId());
final Map<String, JSONDocumentFilterParam> jsonParams = Maps.uniqueIndex(jsonFilter.getParameters(), JSONDocumentFilterParam::getParameterName);
for (final DocumentFilterParamDescriptor paramDescriptor : filterDescriptor.getParameters()) {
final String parameterName = paramDescriptor.getParameterName();
final JSONDocumentFilterParam jsonParam = jsonParams.get(parameterName);
// If parameter is missing: skip it if no required, else throw exception
if (jsonParam == null) {
if (paramDescriptor.isMandatory()) {
throw new IllegalArgumentException("Parameter '" + parameterName + "' was not provided");
}
continue;
}
final Object value = paramDescriptor.convertValueFromJson(jsonParam.getValue());
final Object valueTo = paramDescriptor.convertValueFromJson(jsonParam.getValueTo());
// If there was no value/valueTo provided: skip it if no required, else throw exception
if (value == null && valueTo == null) {
if (paramDescriptor.isMandatory()) {
throw new IllegalArgumentException("Parameter '" + parameterName + "' has no value");
}
continue;
}
filter.addParameter(DocumentFilterParam.builder().setFieldName(paramDescriptor.getFieldName()).setOperator(paramDescriptor.getOperator()).setValue(value).setValueTo(valueTo).build());
}
for (final DocumentFilterParam internalParam : filterDescriptor.getInternalParameters()) {
filter.addParameter(internalParam);
}
return filter.build();
}
use of de.metas.ui.web.document.filter.DocumentFilterParam in project metasfresh-webui-api by metasfresh.
the class SqlDefaultDocumentFilterConverter method getSql.
/**
* Build document filter where clause
*/
@Override
public String getSql(@NonNull final SqlParamsCollector sqlParams, @NonNull final DocumentFilter filter, @NonNull final SqlOptions sqlOpts) {
final String filterId = filter.getFilterId();
final StringBuilder sql = new StringBuilder();
for (final DocumentFilterParam filterParam : filter.getParameters()) {
final String sqlFilterParam = buildSqlWhereClause(sqlParams, filterId, filterParam, sqlOpts);
if (Check.isEmpty(sqlFilterParam, true)) {
continue;
}
if (sql.length() > 0) {
sql.append(filterParam.isJoinAnd() ? " AND " : " OR ");
}
sql.append("(").append(sqlFilterParam).append(")");
}
return sql.toString();
}
use of de.metas.ui.web.document.filter.DocumentFilterParam in project metasfresh-webui-api by metasfresh.
the class SqlDefaultDocumentFilterConverter method buildSqlWhereClause_StandardWidget.
private final String buildSqlWhereClause_StandardWidget(final SqlParamsCollector sqlParams, final DocumentFilterParam filterParam, final SqlOptions sqlOpts) {
final SqlEntityFieldBinding paramBinding = getParameterBinding(filterParam.getFieldName());
final DocumentFieldWidgetType widgetType = paramBinding.getWidgetType();
//
// Regular filter
final IQueryFilterModifier fieldModifier = extractFieldModifier(widgetType);
final IQueryFilterModifier valueModifier = extractValueModifier(widgetType);
final String columnSql = extractColumnSql(paramBinding, fieldModifier, sqlOpts);
final Operator operator = filterParam.getOperator();
switch(operator) {
case EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
return buildSqlWhereClause_Equals(columnSql, sqlValue, negate, sqlParams);
}
case NOT_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
return buildSqlWhereClause_Equals(columnSql, sqlValue, negate, sqlParams);
}
case IN_ARRAY:
{
final List<Object> sqlValuesList = filterParam.getValueAsList(itemObj -> convertToSqlValue(itemObj, paramBinding, valueModifier));
return buildSqlWhereClause_InArray(columnSql, sqlValuesList, sqlParams);
}
case GREATER:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, ">", sqlValue, sqlParams);
}
case GREATER_OR_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, ">=", sqlValue, sqlParams);
}
case LESS:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, "<", sqlValue, sqlParams);
}
case LESS_OR_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, "<=", sqlValue, sqlParams);
}
case LIKE:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
final boolean ignoreCase = false;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case NOT_LIKE:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
final boolean ignoreCase = false;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case LIKE_I:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
final boolean ignoreCase = true;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case NOT_LIKE_I:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
final boolean ignoreCase = true;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case BETWEEN:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final Object sqlValueTo = convertToSqlValue(filterParam.getValueTo(), paramBinding, valueModifier);
return buildSqlWhereClause_Between(columnSql, sqlValue, sqlValueTo, sqlParams);
}
default:
{
throw new IllegalArgumentException("Operator not supported: " + operator);
}
}
}
Aggregations